码迷,mamicode.com
首页 > Web开发 > 详细

JSP详细篇——异步处理

时间:2014-12-02 09:02:30      阅读:263      评论:0      收藏:0      [点我收藏+]

标签:异步处理

异步处理

一个Servlet的工作流程是:首先,Servlet接收到请求后,需要对请求修改的数据进行一些预处理。接着调用业务接口的某些方法,以完成业务处理。最后根据处理结果提交响应。至此,Servlet线程结束。在此过程中,如果任何一个任务没有结束,Servlet线程就处于阻塞状态,知道业务方法执行完毕。对于较大的应用,很容易造成程序性能的降低。

Servlet3.0针对这一问题做出了突破性的工作,现在通过使用Servlet3.0的异步处理机制可以将之前的Servlet处理流程调整为以下过程。

首先,Servlet接受到请求之后,可能需要对请求携带的数据进行预处理

接着,Servlet线程将请求转交给一个异步线程来执行业务处理,线程本身返回至容器,此时Servlet还没有生成响应数据,异步线程处理完业务之后,可以直接生成响应数据,或者将请求继续转发给其他的Servlet。这样,Servlet线程不再是一直处于阻塞状态以等待业务逻辑的处理,而是启动异步之后直接返回。

异步处理机制可以应用于Servlet和过滤器两种组件,由于异步处理的工作模式与普通工作模式有本质的区别,在默认的情况下,并没有开启异步处理特性,如果希望使用该特性,则必须按如下的方法启用:

@WebServlet@WebFilter注释提供了asyncSupported属性,默认该属性的取值为false,要启用异步处理支持,只需将该属性的值设置为true即可。以@WebFilter为例,其配置方式如下:

范例:

@WebFilter@WebFilter注释实现异步处理

@WebFilter(urlPatterns=”/chFilter”,asyncSupported = true)

Public class DemoFilter implements Filter{

}

 

如果选择在web.xml中对Servlet或者过滤器进行配置,可以在Servlet3.0<servlet><filter>标签中增加<async-supported>子标签,该标签的默认取值为false,要启用异步处理支持,则将其设置为true即可。

范例:

web.xml中配置异步处理

<servlet>

<servlet-name>CharServlet</servlet-name>

<servlet-class>footmark.servlet.CharServlet</servlet-class>

<async-supported>true</async-supported>

</servlet>



bubuko.com,布布扣

JSP详细篇——异步处理

标签:异步处理

原文地址:http://blog.csdn.net/yaguanzhou2014/article/details/41663001

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!