1 #6

Merged
pc4gok3i8 merged 1 commits from branch_LYH into main 1 year ago

@ -16,49 +16,63 @@ import com.hua.entity.User;
* 1.
* 2.
*/
// 定义一个WebFilter用于拦截特定的请求并进行相关处理
// 配置该过滤器作用于不同的DispatcherType请求分发类型以及特定的URL模式这里拦截的是"/modifyPasswordServlet"的请求
@WebFilter(dispatcherTypes = {
DispatcherType.REQUEST,
DispatcherType.FORWARD,
DispatcherType.INCLUDE,
DispatcherType.ERROR
}
, urlPatterns = { "/modifyPasswordServlet" })
DispatcherType.REQUEST,
DispatcherType.FORWARD,
DispatcherType.INCLUDE,
DispatcherType.ERROR
}
, urlPatterns = { "/modifyPasswordServlet" })
public class ModifyPasswordFilter extends HttpFilter{
// 重写父类的doFilter方法该方法是过滤器的核心处理逻辑所在用于处理拦截到的请求
public void doFilter(HttpServletRequest request,
HttpServletResponse response, FilterChain filterChain)
HttpServletResponse response, FilterChain filterChain)
throws IOException, ServletException {
// 获取当前请求对应的HttpSession对象用于在会话中存储和获取数据比如获取已登录用户的相关信息等
HttpSession session = request.getSession();
// 从HttpSession中获取名为"user"的属性值并将其转换为User类型该对象应该是当前登录的用户信息
User user = (User) session.getAttribute("user");
// 从请求参数中获取名为"oldpassword"的参数值,即用户输入的旧密码
String oldpassword = request.getParameter("oldpassword");
// 从请求参数中获取名为"newpassword"的参数值,即用户输入的新密码
String newpassword = request.getParameter("newpassword");
// 从请求参数中获取名为"confirmpassword"的参数值,即用户再次输入用于确认的新密码
String confirmpassword = request.getParameter("confirmpassword");
// 调用check方法检查用户输入的旧密码是否与数据库中存储的该用户的旧密码一致
if(check(user,oldpassword)){
// 如果旧密码正确,进一步检查新密码和确认密码是否一致
if(newpassword.equals(confirmpassword)){
//放行
// 如果新密码和确认密码一致,则放行请求让请求继续向下传递到后续的过滤器或者目标Servlet等资源
filterChain.doFilter(request, response);
return;
}else{
// 如果新密码和确认密码不一致将相应的提示信息存储到HttpSession中用于在页面上显示给用户
session.setAttribute("message", "新密码与确认密码不一致");
}
}else{
// 如果旧密码不正确将相应的提示信息存储到HttpSession中用于在页面上显示给用户
session.setAttribute("message", "输入旧密码有误");
}
//返回修改页面
// 无论上述哪种校验不通过的情况,都重定向到修改密码页面(/modify/modifypassword.jsp让用户重新输入正确的密码信息
response.sendRedirect(request.getContextPath() + "/modify/modifypassword.jsp");
}
// 该方法用于检查用户输入的旧密码是否与数据库中存储的当前用户的旧密码一致
private boolean check(User user, String oldpassword) {
// 通过获取到的用户对象获取其存储的密码并与用户输入的旧密码进行比较如果相等则返回true表示旧密码正确
if(user.getPassword().equals(oldpassword)){
return true;
}
}
// 如果密码不相等则返回false表示旧密码错误
return false;
}
}
}
Loading…
Cancel
Save