Bootstrap

JavaWeb - 多模块maven项目---前端录入显示信息

多模块maven项目—前端录入显示信息

一.要求

1.创建一个名为servlet_Exam的多模块maven项目, 其中有三个子模块分别为

1) 基础模块servlet_pojo
2) 基础模块servlet_dao
3) web模块servlet_web

2.设置其依赖关系:

servlet_web 依赖 servlet_dao

servlet_dao 依赖 servlet_pojo

3.子模块功能实现说明

1) 基础模块servlet_pojo
在该模块内定义一个bean,名称为User;
其相应的属性: id(整型) name(字符串) age(整型) gender(字符) birthday(日期) hobbies(字符串数组)

2) 基础模块servlet_dao
说明: 1. 数据库使用mysql数据库

2.创建一张User表, 表中的字段分别为:

1.id 序号

2.name 姓名

3.age 年龄

4.gender 性别

5.birthday 生日

6.hobbies 兴趣爱好

7.createtime 创建时间(日期类型)

8.updatetime 修改时间(日期类型)

该模块主要用于定义数据库相关操作类与方法
该模块分别创建两个类: a. DBUtil b. UserDao
a. DBUtil
在该类中封装jdbc连接mysql数据库方法(1. 数据库驱动获取方法 2.数据库关闭方法)

b. UserDao
在该类中封装:

1) 一个插入User对象到数据表的方法
实现要求:

1.createtime与updatetime两个字段值为当前时间,使用字符串固定值

2.插入的数据字符串类型使用中文

3.id为自动生成(对顺序无要求)

2) 一个通过id来得到相应User对象的方法

3) web模块servlet_web
该模块用于前台展示信息

1.在index.jsp页面中定义一个form表单,该表单需要向后台传递
用户信息
要求: 1)使用post方式
2)action: “insert.do”

2.创建一个InsertServlet类,继承HttpServlet类
在该类相关方法中实现从前台获取数据,传递给Dao层进行插入
备注: a. 请求路径: http://localhost:8088/insert.do
b. 需要处理中文问题
c. 插入成功,向前台返回"数据已成功录入!"

3.创建一个home.jsp页面
该页面定义一个form表单,用于输入用户id查询相应用户信息
要求: 1)使用get方式
2)action: “update.do”

4.创建一个UpdateServlet类,继承HttpServlet类
该类用于返回用户信息
要求: 1) 如果查询到了用户,就将信息返回至前台
2) 如果查询不到用户,就向前台返回"该用户不存在"

4.git提交

1) 在码云创建名为"Servlet_Exam"的仓库,仓库设置为公开仓库而非私有;
2) 并使用remote方式将本地仓库与远程仓库进行连接;
3) 在本地创建.gitignore文件并对其进行配置;
.gitignore配置要求:
只允许上传 “.java” “.xml” “.jsp” “.html”
4) 将本地项目上传至远程仓库

二.创建项目

首先创建servlet_Exam的maven项目(我的项目名字是Exam)

在这里插入图片描述
在这里插入图片描述在这里插入图片描述

接着创建子模块项目

在这里插入图片描述

servlet_pojo 和 servlet_dao 模块和创建servlet_Exam一样
servlet_web创建时有所区别

在这里插入图片描述

创建完成后的项目

注意: 要把主项目也就是Exam项目里的src文件删除

在这里插入图片描述

三.设置其依赖关系

包括所需的jar包地址

包含的jar包有

在这里插入图片描述

Exam的pom.xml

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
                             http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>com.huawei</groupId>
    <artifactId>Exam</artifactId>
    <version>1.0-SNAPSHOT</version>
    <modules>
        <module>servlet_pojo</module>
        <module>servlet_dao</module>
        <module>servlet_web</module>
    </modules>
<!--    所有的父级项目都是pom的打包方式  -->
    <packaging>pom</packaging>
    <name>Exam</name>

    <dependencies>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.12</version>
            <scope>test</scope>
        </dependency>
        <!--jar包地址-->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <!--要和自己的mysql数据库版本一致-->
            <version>8.0.26</version>
        </dependency>
        <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>javax.servlet-api</artifactId>
            <version>3.1.0</version>
            <scope>provided</scope>
        </dependency>
    </dependencies>
</project>

servlet_pojo的pom.xml

<?xml version="1.0" encoding="UTF-8"?>

