当前位置:   article > 正文

Java | 详解 创建Web项目、配置Tomcat服务器、实现登录效果_(1)新建java web项目,项目名为【你的学号】。 提示:配置tomcat热部署,添加java连

(1)新建java web项目,项目名为【你的学号】。 提示:配置tomcat热部署,添加java连

目录

一、相关工具及技术

        1、相关工具

        2、相关技术

        3、相关 jar 包

二、IDEA 创建 web 项目

        1、创建空项目

        2、classes目录和lib目录配置

        3、tomcat 服务器配置

三、MySQL 配置

        1、登录 mysql

        2、创建 user 表

        3、插入数据

四、项目代码编写

        1、整体思路

        2、前端代码

                (1)index.html 

                (2)login.html

        3、后端代码

                (1)项目结构

                (2)相关 jar 包

                (3)User 类

                (4)MyBatis 相关配置

                (5)UserDao 类

                (6)UserMapper.xml 映射文件

                (7)LoginServlet 类

五、验证

        1、登录成功

        2、登录失败


一、相关工具及技术

        1、相关工具

  • 数据库:MySQL
  • 编程工具:IDEA 企业版

        2、相关技术

  • 服务器:HttpServlet、BeanUtil
  • 数据库:MyBatis

        3、相关 jar 包

二、IDEA 创建 web 项目

        1、创建空项目

                (1)打开 IDEA 企业版,创建空项目LoginDemo。

                (2)打开项目,在LoginDemo目录下右键,点击 添加框架支持

                (3)选择 Web应用程序

                        点击确定后,项目下多了一个 名为web的目录。

      2、classes目录和lib目录配置

                (1)右键web目录,创建两个新的目录 classeslib 。

                (2)配置 classes 目录

                        a、打开项目结构

                 b、选择模块,打开 路径 。选择 使用模块编译输出路径 选项

                 c、选择 classes 目录的路径

                 d、修改后,点击应用。

                 (3)配置 lib 目录

                        a、项目结构的模块中打开 依赖

                         b、点击 依赖 下面的 + 号(不是模块中的 + 号),选择 JAR或目录... 选项

                         c、选择 lib 目录的路径

                         d、选择 Jar Diirectory 选项,点击确定 

                         e、依赖下出现刚刚选择的 lib 目录,选择并应用。

                        f、点击项目结构的 库 ,点击右上角的 + 号,选择 Java。

                         g、同样的选择 Jar Diirectory 选项,点击确定

                         h、点击确定

                         i、添加成功后,点击确定关闭项目结构。

        3、tomcat 服务器配置

                (1)点击编辑配置

                 (2)点击添加新的运行配置,找到 tomcat ,选择 本地

Tomcat 服务器是一个免费的开放源代码的Web 应用服务器,属于轻量级应用服务器。
下载地址:Apache Tomcat® - Welcome!

        任选一个版本进行下载,我这里选择的是Tomcat 9。下载之后解压到你知道的目录即可。

                (3)配置 Tmocat 服务器,其中:                       

  1. 名称:任意填写
  2. 应用程序服务器:点击右边的配置按钮,进行配置
  3. HTTP端口:默认8080
  4. JMX端口:默认1099

                 输入你解压后 tomcat 的目录,主目录和基目录一般是选择一样的。

                 点击 部署,点击下方的加号,选择 工件...,添加工件。

        选择 文件 -> 项目结构 -> 工件,将名称 ":" 后面的内容去掉,输出目录 "_" 后面的内容去掉(留下项目名),然后勾上两个按钮,点击确定。

                (4)点击 服务,点击运行按钮。红色的字段不是报错,只是服务器运行输出的日志等内容,不用担心。当出现 部署已花费 XXX 毫秒 的字样,浏览器打开如下界面,即说明配置完成。

三、MySQL 配置

        1、登录 mysql

                输入 net start mysql 启动 mysql 数据库服务。

net start mysql

                 输入用户名、密码登录 mysql 。

mysql -u 你的用户名 -p

                查看 mysql 中的数据库,选择你的数据库

show databases;
use 你的数据库;

        2、创建 user 表

                我创建了一张 user 表,包含了 id,name,password 三个字段。其中 id 字段为主键,设置为自动增长。

  1. create table user(
  2. id int primary key auto_increment,
  3. name varchar(20),
  4. password varchar(20)
  5. );

        3、插入数据

                插入一条记录,用于后面的测试

insert into user values(null,"admin","admin");

                 查看表

select * from user;

四、项目代码编写

        1、整体思路

                用户通过浏览器访问 login.html 页面,输入用户名的密码。服务器接收数据,通过servlet进行解析,如果正确,则跳转到 welcome.html 页面;否则重新跳转回 login.html 页面。

        2、前端代码

                由于这个Demo主要关注后端的代码,前端的代码就简单写了写,仅作为测试。

                (1)index.html 

                         这个页面是浏览器一打开就展示的界面

                      (在tomcat服务器的web.xml配置文件下有相关的配置)

  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8">
  5. <title>开始界面</title>
  6. </head>
  7. <body>
  8. <h1>欢迎您来到...首页</h1>
  9. </body>
  10. </html>

