- 创建一个名为Servlet_Exam的多模块maven项目, 其中有三个子模块分别为
- 基础模块Servlet_pojo
- 基础模块Servlet_dao
- web模块Servlet_web
创建父模块Servlet_Exam
添加三个子模块
然后创建两个子模块分别是 Servlet_dao,基础模块Servlet_pojo添加的方式跟创建父模块一致
添加servlet_web模块
其余步骤跟上面一致,不会创建Maven的同志可以看我上一篇博客
这是这几个项目的排版,以上的问题已经解决,下面开始设置其依赖关系: Servlet_web 依赖 Servlet_dao
Servlet_dao 依赖 Servlet_pojo
- 子模块功能实现说明
- 基础模块Servlet_pojo
在该模块内定义一个bean,名称为User;
其相应的属性: id(整型) name(字符串) age(整型) gender(字符)birthday(日期) hobbies(字符串数组)
- 基础模块Servlet_pojo
public class User {
private int id;
private String name;
private int age;
private char gender;
private Date birthday;
private String hobbies;
// TODO: 2022/5/9 生成对应的get和set方法 以及toString
}
- 基础模块Servlet_dao
说明: 1. 数据库使用mysql数据库
2. 创建一张User表, 表中的字段分别为:
1. id 序号
2. name 姓名
3. age 年龄
4. gender 性别
5. birthday 生日
6. hobbies 兴趣爱好
7. createtime 创建时间(日期类型)
8. updatetime 修改时间(日期类型)
create table user( id int(10), `name` varchar(50), age int(10), gender varchar(50), birthday date, hobbies varchar(50), createTime date, updateTime date )
该模块主要用于定义数据库相关操作类与方法
该模块分别创建两个类: a. DBUtil b. UserDao
a. DBUtil在该类中封装jdbc连接mysql数据库方法(1. 数据库驱动获取方法 2.数据库关闭方法)
b. UserDao在该类中封装: 一个插入User对象到数据表的方法实现要求:
- createtime与updatetime两个字段值为当前时间并且为自动生成,不允许使用字符串固定值
1.2. 插入的数据字符串类型使用中文
1.3. id为自动生成(对顺序无要求)
- 一个通过id来得到相应User对象的方法
创建DButil类首先要为Servlet_dao添加依赖
接下来就可以完成DBUtil类的封装了
public class DBUtil {
public static String url="jdbc:mysql://localhost:3306/exam";
public static String drive="com.mysql.jdbc.Driver";
static {
try {
Class.forName(drive);
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
}
public static Connection getConnection(){
try {
return DriverManager.getConnection(url,"root","root");
} catch (SQLException e) {
e.printStackTrace();
}
return null;
}
public static void close(ResultSet rs, Statement st, Connection con){
if(rs!=null){
try {
rs.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if(st!=null){
try {
st.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if(con!=null){
try {
con.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}
UserDao的封装
public class UserDao {
public int insertUser(User user){
int n=0;
Connection con= DBUtil.getConnection();
PreparedStatement ps=null;
ResultSet rs=null;
String sql="insert into user(name,age,gender,birthday,hobbies,createTime,updateTime)values(?,?,?,?,?,now(),now())";
try {
ps=con.prepareStatement(sql);
ps.setString(1,user.getName());
ps.setInt(2,user.getAge());
ps.setString(3,user.getGender()+"");
ps.setDate(4,new Date(user.getBirthday().getTime()));
ps.setString(5,user.getHobbies());
n= ps.executeUpdate();
} catch (SQLException e) {
e.printStackTrace();
}
finally {
DBUtil.close(rs,ps,con);
}
return n;
}
public User findId(int id){
User user=null;
Connection con=DBUtil.getConnection();
PreparedStatement ps=null;
ResultSet rs=null;
String sql="select *from user where id=?";
try {
ps=con.prepareStatement(sql);
ps.setInt(1,id);
rs=ps.executeQuery();
while (rs.next()){
user=new User();
user.setName(rs.getString("name"));
user.setAge(rs.getInt("id"));
user.setGender(rs.getString("gender").charAt(0));
user.setBirthday(rs.getDate("birthday"));
user.setHobbies(rs.getString("hobbies"));
}
} catch (SQLException e) {
e.printStackTrace();
}
finally {
DBUtil.close(rs,ps,con);
}
return user;
}
}
3、web模块Servlet_web
该模块用于前台展示信息
1. 在index.jsp页面中定义一个form表单,该表单需要向后台传递用户信息
要求:
- 使用post方式
- action: “insert”
index.jsp页面
<%@ page contentType="text/html;charset=UTF-8" language="java" %>添加用户
2、 创建一个InsertServlet类,继承HttpServlet类在该类相关方法中实现从前台获取数据,传递给Dao层进行插入
- 需要处理中文问题
- 插入成功,向前台返回"数据已成功录入!"
InsertServlet类
@WebServlet(urlPatterns = {"/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");
//获取表单数据
String name=req.getParameter("name");
String age=req.getParameter("age");
String gender=req.getParameter("gender");
String birthday=req.getParameter("birthday");
String hobbies=req.getParameter("hobbies");
//给user赋值
User user=new User();
user.setName(name);
if(age!=null&&!age.equals("")){
user.setAge(Integer.parseInt(age));
}else{
user.setAge(18);
}
user.setGender(gender.charAt(0));
user.setBirthday( DataTools.dataStrToData(birthday));
user.setHobbies(hobbies);
UserDao dao=new UserDao();
PrintWriter out= resp.getWriter();
if(dao.insertUser(user)>=1){
out.println("添加成功!!!");
}else{
out.println("添加失败!!!");
}
}
}
3、创建一个home.jsp页面 该页面定义一个form表单,用于输入用户id查询相应用户信息
要求:
- 使用get方式
- action: “update”
home.jps页面
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
查找用户
4、创建一个UpdateServlet类,继承HttpServlet类该类用于返回用户信息
要求:
- 如果查询到了用户,就将信息返回至前台
- 如果查询不到用户,就向前台返回"该用户不存在"
UpdateServlet 实现
@WebServlet(urlPatterns = {"/update.do"})
public class UpdateServlet extends HttpServlet {
@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");
String id=req.getParameter("id");
UserDao dao=new UserDao();
PrintWriter out= resp.getWriter();
if(id!=null&&!id.equals("")){
if(dao.findId(Integer.parseInt(id))!=null){
out.println(dao.findId(Integer.parseInt(id)).toString());
}else{
out.println("用户不存在");
}
}else{
out.println("用户不存在");
}
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
doGet(req,resp);
}
}
4、
- 在码云创建名为"Servlet_Exam"的仓库,仓库设置为公开仓库而非私有;
- 并使用remote方式将本地仓库与远程仓库进行连接;
- 在本地创建.gitignore文件并对其进行配置;
- .gitignore配置要求:
- 只允许上传 “.java” “.xml” “.jsp” “.html”
- 将本地项目上传至远程仓库
这时仓库就已经创建好接下来就是使用IDEA把我们做的项目使用git管理
创建.gitignore文件对上传的文件进行过滤
*.class #package file *.war *.ear #dkiff3 ignore *.orig #maven ignore target/ #eclipse ignore .settings/ .project .classpath #idea .idea/ /idea/ *.ipr *.iml *.iws # temp file *.log *.cache *.patch *.tmp # system ignore .DS_Store Thumbs.db
把文件提交到本地暂存区
然后去git仓库复制路径
如果出现异常
打开这里输入git push -u -f origin master强制提交
以上就是这个项目的全过程