<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
                             http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <parent>
    <artifactId>Exam</artifactId>
    <groupId>com.huawei</groupId>
    <version>1.0-SNAPSHOT</version>
  </parent>
    
  <modelVersion>4.0.0</modelVersion>
  <artifactId>servlet_pojo</artifactId>
  <name>servlet_pojo</name>
</project>

servlet_dao的pom.xml

<?xml version="1.0" encoding="UTF-8"?>

<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
                             http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>

  <groupId>com.huawei</groupId>
  <artifactId>servlet_dao</artifactId>
  <version>1.0-SNAPSHOT</version>
  <name>servlet_dao</name>

  <dependencies>
    <dependency>
      <groupId>com.huawei</groupId>
      <artifactId>servlet_pojo</artifactId>
      <version>1.0-SNAPSHOT</version>
    </dependency>
      <dependency>
          <groupId>junit</groupId>
          <artifactId>junit</artifactId>
          <version>4.12</version>
          <scope>test</scope>
      </dependency>
  </dependencies>
</project>

servlet_web的pom.xml

<?xml version="1.0" encoding="UTF-8"?>

<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
                             http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <parent>
    <artifactId>Exam</artifactId>
    <groupId>com.huawei</groupId>
    <version>1.0-SNAPSHOT</version>
      
  </parent>
  <artifactId>servlet_web</artifactId>
  <version>1.0-SNAPSHOT</version>
  <packaging>war</packaging>
    
  <dependencies>
    <dependency>
      <groupId>com.huawei</groupId>
      <artifactId>servlet_dao</artifactId>
      <version>1.0-SNAPSHOT</version>
    </dependency>
  </dependencies>
</project>

四.编写servlet_pojo模块

在这里插入图片描述

bea层

User
package com.huawei.bean;
import com.huawei.util.Tools;
import java.util.Arrays;
import java.util.Date;

/**
 * model 或bean  模型类  一般和数据库表一致
 * @date 2022/5/7 14:05
 */

public class User {
    private int id;
    private String name;
    private int age;
    private char gender;
    private Date birthday;
    private String[] hobbies;

    public User() {
    }

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    public char getGender() {
        return gender;
    }

    public void setGender(char gender) {
        this.gender = gender;
    }

    public Date getBirthday() {
        return birthday;
    }

    public void setBirthday(Date birthday) {
        this.birthday = birthday;
    }

    public String[] getHobbies() {
        return hobbies;
    }
    
    public String getHobbie(){
        String str= Tools.arrayToString(this.hobbies);
        return str;
    }

    public void setHobbies(String[] hobbies) {
        this.hobbies = hobbies;
    }

    @Override
    public String toString() {
        return "User{" +
                "id=" + id +
                ", name='" + name + '\'' +
                ", age=" + age +
                ", gender=" + gender +
                ", birthday=" + birthday +
                ", hobbies=" + Arrays.toString(hobbies) +
                '}';
    }
}

util层

Tools
package com.huawei.util;

/**
 * 工具类
 * 数组转为字符串
 * @date 2022/5/9 11:37
 */

public class Tools {
    public static String arrayToString(String[] strs){
        String str="";
        for (String s:strs) {
            str+=s+",";
        }
        str=str.substring(0,str.length()-1);
        return str;
    }
}

五.编写servlet_dao模块

在这里插入图片描述

建表

首先在mysql数据库选择一个库,然后创建一个user表
create table user (
	id int primary key not null auto_increment,
	name varchar(10) not null,
	age int(3) ,
	gender char(2),
	birthday date,
	hobbies varchar(50),
	createtime datetime,
	updatetime datetime
	);

util层

DBUtil
package com.huawei.util;

import java.sql.*;

/**
 * jdbc连接数据库工具类
 * @date 2022/5/9 9:48
 */

public class DBUtil {
	//注意:test_0507为数据库名
    public static String url = "jdbc:mysql://localhost:3306/test_0507";
    //注意:高版本的JDBC驱动, mysql-connector-java 8以上版本
    //JDBC driver 由"com.mysql.jdbc.Driver"改为"com.mysql.cj.jdbc.Driver"
    public static String drive = "com.mysql.cj.jdbc.Driver";

    /**
     * 初始化
     */
    static {
        try {
            Class.forName(drive);
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        }
    }

    /**
     * 建立数据库连接
     * @return
     */
    public static Connection getConnection() {
        try {
            return DriverManager.getConnection(url, "root", "123456");
        } catch (SQLException e) {
            e.printStackTrace();
        }
        return null;
    }