附:tomcat服务器对各种资源的访问

对Servlet动态资源的访问:

对html静态资源的访问:

对index为名称的资源的访问:

tomcat服务器的web.xml文件 第4734行

                (2)login.html

                        (注意这里 action 的 URL 别写错)

  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8">
  5. <title>登录界面</title>
  6. </head>
  7. <body>
  8. <form action="http://localhost:8080/LoginDemo/loginServlet" method="post">
  9. 姓名:<input type="text" name="name"><br>
  10. 密码:<input type="password" name="password"><br>
  11. <input type="submit" value="登录">
  12. </form>
  13. </body>
  14. </html>

                (3)welcome.html

  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8">
  5. <title>欢迎界面</title>
  6. </head>
  7. <body>
  8. <h1>欢迎您</h1>
  9. <h2>登录成功</h2>
  10. </body>
  11. </html>

        3、后端代码

                (1)项目结构

                (2)相关 jar 包

 BeanUtils需要导入3个Jar包:

        commons-beanutils-1.9.3.jar
        commons-beanutils-1.9.3-tests.jar
        commons-logging-1.2.jar

CSDN:BeanUtils工具类-Java文档类资源-CSDN文库

官网:Index of /dist/commons/beanutils/binaries (apache.org)

MyBatis需要导入1个Jar包:

        mybatis-3.5.11.jar

CSDN:mybatis-3.5.11-Java文档类资源-CSDN文库

官网:Releases · mybatis/mybatis-3 · GitHub

MySQL需要导入1个Jar包:

        mysql-connector-j-8.0.31.jar

官网:MySQL :: MySQL Community Downloads

CSDN:mysql-connector-j-8.0.31-Java文档类资源-CSDN文库

HttpServlet需要导入1个Jar包:

        servlet-api.jar

打开 tomcat 解压目录下的 lib 目录,找到 servlet-api.jar

                (3)User 类

                        a、使用 IDEA 企业版连接数据库

                                打开 IDEA 右侧的数据库,选择MySQL.

                         填写相关配置,主要是mysql的用户名和密码

                        点击数据源属性,选择你的数据库,找到 user 表。

                        b、通过工具创建 User 类

                                右键 user 表,选择 工具 -> 脚本化控制程序 -> Generate POJOs.groovy

                        选择需要生成的位置(pojo包下)

                       IDEA将自动生成 User 实体类,注意自动生成的包名可能需要自己改一下。

                (4)MyBatis 相关配置

                        a、配置 jdbc.properties。创建 jdbc.properties 文件,填写数据库连接的相关消息,用于MyBatis的连接。

  1. driver=com.mysql.cj.jdbc.Driver
  2. url=jdbc:mysql://localhost:3306/db_study
  3. username=root
  4. password=root

                        b、配置 mybatis-config.xml。创建 mybatis-config.xml 文件,填写资源包、别名、环境、映射文件等的信息。

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
  3. "http://mybatis.org/dtd/mybatis-3-config.dtd">
  4. <configuration>
  5. <!--配置资源包-->
  6. <properties resource="jdbc.properties"/>
  7. <!--配置别名-->
  8. <typeAliases>
  9. <typeAlias type="com.pojo.User" alias="user"/>
  10. </typeAliases>
  11. <!--配置环境-->
  12. <environments default="mysql">
  13. <environment id="mysql">
  14. <transactionManager type="JDBC"/>
  15. <dataSource type="POOLED">
  16. <property name="driver" value="${driver}"/>
  17. <property name="url" value="${url}"/>
  18. <property name="username" value="${username}"/>
  19. <property name="password" value="${password}"/>
  20. </dataSource>
  21. </environment>
  22. </environments>
  23. <!--配置映射文件-->
  24. <mappers>
  25. <mapper resource="com/dao/UserMapper.xml"/>
  26. </mappers>
  27. </configuration>

                (5)UserDao 类

                        定义接口 UserDao 类,这里使用的是xml的方式编写SQL语句,另一种方式是通过注解的方式编写。通过 UserMapper.xml 实现接口。

  1. package com.dao;
  2. import com.pojo.User;
  3. public interface UserDao {
  4. User findByNameAndPassword(User user);
  5. }

                (6)UserMapper.xml 映射文件

                        填写SQL语句,实现接口。

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
  3. "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
  4. <!--配置具体映射文件,namespace属性是指定具体要操纵的类-->
  5. <mapper namespace="com.dao.UserDao">
  6. <select id="findByNameAndPassword" resultType="user" parameterType="user">
  7. select *
  8. from user
  9. where name = #{name}
  10. and password = #{password}
  11. </select>
  12. </mapper>

                (7)LoginServlet 类

                这里编写的实现MySQL语句查询,判断页面跳转的代码。login.html页面通过 acton 的URL跳转到该类。

                首先通过注解的方式配置路径

@WebServlet("/loginServlet")

                实现doPost方法

  1. @Override
  2. protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
  3. ... ...
  4. }

                将tomcat的服务器编码设置为 utf-8 ,避免用户post时中文乱码的问题。

