在springmvc的拦截器的开发中遇到以下问题,
拦截器的代码如下:
package com.tz.springmvc.sysmanage.interceptor;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.ModelAndView;
public class LoginInterceptor implements HandlerInterceptor{
@Override
public boolean preHandle(HttpServletRequest request,
HttpServletResponse response,
Object arg2) throws Exception {
System.out.println("in preHandle....");
//先过滤掉匿名访问地址
String url = request.getRequestURI();
if(url.indexOf("/login.do")>=0){
return true;
}
HttpSession session = request.getSession();
String loginName=(String) session.getAttribute("loginName");
if(loginName!=null){
return true;
}else{
System.out.println("没有登陆过");
request.getRequestDispatcher("/login.jsp").forward(request, response);
}
return false;
}
@Override
public void postHandle(HttpServletRequest request, HttpServletResponse arg1,
Object response, ModelAndView arg3) throws Exception {
System.out.println("in postHandle....");
}
@Override
public void afterCompletion(HttpServletRequest request,
HttpServletResponse response, Object arg2, Exception arg3)
throws Exception {
System.out.println("in afterCompletion....");
}
}
牧牛遛马在写这篇博客的过程中找到了异常点:
原来是在设置session时,把session的设置写在了service层接口的service方法中,出现了参数类型不匹配的情况。
把session参数修改到controller包下面的LoginController类中,异常消除。
而在出现异常时,前台页面打印出来的信息不能够全面,后台打印的异常信息中有details一项中有提示,从而找到异常点。