springMVC--(講解7)攔截器

####1.鏈接器簡介 springMVC攔截器相似於servlet中的過濾器filter,用於對處理器(controller)進行預處理和後處理。
####2.常見應用場合
1.日誌記錄:記錄請求信息,便於對請求信息進行監控、統計等。
2.權限檢查:例如登錄檢測,若是沒有登錄則直接跳往登錄頁面。
3.通用行爲:讀取cookie獲得用戶信息,存儲起來,方便程序的後續使用。
攔截器的本質也是AOP,換句話說,符合橫切關注點的全部功能均可以放在攔截器實現。
####3.配置信息
在spring-mvc的配置文件中添加以下代碼前端

<!-- 攔截器 -->
	<mvc:interceptors>
		<mvc:interceptor>
			<!-- 容許全部的請求經過 -->
			<mvc:mapping path="/**"/>
			<!-- 哪些不被攔截 -->
			<mvc:exclude-mapping path=""/>
			<bean class="com.test.spring.interceptors.MyInterceptors"></bean>
		</mvc:interceptor>
	</mvc:interceptors>

新建立一個bean,實現HandlerInterceptor接口,以下java

package com.test.spring.interceptors;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.ModelAndView;

public class MyInterceptors implements HandlerInterceptor {

	@Override
	public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler)
			throws Exception {
		// TODO Auto-generated method stub
		return false;
	}

	@Override
	public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler,
			ModelAndView modelAndView) throws Exception {
		// TODO Auto-generated method stub

	}

	@Override
	public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex)
			throws Exception {
		// TODO Auto-generated method stub

	}

}

####4.適配器方法介紹
1.preHandle:預處理方法
全部的請求都是先到這裏,返回true時,再去controller;在這裏能夠獲取到request的全部信息,一般咱們會作 登錄檢查。
2.postHandle:後處理方法
處理器執行完請求信息後須要走這裏(可是尚未渲染視圖/沒有返回json數據),在這裏咱們能夠經過modelAndView對模型數據進行處理。
3.afterCompletion:請求/響應完畢
返回信息了,視圖顯示出來了/json數據返給前端了。在這裏通常作一些資源清理的工做,相似於try-catch-finally中的finally同樣。
####5.運行示例web

攔截器輸出:處理器前-------
-----進入controller-->service-->serviceImpl-->獲取數據-->..>controller
-----controller 執行retuen後  
攔截器輸出:處理器後-------
-----Successfully completed request,說明請求完成,此時視圖已經顯示出來了
攔截器輸出:處理器返回信息後------
相關文章
相關標籤/搜索