JavaWeb 27 Smbms 密码修改的实现
8.4 Smbms 密码修改的实现密码修改 肯定要和 数据库打交道。所以 是 DAO --> Service --> ServletUserDao 添加一个 修改当前用户密码的 方法//修改当前用户密码@Overridepublic int updatePwd(Connection connection, int id, int password) throws SQLExceptio
·
8.4 Smbms 密码修改的实现
密码修改 肯定要和 数据库打交道。所以 是 DAO --> Service --> Servlet
- UserDao 添加一个 修改当前用户密码的 方法
//修改当前用户密码
@Override
public int updatePwd(Connection connection, int id, int password) throws SQLException {
int num = 0;
if (connection != null) {
String sql = "update `smbms_user` set `userPassword`=? where `id`=?";
PreparedStatement pstm = null;
Object[] params = {password, id};
num = BaseDao.execute(connection, sql, params, pstm);
BaseDao.closeResource(null, pstm, null);
}
return num;
}
- 添加一个 业务层的 代码
@Override
public boolean updatePwd(int id, int password) throws SQLException {
Connection connection = BaseDao.getConnection();
boolean flag = false;
if(userDao.updatePwd(connection,id,password) > 0){
flag = true;
}
BaseDao.closeResource(connection,null,null);
return flag;
}
- 添加 Servlet 代码
package com.muquanyu.servlet.user;
import com.muquanyu.pojo.SmbmsUser;
import com.muquanyu.service.user.UserService;
import com.muquanyu.service.user.UserServiceImpl;
import com.muquanyu.util.Constants;
import com.mysql.cj.util.StringUtils;
import jakarta.servlet.ServletException;
import jakarta.servlet.http.HttpServlet;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;
import jakarta.servlet.http.HttpSession;
import java.io.IOException;
import java.sql.SQLException;
public class UserServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
//super.doGet(req, resp);
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
HttpSession session = req.getSession();
SmbmsUser user = (SmbmsUser)session.getAttribute(Constants.USER_SESSION);
System.out.println(user);
String newPassword = req.getParameter("newpassword");
System.out.println(newPassword);
boolean flag = false;
if(user != null && newPassword.equals("") != true && newPassword.length()>=7){
UserService userService = new UserServiceImpl();
try {
flag = userService.updatePwd(user.getId(), newPassword);
} catch (SQLException e) {
e.printStackTrace();
}
System.out.println(flag);
if(flag){
req.setAttribute("message","修改密码成功,请退出使用新密码登录!");
//密码修改成功,移除usersession
session.removeAttribute(Constants.USER_SESSION);
}else{
req.setAttribute("message","修改密码失败");
}
}else{
req.setAttribute("message","新密码有问题");
}
req.getRequestDispatcher("pwdmodify.jsp").forward(req, resp);
//super.doPost(req, resp);
}
}
- 实现 Servlet 复用
什么叫 实现 Servlet 的复用呢?
答:我们之前 每写一个 Servlet 只是 对应一个 JSP 进行处理,但是 如果 我们 想要 多个 JSP 文件 对应一个 Servlet 进行 处理,该如何实现呢? 很明显的是,我们有一个 简单的思想,那就是 利用逻辑判断代码 去 区分 它是 哪个 JSP 文件发来的请求!
如果 我们 可以 区分 是哪个 JSP 文件,那么 我们就可以 根据这个 文件,去写 相应 的 处理代码。
而为了 看起来 更加的 有结构化,我们还可以 把 处理每一个 JSP 文件的 Servlet 代码 提取出来 变成 一个一个的 方法。
那么 怎么 才能够 区分 每个 JSP 文件呢?
答:在 每个 JSP 文件里面 留下 一个 标记。刻一个标记!
类似于这种 留下 一个 hidden 隐藏域 的 东西,里面有 name 参数,还有 还有 参数 的值。 我们就可以根据 判断 当前 请求 的 method 是否为空,而且 这个 method 的值 是否为 savepwd 来 进行 该 jsp文件 的 确认!
- 提取为方法
public void updatePwd(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
HttpSession session = req.getSession();
SmbmsUser user = (SmbmsUser)session.getAttribute(Constants.USER_SESSION);
System.out.println(user);
String newPassword = req.getParameter("newpassword");
System.out.println(newPassword);
boolean flag = false;
if(user != null && newPassword.equals("") != true && newPassword.length()>=7){
UserService userService = new UserServiceImpl();
try {
flag = userService.updatePwd(user.getId(), newPassword);
} catch (SQLException e) {
e.printStackTrace();
}
System.out.println(flag);
if(flag){
req.setAttribute("message","修改密码成功,请退出使用新密码登录!");
//密码修改成功,移除usersession
session.removeAttribute(Constants.USER_SESSION);
}else{
req.setAttribute("message","修改密码失败");
}
}else{
req.setAttribute("message","新密码有问题");
}
req.getRequestDispatcher("pwdmodify.jsp").forward(req, resp);
}
- 进行JSP 文件的 判断
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
String method = req.getParameter("method");
if(method.equals("savepwd") && method != null){
this.updatePwd(req,resp);
}
//super.doPost(req, resp);
}
更多推荐
已为社区贡献1条内容
所有评论(0)