1) 基础模块servlet_pojo
2) 基础模块servlet_dao
3) web模块servlet_web
**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) 如果查询不到用户,就向前台返回"该用户不存在"
1) 在码云创建名为"Servlet_Exam"的仓库,仓库设置为公开仓库而非私有;
2) 并使用remote方式将本地仓库与远程仓库进行连接;
3) 在本地创建.gitignore文件并对其进行配置;
.gitignore配置要求:
只允许上传 “.java” “.xml” “.jsp” “.html”
4) 将本地项目上传至远程仓库
servlet_pojo 和 servlet_dao 模块和创建servlet_Exam一样
servlet_web创建时有所区别
注意: 要把主项目也就是Exam项目里的src文件删除
三.设置其依赖关系包括所需的jar包地址
包含的jar包有 Exam的pom.xmlservlet_pojo的pom.xml4.0.0 com.huawei Exam 1.0-SNAPSHOT servlet_pojo servlet_dao servlet_web pom Exam junit junit 4.12 test mysql mysql-connector-java 8.0.26 javax.servlet javax.servlet-api 3.1.0 provided
servlet_dao的pom.xmlExam com.huawei 1.0-SNAPSHOT 4.0.0 servlet_pojo servlet_pojo
servlet_web的pom.xml4.0.0 com.huawei servlet_dao 1.0-SNAPSHOT servlet_dao com.huawei servlet_pojo 1.0-SNAPSHOT junit junit 4.12 test
四.编写servlet_pojo模块 bea层 User4.0.0 Exam com.huawei 1.0-SNAPSHOT servlet_web 1.0-SNAPSHOT war com.huawei servlet_dao 1.0-SNAPSHOT
package com.huawei.bean;
import com.huawei.util.Tools;
import java.util.Arrays;
import java.util.Date;
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;
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.*;
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();
}
}
public static Connection getConnection() {
try {
return DriverManager.getConnection(url, "root", "123456");
} catch (SQLException e) {
e.printStackTrace();
}
return null;
}
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();
}
}
}
public static void main(String[] args) {
Connection connection=getConnection();
System.out.println(connection);
}
}
Tools
package com.huawei.util;
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.*;
public class UserDao {
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;
}
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;
//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;
//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;
public class DateTools {
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" %>
用户注册
用户注册
home.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %>
查询
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表达式会被忽略--%>
用户信息
<%--普通获取值的写法--%>
<%
User user = (User) request.getAttribute("User");
%>
用户名:<%=user.getName()%>
年龄:<%=user.getAge()%>
性别:<%=user.getGender()%>
生日:<%=user.getBirthday()%>
爱好:<%=Arrays.toString(user.getHobbies())%>
<%--EL表达式写法--%>
用户名:${User.name}
年龄:${User.age}
性别:${User.gender}
生日:${User.birthday}
爱好:${User.hobbie}
配置tomcat服务器
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-UhDO6OL6-1652097060577)(31.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-5ihZ6u4j-1652097060578)(32.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-GjCXTKFQ-1652097060578)(33.png)]
链图片转存中…(img-sHVzu7Su-1652097060570)]
[外链图片转存中…(img-cMmQXBh1-1652097060570)]
七.git提交项目 创建远程仓库 在gitee上创建一个远程仓库[外链图片转存中…(img-7rYVkAxI-1652097060571)]
[外链图片转存中…(img-aXAz83MW-1652097060572)]
[外链图片转存中…(img-00Gneshb-1652097060573)]
配置过虑文件[外链图片转存中…(img-VOL88Lzv-1652097060573)]
项目关联git[外链图片转存中…(img-l5APitNX-1652097060573)]
[外链图片转存中…(img-QvGQpOUy-1652097060574)]
[外链图片转存中…(img-txlQklTY-1652097060574)]
项目与远程仓库建立连接[外链图片转存中…(img-nHI7jNwG-1652097060575)]
[外链图片转存中…(img-8V5gFyuK-1652097060575)]
提交项目 add文件[外链图片转存中…(img-xNGKfqN8-1652097060576)]
commit文件[外链图片转存中…(img-VTgAx1dK-1652097060576)]
[外链图片转存中…(img-KXeFmiG3-1652097060577)]
push文件[外链图片转存中…(img-UhDO6OL6-1652097060577)]
[外链图片转存中…(img-5ihZ6u4j-1652097060578)]
[外链图片转存中…(img-GjCXTKFQ-1652097060578)]



