.Net轉Java自學之路—SpringMVC框架篇九(攔截器)
阿新 • • 發佈:2019-04-07
pat java exce 需要 map public 路徑 lse div
定義攔截器需要實現HandlerInterceptor接口,該接口中由三個方法:afterCompletion、postHandle、preHandle。
public class TestHandlerInterceptor implements HandlerInterceptor { /** * 執行Handler後執行。 * 可以在該方法進行統一的異常處理、統一的日誌處理 */ @Override public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex)throws Exception { } /** * 進入Handler方法之後,返回ModelAndView之前執行。 * 應用場景從ModelAndView出發,將公用的模型數據在該方法傳到視圖。 * 也可以統一指定視圖。 */ @Override public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView)throws Exception { } /** * 進入Handler方法之前執行 * 該方法可以用於身份認證、身份授權。 * 如身份認證未通過,需要此方法攔截不再向下執行。 */ @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { returnfalse;//false:攔截。true:放行 } }
攔截器配置:
1、SpringMVC的攔截器是針對HandlerMapping進行攔截設置。
若在某個HandlerMapping中配置攔截,經過該HandlerMapping映射成功的Handler最終使用該攔截器。
<bean class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping"> <property name="interceptors"> <list> <ref bean="handlerInterceptor1"/> <ref bean="handlerInterceptor2"/> </list> </property> </bean> <bean id="handlerInterceptor1" class="handlerInterceptor1全路徑"/> <bean id="handlerInterceptor2" class="handlerInterceptor2全路徑"/>
2、SpringMVC可以配置類似於全局的攔截器,SpringMVC框架將配置的類似全局的攔截器註入到每個HandlerMapping中。
<!-- 攔截器 --> <mvc:interceptors> <!-- 多個攔截器,順序執行 --> <mvc:interceptor> <!-- /**:表示所有url包含子url路徑 --> <mvc:mapping path="/**"/> <bean class="handlerInterceptor1全路徑"></bean> </mvc:interceptor> <mvc:interceptor> <mvc:mapping path="/**"/> <bean class="handlerInterceptor2全路徑"></bean> </mvc:interceptor> </mvc:interceptors>
.Net轉Java自學之路—SpringMVC框架篇九(攔截器)