🚀个人主页:欢迎访问Ali.s的首页
⏰ 最近更新:2022年7月27日
⛽ Java框架学习系列:【Spring】【SpringMVC】【Mybatis】
🔥 Java项目实战系列:【飞机大战】【图书管理系统】
⛳ Java基础学习系列:【继承】【封装】【多态】
🏆 通信仿真学习系列:【硬件】【通信】【MATLAB】
🍄 个人简介:通信工程本硕🌈、Java程序员🚴。目前只会CURD😂
💌 点赞 👍 收藏 💗留言 💬 都是我最大的动力💯
前言
这里是【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()
);
} catch (SQLException e) {
e.printStackTrace();
}
return 0;//插入失败,
}
4.constant工具类
这里统一管理需要使用的常量,防止被修改和调用,做到统一处理,统一调用的目的。
package com.song.bookmanagersystem.utils;
public class Constant {
public static final String SERVLET_TYPE_SAVE="save";
public static final String SERVLET_TYPE_UPDATE="update";
public static final String SERVLET_TYPE_DELETE="delete";
public static final String SERVLET_TYPE_QUERY="query";
public static final String SERVLET_TYPE_SQLTYPE="sqltype";
}
5.表单提交
通过action
事件触发,设置<input type="hidden" name="sqltype" value="save">
和submit
按钮进行数据的提交。
<div class="formbody">
<div class="formtitle"><span>基本信息</span></div>
<form action="/userServlet" method="post">
<ul class="forminfo">
<input type="hidden" name="sqltype" value="save">
<li><label>账号</label><input name="userName" type="text" class="dfinput" /><i>请输入想要设置的用户名</i></li>
<li><label>密码</label><input name="password" type="text" class="dfinput" /><i>请输入需要设置的密码</i></li>
<li><label>手机号</label><input name="phoneNum" type="text" class="dfinput" /><i>请输入手机号</i></li>
<li><label>邮箱</label><input name="email" type="text" class="dfinput" /><i>注意邮箱格式</i></li>
<li><label> </label><input name="" type="submit" class="btn" value="确认添加"/></li>
</ul>
</form>
</div>
三、功能测试
启动服务器,让项目在服务器中运行,然后在网页进行添加用户数据信息,在用户信息页面点击添加按钮,
页面进行跳转到田间表单页面,输入想设置的信息后点击确认添加按钮
添加完毕后,页面再次跳转回用户信息页面,并且显示刚刚添加的数据信息。
因为使用了静态模板,所以数据查询比较清楚,展现形式比较好。发现能成功添加到数据库中的用户信息,并且能够将查询到的数据返回到前端页面进行渲染,重新跳转到在用户信息页面进行显示。
总结
以上就是今天要讲的内容,使用【Servlet】
+【Jsp】
+【Mysql】
对用户添加功能进行了处理,发现能成功添加到数据库中的用户信息,并且能够将添加到的数据返回到前端页面进行渲染,将新添加的用户信息返回到前端页面进行显示,能够很好的完成功能需求。