拦截器的测试

来源:互联网 发布:jpg转换矢量图软件 编辑:程序博客网 时间:2024/05/16 13:03
复制代码
  1 package com.isoftstone.iics.bizsupport.epartner.fh.HandlerInteceptor;  2   3 import javax.servlet.http.HttpServletRequest;  4 import javax.servlet.http.HttpServletResponse;  5   6 import org.springframework.core.NamedThreadLocal;  7 import org.springframework.web.servlet.HandlerInterceptor;  8 import org.springframework.web.servlet.ModelAndView;  9 import org.springframework.web.servlet.handler.HandlerInterceptorAdapter; 10  11 /** 12  * preHandle:预处理回调方法,实现处理器的预处理(如登录检查),第三个参数为响应的处理器; 13 返回值:true表示继续流程(如调用下一个拦截器或处理器); 14              false表示流程中断(如登录检查失败),不会继续调用其他的拦截器或处理器,此时我们需要通过response来产生响应; 15 postHandle:后处理回调方法,实现处理器的后处理(但在渲染视图之前),此时我们可以通过modelAndView(模型和视图对象)对模型数据进行处理或对视图进行处理,modelAndView也可能为null。 16 afterCompletion:整个请求处理完毕回调方法,即在视图渲染完毕时回调,如性能监控中我们可以在此记录结束时间并输出消耗时间,还可以进行一些资源清理,类似于try-catch-finally中的finally,但仅调用处理器执行链中preHandle返回true的拦截器的afterCompletion。 17  18  * <P>Description: --拦截器处理器测试拦截器</P> 19  * @ClassName: HandlerInteceptorTest 20  * @author 冯浩  2017年4月10日 上午11:12:01 21  * @see TODO 22  */ 23 //或继承HandlerInterceptorAdater 24 public class HandlerInteceptorTest implements HandlerInterceptor { 25      26     public NamedThreadLocal<Long> local=new NamedThreadLocal<Long>("stopWatch-startTime");//为每个线程绑定的本地线程 27  28  29     public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) 30             throws Exception { 31         long end=System.currentTimeMillis(); 32         Long start = local.get(); 33         System.out.println("\n process is "+(end-start)+" mills"); 34     } 35  36     /** 37      * 后处理回调 38      */ 39      40     public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, 41             ModelAndView modelAndView) throws Exception { 42         System.out.println("\n this is postHandle!!!"); 43          44     } 45  46     /** 47      * 预处理回调 48      */ 49      50     public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { 51         long start=System.currentTimeMillis(); 52         local.set(start); 53         System.out.println("\nthis is preHandle"); 54         return true; 55     } 56      57      58  59 } 60  61  62  63 /** 64  *  65  * <P>Description: TODO只需要实现自己需要的即可</P> 66  * @ClassName: HandlerInteceptor2 67  * @author 冯浩  2017年4月14日 下午1:26:06 68  * @see TODO 69  */ 70  71  class HandlerInteceptor2 extends HandlerInterceptorAdapter { 72      73     public NamedThreadLocal<Long> local=new NamedThreadLocal<Long>("stopWatch-startTime");//为每个线程绑定的本地线程 74  75  76     public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) 77             throws Exception { 78         long end=System.currentTimeMillis(); 79         Long start = local.get(); 80         System.out.println("\n process is "+(end-start)+" mills"); 81     } 82  83     /** 84      * 后处理回调 85      */ 86      87     public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, 88             ModelAndView modelAndView) throws Exception { 89         System.out.println("\n this is postHandle!!!"); 90          91     } 92  93     /** 94      * 预处理回调 95      */ 96      97     public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { 98         long start=System.currentTimeMillis(); 99         local.set(start);100         System.out.println("\nthis is preHandle");101         return true;102     }103     104     105 106 }
复制代码

配置文件

