關於 SpringMVC 攔截器(Interceptor)的實現及應用

攔截器的實現:

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=""> 不被攔截範圍(路徑);例如:後臺登錄頁面




發佈了60 篇原創文章 · 獲贊 8 · 訪問量 10萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章