javascript
Spring MVC handler interceptors example--转载
原文地址:http://www.mkyong.com/spring-mvc/spring-mvc-handler-interceptors-example/
Spring MVC allow you to intercept web request through handler interceptors. The handler interceptor have to implement the?HandlerInterceptor?interface, which contains three methods :
In this tutorial, you will create two handler interceptors to show the use of the?HandlerInterceptor.
It’s recommended to extend the?HandlerInterceptorAdapter?for the convenient default implementations.
1. ExecuteTimeInterceptor
Intercept the before and after controller execution, log the start and end of the execution time, save it into the existing intercepted controller’s modelAndView for later display.
File : ExecuteTimeInterceptor.java
package com.mkyong.common.interceptor;import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse;import org.apache.log4j.Logger; import org.springframework.web.servlet.ModelAndView; import org.springframework.web.servlet.handler.HandlerInterceptorAdapter;public class ExecuteTimeInterceptor extends HandlerInterceptorAdapter{private static final Logger logger = Logger.getLogger(ExecuteTimeInterceptor.class);//before the actual handler will be executedpublic boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler)throws Exception {long startTime = System.currentTimeMillis();request.setAttribute("startTime", startTime);return true;}//after the handler is executedpublic void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView)throws Exception {long startTime = (Long)request.getAttribute("startTime");long endTime = System.currentTimeMillis();long executeTime = endTime - startTime;//modified the exisitng modelAndViewmodelAndView.addObject("executeTime",executeTime);//log itif(logger.isDebugEnabled()){logger.debug("[" + handler + "] executeTime : " + executeTime + "ms");}} }2. MaintenanceInterceptor
Intercept before the controller execution, check if the current time is in between the maintenance time, if yes then redirect it to maintenance page; else continue the execution chain.
File : MaintenanceInterceptor.java
package com.mkyong.common.interceptor;import java.util.Calendar;import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse;import org.springframework.web.servlet.handler.HandlerInterceptorAdapter;public class MaintenanceInterceptor extends HandlerInterceptorAdapter{private int maintenanceStartTime;private int maintenanceEndTime;private String maintenanceMapping;public void setMaintenanceMapping(String maintenanceMapping) {this.maintenanceMapping = maintenanceMapping;}public void setMaintenanceStartTime(int maintenanceStartTime) {this.maintenanceStartTime = maintenanceStartTime;}public void setMaintenanceEndTime(int maintenanceEndTime) {this.maintenanceEndTime = maintenanceEndTime;}//before the actual handler will be executedpublic boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler)throws Exception {Calendar cal = Calendar.getInstance();int hour = cal.get(cal.HOUR_OF_DAY);if (hour >= maintenanceStartTime && hour <= maintenanceEndTime) {//maintenance time, send to maintenance page response.sendRedirect(maintenanceMapping);return false;} else {return true;}} }3. Enable the handler interceptor
To enable it, put your handler interceptor class in the handler mapping "interceptors" property.
<beans xmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd"><bean class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping"><property name="mappings"><props><prop key="/welcome.htm">welcomeController</prop></props></property><property name="interceptors"><list><ref bean="maintenanceInterceptor" /><ref bean="executeTimeInterceptor" /></list></property></bean><beanclass="org.springframework.web.servlet.mvc.support.ControllerClassNameHandlerMapping"><property name="interceptors"><list><ref bean="executeTimeInterceptor" /></list></property></bean><bean id="welcomeController" class="com.mkyong.common.controller.WelcomeController" /><bean class="com.mkyong.common.controller.MaintenanceController" /><bean id="executeTimeInterceptor" class="com.mkyong.common.interceptor.ExecuteTimeInterceptor" /><bean id="maintenanceInterceptor" class="com.mkyong.common.interceptor.MaintenanceInterceptor"><property name="maintenanceStartTime" value="23" /><property name="maintenanceEndTime" value="24" /><property name="maintenanceMapping" value="/SpringMVC/maintenance.htm" /></bean><bean id="viewResolver"class="org.springframework.web.servlet.view.InternalResourceViewResolver"><property name="prefix"><value>/WEB-INF/pages/</value></property><property name="suffix"><value>.jsp</value></property></bean></beans>?
轉載于:https://www.cnblogs.com/davidwang456/p/4877151.html
總結
以上是生活随笔為你收集整理的Spring MVC handler interceptors example--转载的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: secureCRt中文乱码问题
- 下一篇: Writing Images to th