拦截器的测试
来源:互联网 发布: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 }
阅读全文
0 0
- 拦截器的测试
- Struts2day04测试程序的执行效率,拦截器栈,在Action中覆盖拦截器的属性值
- struts2用户登录拦截器测试
- springmvc配置拦截器及测试详解
- struts2中拦截器的全局拦截和自定义拦截
- Struts2拦截器的拦截顺序
- struts2的拦截器拦截ajax请求
- spring拦截器 拦截springMVC的controller
- webwork的拦截器- -
- Struts2的拦截器
- 拦截器的使用
- Struts2的拦截器
- 拦截器的使用
- 拦截器的学习
- Struts2的拦截器
- struts2的拦截器
- Struts2的拦截器
- 拦截器的使用
- 生成器
- js全选checkbox
- 自己写的Unity聊天工具
- codeforces Gym
- 【Hadoop学习】之 伪分布式安装
- 拦截器的测试
- 一周一更之snprintf踩坑记
- define总结
- 抗锯齿
- spring 集合注入案例-票台接口设计
- android studio gradle dependences 包存放在什么位置
- Android 贝塞尔曲线解析
- 背包那些经典的例子( 下 )
- 由一个HADOOP_HOME and hadoop.home.dir are unset报错引起的window环境连接调试远程hadoop的一系列问题