新增用户非常简单,前端拿到数据传递给后端然后往数据库里一存就完事了~
首先我们看一下新增用户的页面:add.jsp,
可以看到提交的页面:insert 和方式post,但是少了密码的添加,所以我们手动给他加上:
<tr>
<td><font size="4">密码:</font></td>
<td><input type="text" name="pwd" class="form-control"></td>
</tr>
所以我们需要新建一个servlet进行处理:
package com.atm.servlet;
import com.atm.pojo.User;
import com.atm.service.UserService;
import com.atm.service.impl.UserServiceImpl;
import javax.servlet.*;
import javax.servlet.http.*;
import javax.servlet.annotation.*;
import java.io.IOException;
//用户数据增加
@WebServlet("/insert")
public class UserAddServlet extends HttpServlet {
private UserService userService=new UserServiceImpl();
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
request.setCharacterEncoding("utf-8");
//获得参数
String icno=request.getParameter("icno");
String name=request.getParameter("name");
String pwd=request.getParameter("pwd");
String mobile=request.getParameter("mobile");
String idcard=request.getParameter("idcard");
double balance=0;
if(request.getParameter("balance")!=null){
balance=Double.parseDouble(request.getParameter("idcard"));
User user=new User();
user.setIcno(icno);
user.setBalance(balance);
user.setName(name);
user.setPwd(pwd);
user.setMobile(mobile);
user.setIdcard(idcard);
try {
//调用业务进行数据添加
boolean result = userService.insert(user);
if (result){
//跳转到列表页面显示
response.sendRedirect("/list");
}else {
response.getOutputStream().print("添加失败");
}
}catch (Exception e){
e.printStackTrace();
}
}
}
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
}
}
返回接口添加新增方法:
//用户新增
public boolean insert(User user)throws Exception;
实现类进行实现:
//用户新增
public boolean insert(User user)throws Exception{
int num =userDao.insertUser(user);
if(num>=1){
return true;
}else{
return false;
}
}
数据层进行处理:
//用户新增
public int insertUser(User user) throws Exception{
Connection connection= DBUtils.getConnection();
PreparedStatement preparedStatement = connection.prepareStatement("insert into user values(?,?,?,?,?,?) ");
preparedStatement.setString(1,user.getIcno());
preparedStatement.setString(2,user.getName());
preparedStatement.setString(3,user.getPwd());
preparedStatement.setString(4,user.getMobile());
preparedStatement.setString(5,user.getIdcard());
preparedStatement.setDouble(6,user.getBalance());
int num = preparedStatement.executeUpdate();
DBUtils.release(connection,preparedStatement,null);
return num;
}
这里代码就完成了,我们重启一下系统看看新增是否成功:
新增成功~
但是我们的增删改查操作都是每个请求手动修改的编码,如果每个请求都要加上这一行代码,
得累死,所以我们写一个过滤器,对所有请求进行过滤和编码修改:
package com.atm.utill;
import javax.servlet.*;
import javax.servlet.annotation.*;
import java.io.IOException;
//编码过滤器,只对POST请求有用
@WebFilter("/*")
public class CharacterEncodingFilter implements Filter {
public void destroy() {
}
@Override
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws ServletException, IOException {
request.setCharacterEncoding("utf-8");
System.out.println("请求被过滤为utf-8");
chain.doFilter(request, response);
}
public void init(FilterConfig config) throws ServletException {
}
}
然后把之前我们写的过滤方法进行注释:
重启系统运行一下,然后进行一下增删改查的操作,
发现过滤成功啦~
新增用户和过滤器操作就全部完成了,需要注意的是过滤器只对POST请求生效~GET请求乱码需要手动处理,不过新版本在前端已经进行处理了,所以不用管它了~
实现代码已上传~~