复制代码
 1 <?xml version="1.0" encoding="UTF-8"?> 2 <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 3     xmlns:aop="http://www.springframework.org/schema/aop" xmlns:context="http://www.springframework.org/schema/context" 4     xmlns:mvc="http://www.springframework.org/schema/mvc" 5     xsi:schemaLocation=" 6             http://www.springframework.org/schema/beans  7             http://www.springframework.org/schema/beans/spring-beans-3.0.xsd 8             http://www.springframework.org/schema/aop  9             http://www.springframework.org/schema/aop/spring-aop-3.0.xsd10             http://www.springframework.org/schema/context11             http://www.springframework.org/schema/context/spring-context-3.0.xsd12             http://www.springframework.org/schema/mvc  13             http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd">14 15     <context:component-scan annotation-config="true" base-package="com.isoftstone.iics.bizsupport.epartner.fh.HandlerInteceptor">16         <context:exclude-filter type="annotation" expression="org.springframework.stereotype.Controller" />17     </context:component-scan>18     19     <!-- <bean id="test" class="com.isoftstone.iics.bizsupport.epartner.fh.HandlerInteceptor.HandlerInteceptorTest"></bean>20     不管用21     <bean class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping">22        <property name="interceptors">23            <list>24                <bean class="com.isoftstone.iics.bizsupport.epartner.fh.HandlerInteceptor.HandlerInteceptorTest"></bean>25            </list>26        </property>27       28     </bean> 29     30     <bean name="/test" class="com.isoftstone.iics.bizsupport.epartner.fh.HandlerInteceptor.TestController"></bean>31      -->32      <mvc:interceptors>33        <mvc:interceptor>34            <mvc:mapping path="/test"/>35            <bean class="com.isoftstone.iics.bizsupport.epartner.fh.HandlerInteceptor.HandlerInteceptorTest"></bean>36        </mvc:interceptor>37     </mvc:interceptors>38 39 </beans>
复制代码

Controller

复制代码
 1 package com.isoftstone.iics.bizsupport.epartner.fh.HandlerInteceptor; 2  3 import java.lang.annotation.Annotation; 4  5 import javax.servlet.http.HttpServletRequest; 6 import javax.servlet.http.HttpServletResponse; 7  8  9 10 11 12 13 14 import org.springframework.web.bind.annotation.RequestMapping;15 import org.springframework.web.bind.annotation.RequestMethod;16 import org.springframework.web.servlet.ModelAndView;17 //@Controller18 //public class TestController{19 //    20 //    @RequestMapping(value="/test",method=RequestMethod.POST)21 //    @ResponseBody22 //    public void test(@RequestParam(value="message",defaultValue="default")String message){23 //        System.out.println(message);24 //        System.out.println("\nthis is testController");25 //    }26 //27 //}28 import org.springframework.web.servlet.mvc.Controller;29 public class TestController implements Controller{30 31     @RequestMapping(value="/test",method=RequestMethod.POST)32     @Override33     public ModelAndView handleRequest(HttpServletRequest request, HttpServletResponse response) throws Exception {34         System.out.println("this is testController-----");35         return new ModelAndView("test");36     }37 38 }
复制代码

测试

复制代码
 1 package com.isoftstone.iics.bizsupport.epartner.fh.HandlerInteceptor; 2  3  4 import java.io.IOException; 5 import java.io.InputStream; 6 import java.io.UnsupportedEncodingException; 7 import java.util.ArrayList; 8 import java.util.List; 9 10 import org.apache.commons.io.IOUtils;11 import org.apache.http.HttpEntity;12 import org.apache.http.NameValuePair;13 import org.apache.http.client.ClientProtocolException;14 import org.apache.http.client.HttpClient;15 import org.apache.http.client.entity.UrlEncodedFormEntity;16 import org.apache.http.client.methods.CloseableHttpResponse;17 import org.apache.http.client.methods.HttpPost;18 import org.apache.http.impl.client.CloseableHttpClient;19 import org.apache.http.impl.client.DefaultHttpClient;20 import org.apache.http.impl.client.HttpClients;21 import org.apache.http.message.BasicNameValuePair;22 import org.junit.Test;23 import org.springframework.context.support.ClassPathXmlApplicationContext;24 25 import org.apache.commons.io.*;26 27 28 public class TestInteceptor {29     30 31     32     @Test33     public void test() throws UnsupportedEncodingException{34        CloseableHttpClient client = HttpClients.createDefault();35        String url="http://localhost:8082/com.isoftstone.iics.bizsupport.epartner/test";36        HttpPost post=new HttpPost(url);37        List<NameValuePair> param=new ArrayList<NameValuePair>();38        param.add(new BasicNameValuePair("message","fenghao"));39        UrlEncodedFormEntity entity=new UrlEncodedFormEntity(param,"utf-8");40        post.setEntity(entity);41        try {42         CloseableHttpResponse response = client.execute(post);43         HttpEntity res = response.getEntity();44         InputStream content = res.getContent();45         System.out.println(IOUtils.toString(content));46     } catch (ClientProtocolException e) {47         e.printStackTrace();48     } catch (IOException e) {49         e.printStackTrace();50     }51     52         53     }54 55 }
复制代码
原创粉丝点击