步入JAVA——环境搭建与项目通览

news2024/11/19 11:24:01

前言

        在这篇文章中,荔枝会介绍如何配置Java后端开发环境并借助一个Java web项目简单介绍一下Java的后端开发逻辑。与python的后端开发逻辑是类似的,Java的后端开发其实也是通过一个个类来实现的。对于像荔枝这种小白白来说,入门的第一个练手Java后端项目一般都是选择基于Tomcat Web应用服务器的JSP开发比较友好哈哈哈哈。


文章目录

前言

一、JDK下载配置和Tomcat的下载

1.1 Java的JDK选择与下载

1.2 Tomcat的下载使用

1.3 配置Tomcat的环境变量

1.4 IDEA中Tomcat的配置

二、一个Java web开发下项目

2.1 工程目录:

2.2 一个例子:

2.2.1 servlet

2.2.2 service层:

2.2.3 pojo:

2.2.4 DAO

总结


一、JDK下载配置和Tomcat的下载

1.1 Java的JDK选择与下载

        现在Java语言的JDK版本的选择有很多,使用较多的就是JDK17和JDK8。“你发任你发,我用版本8”,JDK8自从发布以来就热度不减,但是未来的趋势可能更多地去偏向于使用JDK17,毕竟垃圾回收器可以有效的提升项目的性能,荔枝在下面整理了两种JDK包的下载和配置:

JDK8下载安装

https://www.oracle.com/cn/java/technologies/downloads/

百度网盘:
链接:https://pan.baidu.com/s/1iOhPInWh2l3VNqEbQ8j0fQ 
提取码:6666

首先直接到ORACLE的官网,直接找到下载的地方选择合适的版本

 下载到指定的目录下面即可,注意地址不要带有中文,jre可以不安装。

 之后就可以配置环境变量啦,以荔枝的win10为例,点开设置——系统——关于,下拉到到最下面选择高级系统设置

点击环境变量并在系统变量中添加JAVA_HOME的配置,变量值就是你自己的JDK包下载的路径,双击path,添加%JAVA_HOME%\bin

这样基本的JDK环境就配置完成啦!

JDK17下载安装

百度网盘

链接:https://pan.baidu.com/s/1mFl221lbGBp6SPNc_qycOw 
提取码:6666

官网下载同样根据自己电脑的配置来选择合适的JDK版本,或者直接在荔枝的百度网盘链接下载 

其余的操作都是一样的,需要注意的是安装完JDK17之后再环境变量哪里会默认有路径的配置,这时候我们也是仅仅需要配置好JAVA_HOME即可。

1.2 Tomcat的下载使用

         首先我们需要直到Tomcat的概念:Tomcat是由Apache公司开源的一个轻量级的网络应用服务器,简单的去理解就是Tomcat其实就是提供一个服务让别人也能够访问到你本机上运行的HTML网页。

下载地址:

https://tomcat.apache.org/download-80.cgi

选择合适的版本下载安装即可,记住在安装Tomcat之前必须要保证前面Java的JDK已经下载并配置好JAVA_HOME了,Tomcat下载下来之后就是一个压缩包,解压之后就可以

 接着在命令行工具中测试一下环境安装的有没有问题,启动Tomcat:首先cd进入Tomcat下载的路径输入startup,会看到弹出Tomcat窗口证明一切正常,安装成功。

1.3 配置Tomcat的环境变量

        Tomcat在系统变量中的配置还是更上面配置JDK的方法是一样的,首先将安装的根路径命名为·一个变量CATALINA HOME,之后再在path变量中去配置真实的系统环境变量。

 这样子系统的Tomcat就配置完毕了

1.4 IDEA中Tomcat的配置

点击Edit Configurations编辑, 

        之前没有配置过的可以点击Configiure来选择Tomcat的安装地址, 之后可以改变一下下面Tomcat的运行端口8080,荔枝因为之前8080端口被占用了,所以我改了一个端口。

 配置好后运行一下项目,项目也就可以正常跑起来了。


