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>
    

      

  • 相关阅读:
    从前端回到了我的本专业网络
    相对定位与绝对定位的理解
    table( 表格)以及列表的使用
    使用editplus编写HTML页面为什么设置了UTF-8仍然中文乱码
    复习--3--对于第三堂课的总结--将两个页面相互用超链接链接到一起
    前端学习笔录--2--HTML篇--有点麻烦的加载图片
    前端学习笔录--1--HTML篇
    sublime text 有毒--无法使用快捷键利用浏览器打开HTML文件
    sublime text 插件
    sublime写网页代码,里面的中文字符会出现乱码
  • 原文地址:https://www.cnblogs.com/snow1314/p/5780356.html
Copyright © 2011-2022 走看看