错误代码:
public class InitialPwdInterceptor extends HandlerInterceptorAdapter {
@Override
public boolean preHandle(HttpServletRequest request,
HttpServletResponse response, Object handler) throws Exception {
String userName = SsoUserUtil.getUserFromSession(request.getSession());
if (userName != null) {
String DbPwd = SsoService.Instance().getSsoPwdByName(userName);
String InitialPwd = MD5Util.md5Hex("123456");
if (DbPwd.equals(InitialPwd)) {
//如果密码没修改重定向到修改密码
response.sendRedirect("/v2/common/teacherPwd.html");
}
}
return true;
}
}
错误信息:java.lang.IllegalStateException: Cannot forward after response has been committed
原因:response重复提交
修改后代码1:
public class InitialPwdInterceptor extends HandlerInterceptorAdapter {
@Override
public boolean preHandle(HttpServletRequest request,
HttpServletResponse response, Object handler) throws Exception {
String userName = SsoUserUtil.getUserFromSession(request.getSession());
if (userName != null) {
String DbPwd = SsoService.Instance().getSsoPwdByName(userName);
String InitialPwd = MD5Util.md5Hex("123456");
if (DbPwd.equals(InitialPwd)) {
//如果密码没修改重定向到修改密码
response.sendRedirect("/v2/common/teacherPwd.html");
return false;
}
}
return true;
}
}
错误:死循环
原因:重定向成功,但是没有return true;
修改密码2:
public class InitialPwdInterceptor extends HandlerInterceptorAdapter {
@Override
public boolean preHandle(HttpServletRequest request,
HttpServletResponse response, Object handler) throws Exception {
String url = request.getServletPath();
if ("/v2/common/teacherPwd.html".equals(url)) {
//如果是老师修改密码页面了,直接过
return Boolean.TRUE;
}
String userName = SsoUserUtil.getUserFromSession(request.getSession());
if (userName != null) {
String DbPwd = SsoService.Instance().getSsoPwdByName(userName);
String InitialPwd = MD5Util.md5Hex("123456");
if (DbPwd.equals(InitialPwd)) {
//如果密码没修改重定向到修改密码
response.sendRedirect("/v2/common/teacherPwd.html");
return false;
}
}
return true;
}
}
成功
思考:要理解spring mvc 拦截器 HandlerInterceptor 的使用。