zoukankan      html  css  js  c++  java
  • SpringMVC拦截器-性能监控

    1、编写拦截器,记录Controller方法执行时间

    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    
    import org.springframework.core.NamedThreadLocal;
    import org.springframework.web.servlet.HandlerInterceptor;
    import org.springframework.web.servlet.ModelAndView;
    
    
    /**
     * @Description:
     */
    public class TimerInterceptor implements HandlerInterceptor {
    	private NamedThreadLocal<Long> startTimeThreadLocal = new NamedThreadLocal<Long>("WatchExecuteTime");
    	
    	public boolean preHandle(HttpServletRequest arg0, HttpServletResponse arg1, Object arg2) throws Exception {
    		long beginTime = System.currentTimeMillis();			//开始时间
    		startTimeThreadLocal.set(beginTime);
    		return true;
    	}
    	
    	public void afterCompletion(HttpServletRequest req, HttpServletResponse res, Object arg2, Exception arg3) throws Exception {
    		long endTime = System.currentTimeMillis();
    		long executeTime = endTime - startTimeThreadLocal.get();
    		System.out.println(String.format("%s execute %d ms." , req.getRequestURI() , executeTime));
    	}
    	
    	public void postHandle(HttpServletRequest arg0, HttpServletResponse arg1,
    			Object arg2, ModelAndView arg3) throws Exception {
    	}
    }
    

    2、在springmvc-servlet.xml文件中配置拦截器

    对多个controller进行指定方法的拦截
    	<mvc:interceptors>
    		<mvc:interceptor>
    			<mvc:mapping path="/cargo/export/list.action"/>
    			<bean class="cn.itcast.jk.interceptor.TimerInterceptor"/>
    		</mvc:interceptor>
    		<mvc:interceptor>
    			<mvc:mapping path="/cargo/packinglist/list.action"/>
    			<bean class="cn.itcast.jk.interceptor.TimerInterceptor"/>
    		</mvc:interceptor>
    	</mvc:interceptors>
    
    
    对多个controller的所有方法拦截
    	<mvc:interceptors>
    		<mvc:interceptor>
    			<mvc:mapping path="/cargo/export/*"/>
    			<bean class="cn.itcast.jk.interceptor.TimerInterceptor"/>
    		</mvc:interceptor>
    		<mvc:interceptor>
    			<mvc:mapping path="/cargo/packinglist/*"/>
    			<bean class="cn.itcast.jk.interceptor.TimerInterceptor"/>
    		</mvc:interceptor>
    	</mvc:interceptors>
    
    
    对某目录下的controller进行拦截
    
    	<mvc:interceptors>
    		<mvc:interceptor>
    			<mvc:mapping path="/cargo/**"/>
    			<bean class="cn.itcast.jk.interceptor.TimerInterceptor"/>
    		</mvc:interceptor>
    	</mvc:interceptors>
    
     拦截整个项目的所有controller
    
    	<mvc:interceptors>
    		<mvc:interceptor>
    			<mvc:mapping path="/**"/>
    			<bean class="cn.itcast.jk.interceptor.TimerInterceptor"/>
    		</mvc:interceptor>
    	</mvc:interceptors>
    

      

  • 相关阅读:
    UIWebView 设置字体样式和行间距
    UIAlertView问题
    仿jquery的函数
    css 不换行,换行
    兼容火狐插入背景音乐
    防止屏蔽window.onload函数
    mysql
    解决手机浏览器上input 输入框导致页面放大的问题
    vue 中监听页面滚动
    WCF处理异常的方式
  • 原文地址:https://www.cnblogs.com/snow1314/p/5780356.html
Copyright © 2011-2022 走看看