二、一个Java web开发下项目

2.1 工程目录:

  • src:后台代码目录接口
  • dao:持久层代码
  • pojo:实体类
  • service:业务层代码,接口和impl
  • servlet:控制器
  • util:工具类 

2.2 一个例子:

2.2.1 servlet

路由入口

package com.atm.servlet;
import...
/**
*管理员登录
*/
@WebServlet("/login")
public class AdminLoginServlet extends HttpServlet{
    protected void doPost(HttpServletRequest request,HttpServletResponse response)throws ServletException,IOException{
        //1,获得请求参数
        String name = request.getParameter("name");
        String password = request.getParameter("password");
        //2.调用业务层代码处理
        AdminUserService adminUserService = new AdminUserServiceImpl();
        try{
            Manager manager = adminUserService.findManager(name,password);
            if(manager =null){
                //登录失败
                request.setAttribute(s:"error",o:"用户登录失败");
               request.getRequestDispatcher(s:"changepage/login.jsp").forward(request,response);
            }else{
                //登录成功跳转到后台用户列表页
                response.sendRedirect(s:"list");
           }
        }catch(Exception e){
            e.printStackTrace();
        }
    }
    protected void doGet(HttpServletRequest request,HttpServletResponse response)throws ServletException,IOException{
        doPost(request,response);
    }
}

        注意在调用业务层的代码逻辑时使用的是 AdminUserServiceImpl 的构造函数创建了一个对象,并将该对象赋值给 adminUserService。由于 AdminUserServiceImpl 类实现了 AdminUserService 接口,因此可以将 AdminUserServiceImpl 对象赋值给 AdminUserService 类型的变量。

2.2.2 service层:

业务接口

package com.atm.service;
/**
*管理员业务接口
*/    
public interface AdminUserService{
    /**
      *根据账户密码查询管理员
      *@aparam name
      *@aparam name
      *@aparam name
      *@return
      */
    public Manager findManager(String name,String password) throws Exception;
}

impl

        接口的实现类,实现接口的所有抽象方法。接口中只定义了接口的签名,并没有具体的实现逻辑,因此需要一个接口实现类来实现具体的接口逻辑。

package com.atm.service.impl;
import com.atm.pojo.Manager;
import com.atm.service.AdminUserService;

public class AdminUserServiceImpl implements AdminUserService{
    @Override
    public Manager findManager(String name,String password) throws Exception {
        return adminUserDao.findManager(name,password);
    }
}

2.2.3 pojo:

封装实体类,主要是来操作相关的数据库代码

package com.atm.pojo;
public class Manager{
    private Integer id;
    private String name;
    private string password;

    public Integer getId(){
        return id;
    }
    public void setId(Integer id)
        this.id = id;
    }
    public String getName(){
        return name;
    }
}

2.2.4 DAO

        完成管理员用户的持久层操作,dao层主要是实现业务的基础逻辑,像这里的查询数据库并将查询到的数据封装在一个Manager对象里面并返回。

public class AdminUserDao{
    /**
    *根据用户名和密码查询用川
    *@param name
    *@param password
    *@return
    *@throws Exception
    */
    public Manager findMananger(String name,String password)throws Exception{
        Connection connection = DBUtils.getConnection();
        PreparedStatement preparedStatement = connection.prepareStatement(sql:"select * from manage where name=?and password=?");
        preparedstatement.setstring(parameterIndex:1,name);
        preparedstatement.setstring(parameterIndex:2,password);
        ResultSet resultSet = preparedStatement.executeQuery();
        Manager manager = null;
        if(resultSet.next()){
            manager = new Manager();
            manager.setId(resultSet.getInt(columnIndex:1));
            manager.setName(resultSet.getstring(columnIndex:2));
            manager.setPassword(resultSet.getstring(columnIndex:3));
        }
        return manager;
    }
    
}