req.setCharacterEncoding("utf-8");

                通过 getParameterMap() 方法获取请求参数

Map<String, String[]> map = req.getParameterMap();

                创建 User 类,通过BeanUtils类打包。

  1. // 创建 user 对象
  2. User user = new User();
  3. // 将 map 中的请求参数封装到 user 对象中
  4. try {
  5. BeanUtils.populate(user, map);
  6. } catch (IllegalAccessException | InvocationTargetException e) {
  7. throw new RuntimeException(e);
  8. }

                通过MyBatis 获取 UserDao 代理类,查询数据库并返回查询结果。

  1. // 获取流对象,读取核心配置文件
  2. InputStream is = Resources.getResourceAsStream("mybatis-config.xml");
  3. // 创建 sqlSessionFactoryBuilder 工厂构建者对象
  4. SqlSessionFactoryBuilder sqlSessionFactoryBuilder = new SqlSessionFactoryBuilder();
  5. // 获取 sqlSessionFactory 工厂对象
  6. SqlSessionFactory sqlSessionFactory = sqlSessionFactoryBuilder.build(is);
  7. // 获取 SqlSession 对象
  8. SqlSession sqlSession = sqlSessionFactory.openSession();
  9. // 获取 UserDao 代理类对象
  10. UserDao userDao = sqlSession.getMapper(UserDao.class);
  11. // 调用 userDao
  12. User result = userDao.findByNameAndPassword(user);
  13. // sqlSession 提交
  14. sqlSession.commit();
  15. // sqlSession 关闭
  16. sqlSession.close();

                判断结果是否为 null,决定请求转发的方向。

  1. // 判断 result 是否为 null
  2. if (result == null) {
  3. // 没有该用户,跳转到 login.html
  4. req.getRequestDispatcher("/login.html").forward(req, resp);
  5. } else {
  6. // 有该用户,跳转到 welcome.html
  7. req.getRequestDispatcher("/welcome.html").forward(req, resp);
  8. }

                LoginServlet 类全部代码:

  1. package com.servlet;
  2. import com.dao.UserDao;
  3. import com.pojo.User;
  4. import org.apache.commons.beanutils.BeanUtils;
  5. import org.apache.ibatis.io.Resources;
  6. import org.apache.ibatis.session.SqlSession;
  7. import org.apache.ibatis.session.SqlSessionFactory;
  8. import org.apache.ibatis.session.SqlSessionFactoryBuilder;
  9. import javax.servlet.ServletException;
  10. import javax.servlet.annotation.WebServlet;
  11. import javax.servlet.http.HttpServlet;
  12. import javax.servlet.http.HttpServletRequest;
  13. import javax.servlet.http.HttpServletResponse;
  14. import java.io.IOException;
  15. import java.io.InputStream;
  16. import java.lang.reflect.InvocationTargetException;
  17. import java.util.Map;
  18. @WebServlet("/loginServlet")
  19. public class LoginServlet extends HttpServlet {
  20. @Override
  21. protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
  22. this.doPost(req, resp);
  23. }
  24. @Override
  25. protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
  26. req.setCharacterEncoding("utf-8");
  27. // 获取请求参数
  28. Map<String, String[]> map = req.getParameterMap();
  29. // 创建 user 对象
  30. User user = new User();
  31. // 将 map 中的请求参数封装到 user 对象中
  32. try {
  33. BeanUtils.populate(user, map);
  34. } catch (IllegalAccessException | InvocationTargetException e) {
  35. throw new RuntimeException(e);
  36. }
  37. // 获取流对象,读取核心配置文件
  38. InputStream is = Resources.getResourceAsStream("mybatis-config.xml");
  39. // 创建 sqlSessionFactoryBuilder 工厂构建者对象
  40. SqlSessionFactoryBuilder sqlSessionFactoryBuilder = new SqlSessionFactoryBuilder();
  41. // 获取 sqlSessionFactory 工厂对象
  42. SqlSessionFactory sqlSessionFactory = sqlSessionFactoryBuilder.build(is);
  43. // 获取 SqlSession 对象
  44. SqlSession sqlSession = sqlSessionFactory.openSession();
  45. // 获取 UserDao 代理类对象
  46. UserDao userDao = sqlSession.getMapper(UserDao.class);
  47. // 调用 userDao
  48. User result = userDao.findByNameAndPassword(user);
  49. // sqlSession 提交
  50. sqlSession.commit();
  51. // sqlSession 关闭
  52. sqlSession.close();
  53. // 判断 result 是否为 null
  54. if (result == null) {
  55. // 没有该用户,跳转到 login.html
  56. req.getRequestDispatcher("/login.html").forward(req, resp);
  57. } else {
  58. // 有该用户,跳转到 welcome.html
  59. req.getRequestDispatcher("/welcome.html").forward(req, resp);
  60. }
  61. }
  62. }

五、验证

        1、登录成功

        2、登录失败

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/我家自动化/article/detail/191517?site
推荐阅读
相关标签
  

闽ICP备14008679号