最近在Spring MVC项目需要用到异步请求,所以准备测试一下Spring MVC的异步支持以及Servlet 3.0异步支持有何不同。
1.在开启Servlet 3.0异步支持的时候有两种方法
a.通过在web.xml中的Servlet及filter中设置
<servlet> <servlet-name>dispatcher</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <load-on-startup>1</load-on-startup> <async-supported>true</async-supported> </servlet>
<filter> <filter-name>encodingFilter</filter-name> <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class> <async-supported>true</async-supported></filter>
b.在请求中设置servlet请求的属性
req.setAttribute("org.apache.catalina.ASYNC_SUPPORTED", true);
AsyncContext ctx = req.startAsync();
new Thread(new Executor(ctx)).start();
Executor类继承Runnable,实现run方法处理异步的业务逻辑。
2.在Spring MVC中开启支持在Web.xml中的Servlet及Filter中都要同时配置
<async-supported>true</async-supported>