总结

        在这篇文章中,荔枝主要简单记录了一下Java后端开发的基本配置以及相应的一个小项目中一个登录功能的代码,荔枝也是想通过这个小的项目来帮助自己回顾一下相应的基础Java后端开发知识,希望能帮助到小伙伴们~~~

今朝已然成为过去,明日依然向往未来!我是小荔枝,在技术成长的路上与你相伴,码文不易,麻烦举起小爪爪点个赞吧哈哈哈~~~ 比心心♥~~~

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/726549.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

java项目之高校四六级报名管理系统(ssm+jsp+mysql)

风定落花生,歌声逐流水,大家好我是风歌,混迹在java圈的辛苦码农。今天要和大家聊的是一款基于ssm的高校四六级报名管理系统。项目源码以及部署相关请联系风歌,文末附上联系信息 。 💕💕作者:风歌…

mysql执行顺序以及为什么别名不能用在 where 后

1、mysql执行顺序 如下: 1. from 阶段 2. where 阶段 3. group by 阶段 4. having 阶段 5. select 阶段 6. order by 阶段 7. limit 阶段 2、为什么别名不能用在 where 后

微信小程序反编译之后运行报错“_typeof3 is not a function”

微信小程序解包之后,在微信开发者工具当中点开调试器,选择Console选项卡,发现左侧的预览界面是空白的,虽然真机调试可以有显示,但是真机预览也是跟左边的界面一样都是空白。之后发现Console里面显示 解决方法&#x…

7.5~7.6学习成果总结

关于封装,满足几个原则,一般的成员变量用privat修饰,仅暴露少量方法获取,如果是内部的操作方法也用private,除非是希望被全局使用,的才考虑用public,如果是进希望被子类用的话可以考虑用protect…

ICG NH2,1686147-55-6,吲哚菁绿氨基,安全性更好,并具有更好的光稳定性

ICG NH2,ICG-Amine,吲哚菁绿氨基|(文章编辑来源于:西安凯新生物科技有限公司小编WMJ)产品结构式: 对于ICG NH2(1686147-55-6)我们需要知道这些: CAS号为1686147-55-6&am…

专项练习21

目录 一、选择题 1、下列逻辑表达式的结果为false的是() 2、请问以下JS代码输出的结果是什么? 3、以下哪些对象是Javascript内置的可迭代对象? 二、编程题 1、找到数组参数中的最大值并返回。注意:数组中只包含数字 …

16 直线识别拟合角平分线(matlab程序)

1.简述 直线检测是数字图像处理的重要内容,在道路识别,建筑物识别,医学图像分析等领域都有十分重要的应用。通过对已经获得的图像进行边缘检测,然后用Hough变换对边缘检测进行直线检测。该方法简单,受直线中的间隙和噪声影响较小。在Matlab环境下对该方法进行了仿真实验,并对图…

【LLM】Windows本地CPU部署民间版中文羊驼模型(Chinese-LLaMA-Alpaca)踩坑记录

目录 前言 准备工作 Git Python3.9 Cmake 下载模型 合并模型 部署模型 前言 想必有小伙伴也想跟我一样体验下部署大语言模型, 但碍于经济实力, 不过民间上出现了大量的量化模型, 我们平民也能体验体验啦~, 该模型可以在笔记本电脑上部署, 确保你电脑至少有16G运行…

1.4 计算机网络性能

