💌 点赞 👍 收藏 💗留言 💬 都是我最大的动力💯
文章目录
前言
这里是【JAVASE】
项目实战的第二节课,接着前天的用户信息查询功能继续做,今天做的是用户的添加功能,使用【servlet】
、【Jsp】
、【Mysql】
来实现该功能。
一、需求分析
在前面用户信息的查询功能实现后,在用户信息页面有【增删改】
的按钮。
实现用户信息的增加、修改、删除的操作。下面对增加的功能进行需求分析。
当点击添加按钮,就是用户发送了请求,这里由于在UserServlet
中都是POST
请求,所以后面在点击按钮触发事件时,应将action
的method
设置为post
方式。用户发送请求后controller
层的Servlet
就应该要处理请求,而根据MVC
架构,controller
需要调用service
层的方法,所以将业务逻辑交给Service
层进行处理,service
的处理有需要对请求处理的数据与dao
层的数据进行比对,dao
层访问数据库信息,对请求数据操作进行校验,并对操作返回数据响应。
二、功能实现
在dao
层和service
层中创建接口以及工具constant
类。constant
类为了处理项目中需要的常量,防止所使用的量被修改后使用,方便统一管理常量信息。
1.控制层
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
String type=req.getParameter(Constant.SERVLET_TYPE_SQLTYPE);
if (type!=null && !"".equals(type)){
//对请求进行判断,针对不同的请求进行不同的处理
if(Constant.SERVLET_TYPE_SAVE.equals(type)){
//进行添加操作
saveUser(req, resp);
}else if (Constant.SERVLET_TYPE_UPDATE.equals(type)){
//进行更新操作
}else if (Constant.SERVLET_TYPE_DELETE.equals(type)){
//进行删除操作
}else if(Constant.SERVLET_TYPE_QUERY.equals(type)){
//进行查询操作
queryUser(req, resp);
}
}else{
/\*\*
\* 上面对非空进行判断,如果为空,也要进行数据库信息比对,
\* 所以也是进行查询操作
\*/
queryUser(req,resp);
}
}
为了避免代码重复,将处理的方法抽象出来,便于调用函数,使代码更加简洁。下面是提交表单和查询用户信息的方法。
private void saveUser(HttpServletRequest req, HttpServletResponse resp) throws IOException {
//获取表单提交信息
User user=new User();
user.setUserName(req.getParameter("userName"));
user.setPassword(req.getParameter("password"));
user.setPhoneNum(req.getParameter("phoneNum"));
user.setEmail(req.getParameter("email"));
//记录影响行数
Integer count= userService.addUser(user);
//是否成功,进行事务的处理
if (count>0){
//重定向查询
resp.sendRedirect("/userServlet");
}else{
//失败就跳转失败页面
System.out.println("插入失败……");
}
}
//查询用户信息
private void queryUser(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
//通过service进行信息查询
List<User> list=userService.getUser(null);
//进行绑定
req.setAttribute("list",list);
//跳转请求
req.getRequestDispatcher("/user/user.jsp").forward(req, resp);
}
2.业务层
在接口中调用添加用户的方法,注意返回值为Integer
,表示影响的数据库的数据条数。
package com.song.bookmanagersystem.service;
import com.song.bookmanagersystem.entity.User;
import java.util.List;
public interface UserService {
List<User> getUser(User user);
//业务层添加用户
Integer addUser(User user);
}
在实现类实现所调用的接口就能完成业务层的处理。
package com.song.bookmanagersystem.service;
import com.song.bookmanagersystem.entity.User;
import java.util.List;
public interface UserService {
List<User> getUser(User user);
//业务层添加用户
Integer addUser(User user);
}
3.持久层
在dao层要完成信息的查库操作,与数据库的信息进行比对,并返回响应的结果,这是添加的操作,所以返回响应的结果是是否插入成功,以添加成功的条数来作为结果返回。
@Override
public Integer save(User user) {
QueryRunner queryRunner = DBUtils.getQueryRunner();
//创建sql语句
String sql="insert into t\_user(user\_name, password, phone\_num, email, is\_deleted, salt) VALUES (?,?,?,?,?,?)";
try {
return queryRunner.update(sql,user.getUserName()
,user.getPassword(),user.getPhoneNum(),user.getEmail()
,user.getIsDeleted(),user.getSalt()
# 最后
分享一些资料给大家,我觉得这些都是很有用的东西,大家也可以跟着来学习,查漏补缺。
**《Java高级面试》**
![](https://img-blog.csdnimg.cn/img_convert/a549058f7a37c24ba62d92476675bab9.webp?x-oss-process=image/format,png)
**《Java高级架构知识》**
![](https://img-blog.csdnimg.cn/img_convert/cc0083c7bd2431abfd61f5ce3c46edb1.webp?x-oss-process=image/format,png)
**《算法知识》**
![](https://img-blog.csdnimg.cn/img_convert/c02c13094b04cc42c0f87b946b513585.webp?x-oss-process=image/format,png)
以跟着来学习,查漏补缺。
**《Java高级面试》**
[外链图片转存中...(img-KXHJJSLQ-1714512749515)]
**《Java高级架构知识》**
[外链图片转存中...(img-zM4FlUSq-1714512749515)]
**《算法知识》**
[外链图片转存中...(img-S4beXipQ-1714512749516)]
> **本文已被[CODING开源项目:【一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码】](https://bbs.csdn.net/topics/618154847)收录**