    /**
     * 关闭资源方法
     * @param rs
     * @param st
     * @param conn
     */
    public static void close(ResultSet rs,Statement st,Connection conn){
        if (rs!=null) {
            try {
                rs.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
        if (st!=null) {
            try {
                st.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
        if (conn!=null) {
            try {
                conn.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
    }

    /**
     * 测试是否能够成功连接
     * @param args
     */
    public static void main(String[] args) {
        Connection connection=getConnection();
        System.out.println(connection);
    }
}
Tools
package com.huawei.util;

/**
 * 工具类
 * 数组转为字符串
 * @date 2022/5/9 11:37
 */

public class Tools {
    public static String arrayToString(String[] strs){
        String str="";
        for (String s:strs) {
            str+=s+",";
        }
        str=str.substring(0,str.length()-1);
        return str;
    }
}

dao层

UserDao
package com.huawei.dao;

import com.huawei.bean.User;
import com.huawei.util.DBUtil;
import com.huawei.util.Tools;

import java.sql.*;

/**
 * 对User类进行插入和查询操作
 * @date 2022/5/9 10:23
 */

public class UserDao {
    /**
     * 插入方法
     * @param user
     * @return
     */
    public int insert(User user) {
        int n = 0;
        //sql语句
        String sql = "insert into user(name,age,gender,birthday,hobbies,createtime) 					  values(?,?,?,?,?,now())";
        //初始化连接
        Connection conn = DBUtil.getConnection();
        PreparedStatement pst = null;
        try {
            pst = conn.prepareStatement(sql);
            pst.setString(1, user.getName());
            pst.setInt(2, user.getAge());
            pst.setString(3, user.getGender() + "");
            pst.setDate(4, new Date(user.getBirthday().getTime()));
            pst.setString(5, Tools.arrayToString(user.getHobbies()));
            n = pst.executeUpdate();
        } catch (SQLException e) {
            e.printStackTrace();
        } finally {
            DBUtil.close(null, pst, conn);
        }
        return n;
    }

    /**
     * 查询方法
     * @param id
     * @return
     */
    public User findUserById(int id) {
        User user = null;
        String sql = "select * from user where id=?";
        Connection conn = DBUtil.getConnection();
        PreparedStatement pst = null;
        ResultSet rs = null;
        try {
            pst = conn.prepareStatement(sql);
            pst.setInt(1, id);
            rs = pst.executeQuery();
            while (rs.next()) {
                user = new User();
                user.setId(rs.getInt("id"));
                user.setName(rs.getString("name"));
                user.setAge(rs.getInt("age"));
                user.setGender(rs.getString("gender").charAt(0));
                user.setBirthday(rs.getDate("birthday"));
                user.setHobbies(rs.getString("hobbies").split(","));
            }
        } catch (SQLException e) {
            e.printStackTrace();
        } finally {
            DBUtil.close(rs, pst, conn);
        }
        return user;
    }
}

六.编写servlet_web模块

在这里插入图片描述

servlet层

InsertServlet
package com.huawei.servlet;

import com.huawei.bean.User;
import com.huawei.dao.UserDao;
import com.huawei.util.DateTools;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;


/**
 * 从前台获取数据,传递给Dao层进行插入
 * @date 2022/5/9 13:59
 */
//insert.do必须和index.jsp的action值一致
@WebServlet("/insert.do")
public class InsertServlet extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        doPost(req, resp);
    }

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        req.setCharacterEncoding("utf-8");
        resp.setCharacterEncoding("utf-8");
        resp.setContentType("text/html; charset=UTF-8");
        User user = new User();
        //获取姓名并设置User对象姓名
        String name = req.getParameter("name");
        user.setName(name);
        //获取年龄并设置年龄
        String age = req.getParameter("age");
        if (age != null && !age.equals("")) {
            //如果有值就设置获取的值
            int age1 = Integer.parseInt(age);
            user.setAge(age1);
        } else {
            //如果没有则设置为18
            user.setAge(18);
        }
        //获取性别并设置User对象性别
        char gender = req.getParameter("gender").charAt(0);
        user.setGender(gender);
        //获取生日并判断处理
        String birthday =req.getParameter("birthday");
        user.setBirthday(DateTools.dateStrToDate(birthday));
        //获取爱好并设置User对象爱好
        String[] hobbies = req.getParameterValues("hobbies");
        user.setHobbies(hobbies);
        UserDao userDao=new UserDao();
        if (userDao.insert(user)>=1) {
            resp.getWriter().println("数据已成功录入");
        } else {
            resp.getWriter().println("数据录入失败");
        }
    }
}
UpdateServlet
package com.huawei.servlet;

import com.huawei.bean.User;
import com.huawei.dao.UserDao;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;

/**
 * 查询返回用户信息
 * @avthor HuangJun
 * @date 2022/5/9 14:46
 */
//update.do必须和home.jsp的action值一致
@WebServlet("/update.do")
public class UpdateServlet extends HttpServlet {
    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        doGet(req, resp);
    }

    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        req.setCharacterEncoding("utf-8");
        resp.setCharacterEncoding("utf-8");
        resp.setContentType("text/html; charset=UTF-8");
        //获取id值
        String idStr=req.getParameter("id");
        int id=0;
        //如果不为空,就转为int类型
        if (idStr!=null&&!idStr.equals("")){
            id=Integer.parseInt(idStr);
        }
        UserDao userDao=new UserDao();
        User user=userDao.findUserById(id);
        //如果不为空值, 就将数据返回给show.jsp
        if (user!=null){
            req.setAttribute("User",user);
            req.getRequestDispatcher("/show.jsp").forward(req,resp);
        }else{
            resp.getWriter().println("该用户不存在!!");
        }
    }
}

util层

DateTools
package com.huawei.util;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;

/**
 * 时间处理工具类
 * @date 2022/5/9 14:20
 */

public class DateTools {
    /**
     * 将时间字符串转为时间对象
     * @param dt
     * @return
     */
    public static Date dateStrToDate(String dt){
        Date date=new Date();
        SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd");
        try {
            date =sdf.parse(dt);
        } catch (ParseException e) {
            e.printStackTrace();
        }
        return date;
    }
}

webapp

index.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %>
<html>
<head>
    <meta charset="UTF-8">
    <title>用户注册</title>
</head>
<body>
<h2>用户注册</h2>
<form action="insert.do" method="post">
    请输入姓名:<input name="name"><br>
    请输入年龄:<input name="age"><br>
    请输入性别:<input name="gender" type="radio" value="男">男<input name="gender" type="radio" value="女">女<br>
    请输入生日:<input type="date" name="birthday"><br>
    请输入爱好:<input type="checkbox" name="hobbies" value="看书">看书
             <input type="checkbox" name="hobbies" value="踢足球">踢足球
             <input type="checkbox" name="hobbies" value="玩游戏">玩游戏<br>
    <input type="submit"><br>
</form>
</body>
</html>
home.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %>
<html>
<head>
    <meta charset="UTF-8">
    <title>查询</title>
</head>
<body>
    <form action="update.do" method="get">
        请输入编号:<input name="id"><br>
        <input type="submit">
    </form>
</body>
</html>
show.jsp
<%@ page import="com.huawei.bean.User" %>
<%@ page import="java.util.Arrays" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" isELIgnored="false" %>
                                 <%-- 注意: isELIgnored="false"表示页面不忽略EL表达式--%>
								  <%-- isELIgnored是默认为true的, EL表达式会被忽略--%>
<html>
<head>
    <meta charset="UTF-8">
    <title>用户信息</title>
</head>
<body>
<h3>
    <%--普通获取值的写法--%>
    <%
        User user = (User) request.getAttribute("User");
    %>
    用户名:<%=user.getName()%><br>
    年龄:<%=user.getAge()%><br>
    性别:<%=user.getGender()%><br>
    生日:<%=user.getBirthday()%><br>
    爱好:<%=Arrays.toString(user.getHobbies())%><br>
    <hr>
    <%--EL表达式写法--%>
    用户名:${User.name}<br>
    年龄:${User.age}<br>
    性别:${User.gender}<br>
    生日:${User.birthday}<br>
    爱好:${User.hobbie}<br>
</h3>
</body>
</html>

配置tomcat服务器

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

七.git提交项目

创建远程仓库

在gitee上创建一个远程仓库

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

配置过虑文件

在这里插入图片描述

项目关联git

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

项目与远程仓库建立连接

在这里插入图片描述
在这里插入图片描述

提交项目

add文件

在这里插入图片描述

commit文件

在这里插入图片描述
在这里插入图片描述

push文件

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

;