日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 前端技术 > javascript >内容正文

javascript

Spring MVC handler interceptors example--转载

發布時間:2025/4/5 javascript 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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 :

  • preHandle()?– Called before the handler execution, returns a boolean value, “true” : continue the handler execution chain; “false”, stop the execution chain and return it.
  • postHandle()?– Called after the handler execution, allow manipulate the ModelAndView object before render it to view page.
  • afterCompletion()?– Called after the complete request has finished. Seldom use, cant find any use case.
  • In this tutorial, you will create two handler interceptors to show the use of the?HandlerInterceptor.

  • ExecuteTimeInterceptor?– Intercept the web request, and log the controller execution time.
  • MaintenanceInterceptor?– Intercept the web request, check if the current time is in between the maintenance time, if yes then redirect it to maintenance page.
  • Note
    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--转载的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。