1.4 计算机网络性能 速率带宽延迟/时延(delay或latency)四种分组延迟排队延迟 时延带宽积分组丢失(丢包)吞吐量/率(Throughput) 速率 速率即数据率(data rate)或称数据传输速率或比特率(bit rate) 单位时间(秒&#x…

为什么我心中TOP1的编程语言是Java?我为什么选择Java?

文章目录 前言优点跨平台性面向对象编程(OOP)强大的类库和工具支持广泛的应用领域 缺点速度相对较慢内存消耗较大较高的学习曲线 Java 学习路线总结前置知识Web前端基础 后端基础1. Java基础2. 数据库技术3. Web开发技术4. 框架技术5. 服务器部署 其他技…

KKT条件

有两种情况: 原问题是非凸函数原问题是凸函数 (1)非凸函数 KKT是强对偶的必要条件,而不是充分条件,即KKT不能推出强对偶。 (2)凸函数 KKT与强对偶互为充要条件。 下面给出具体的KKT条件&a…

数据结构--二叉树的先中后序遍历

数据结构–二叉树的先中后序遍历 二叉树的遍历 层次遍历 层次遍历:基于树的层次特性确定的次序规则 二叉树的递归特性: ①要么是个空二叉树 ②要么就是由“根节点左子树右子树”组成的二叉树 先 \color{red}先 先序遍历: 根 \color{red}根 根左右( N \…

springboot 集成log4j日志,需要自定义json格式内容输出方便ES采集

背景 公司需要将服务迁移到K8S环境上,由于目前服务输出的格式不符合ES进行采集的日志格式,所有需要将日志输出的格式进行调整为JSON格式,方便ES采集 遇到的坑 之前是直接配置的输出格式的message为"message": %msg"&#x…

记录一下,linux安装环境步骤。

前文 鉴于之前都是下载压缩包方式安装环境,学习了docker之后,决定将服务器初始化,重新用docker安装相应环境 条件:自己买的阿里云centos系统。单核系统,仅学习使用。 初始化云盘 初始化云盘步骤: 1&…

Perfetto 命令行工具(Android 10 及更高版本)

Perfetto 命令行工具(Android 10 及更高版本) 1、快速入门1.1 启动跟踪服务1.2 记录跟踪1.2.1 通过 Perfetto UI 记录跟踪1.2.2 通过 cmdline 记录跟踪1.2.3 System Tracing 的系统级应用抓取 2、perfetto 工具2.1 数据源选择2.2 语法参数2.2.1 轻量模式…

数据结构--树和二叉树

目录 1.树的结构及概念1.1树的概念1.2树的相关概念1.3树的表示1.4树在实际中的运用(表示文件系统的目录结构) 2.二叉树的相关概念2.1概念2.2现实版的二叉树2.3特殊的二叉树2.4二叉树的性质2.5二叉树的存储结构 3.与二叉树有关的习题总结 1.树的结构及概念…

RabbitMQ系列(14)--Topics交换机的简介与实现

1、Topics交换机的介绍 Topics交换机能让消息只发送往绑定了指定routingkey的队列中去,不同于Direct交换机的是,Topics能把一个消息往多个不同的队列发送;Topics交换机的routingkey不能随意写,必须是一个单词列表,并以…

leetcode极速复习版-第三章哈希表

目录 哈希表 哈希表理论基础 242.有效的字母异位词 349. 两个数组的交集 202. 快乐数 1. 两数之和 454.四数相加II 383. 赎金信 15. 三数之和 18. 四数之和 哈希表 哈希表理论基础 那么哈希表能解决什么问题呢,一般哈希表都是用来快速判断一个元素是否出…

机器人制作开源方案 | 卧式车床模型概述

1. 功能说明 本文示例将通过程序控制模拟车床的运动效果--模拟车床进行加工时各个结构的运动方式。车床的主要运动包括夹持工件主轴的旋转运动、刀具进给运动、刀具的换刀旋转运动、溜板的平动、尾座上顶针的进给运动。 2. 结构说明 该车床主轴旋转运动选择带传动的传动方式&am…

Elasticsearch实战(二十四)---ES数据建模一对多模型Nested结构

Elasticsearch实战—ES数据建模一对多模型Nested结构 文章目录 Elasticsearch实战---ES数据建模一对多模型Nested结构1.ES 一对多模型Nested 结构模型实战2.ES字段查询2.1 非Nested 错误结构及错误查询2.2 Nested结构,正确查询 3.Nested结构原理 我们如何把Mysql的模…