在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一項中有提示,從而找到異常點。