攔截器的實現:
1.編寫攔截器類,實現HandlerInterceptor接口
package com.interceptor;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.ModelAndView;
/*
* 攔截器
*/
public class loginInterceptor implements HandlerInterceptor {
/*
* 在請求結束之後調用
*
* @see
* org.springframework.web.servlet.HandlerInterceptor#afterCompletion(javax.
* servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse,
* java.lang.Object, java.lang.Exception)
*/
public void afterCompletion(HttpServletRequest arg0, HttpServletResponse arg1, Object arg2, Exception arg3)
throws Exception {
}
/*
* 在請求被處理之後調用
*
* @see org.springframework.web.servlet.HandlerInterceptor#postHandle(javax.
* servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse,
* java.lang.Object, org.springframework.web.servlet.ModelAndView)
*/
public void postHandle(HttpServletRequest arg0, HttpServletResponse arg1, Object arg2, ModelAndView arg3)
throws Exception {
}
/*
* 在請求被處理之前調用
*
* @see org.springframework.web.servlet.HandlerInterceptor#preHandle(javax.
* servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse,
* java.lang.Object)
*/
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object arg2) throws Exception {
/*
* 設置請求的字符集編碼
*/
request.setCharacterEncoding("utf8");
/*
* 判斷用戶登錄狀態
*/
if (request.getSession().getAttribute("loginedEmployee") == null) {
request.getRequestDispatcher(request.getContextPath() + "/index.jsp").forward(request, response);
return false;
}
return true;
}
}
2.註冊攔截器到SpringMVC框架中
<!-- 註冊攔截器,並設置攔截規則 -->
<mvc:interceptors>
<mvc:interceptor>
<mvc:mapping path="/message/**" />
<bean class="com.interceptor.loginInterceptor"></bean>
</mvc:interceptor>
</mvc:interceptors>
<mvc:mapping path="/test/number.do"> 攔截範圍(路徑);例如:後臺目錄
<mvc:exclude-mapping path=""> 不被攔截範圍(路徑);例如:後臺登錄頁面