博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
深入理解Servlet3.0异步请求
阅读量:6976 次
发布时间:2019-06-27

本文共 1746 字,大约阅读时间需要 5 分钟。

异步请求的基础概念

异步请求最直接的用法就是处理耗时业务,Http协议是单向的,只能客户端拉不能服务器主推.

异步请求的核心原理主要分为两大类:1.轮询.2长连接

轮询:就是定时获取返回结果.

长连接:客户端请求服务器后,连接不关闭,只有异步请求处理完成后才关闭连接.

Servlet3.0对异步请求的支持

  在Servlet3.0对异步请求的支持非常简单,只需要在请求的过程中调用request的startAsync即可,返回值为AsyncContext.AsyncContext为异步请求容器,它的作用就是保存与异步请求相关的所有信息,类似Servlet中的ServletContext.需要注意的是多次调用startAsync返回的是同一个AsyncContext.

public interface AsyncContext {    String ASYNC_REQUEST_URI = "javax.servlet.async.request_uri";    String ASYNC_CONTEXT_PATH = "javax.servlet.async.context_path";    String ASYNC_PATH_INFO = "javax.servlet.async.path_info";    String ASYNC_SERVLET_PATH = "javax.servlet.async.servlet_path";    String ASYNC_QUERY_STRING = "javax.servlet.async.query_string";    ServletRequest getRequest();    ServletResponse getResponse();//获取response    boolean hasOriginalRequestAndResponse();    void dispatch();//用于将请求发往新地址(发往原来的地址)    void dispatch(String var1);//用于将请求发往新地址(发往指定的地址)    void dispatch(ServletContext var1, String var2);//用于将请求发往新地址(发往指定应用的指定地址)    void complete();//用于通知容器,请求已经处理完成.    void start(Runnable var1);//用于启动实际处理线程    void addListener(AsyncListener var1);//用于添加监听器    void addListener(AsyncListener var1, ServletRequest var2, ServletResponse var3);    
T createListener(Class
var1) throws ServletException; void setTimeout(long var1);//设置超时时间 long getTimeout();}

Servlet3.0处理异步请求三部曲

1.配置Servlet时将async-supported设置为true.

2.在servlet处理方法中调用Request的startAsync方法启动异步处理.

3.使用上面返回的AsyncContext处理异步请求.

配置web.xml

WorkServlet
controller.WorkSerlet
true
WorkServlet
/work

 

转载于:https://www.cnblogs.com/fxust/p/7905688.html

你可能感兴趣的文章
向继电器发送socket请求(python+java)
查看>>
20165201 2017-2018-2 《Java程序设计》第一周学习总结
查看>>
7. WebDriver API
查看>>
动软.NET代码生成器实例教程使用总结
查看>>
spring框架学习--依赖注入
查看>>
C语言难点4之动态内存分配
查看>>
[模板] 杜教筛 && bzoj3944-Sum
查看>>
第一次作业
查看>>
SpringBoot2.x的Maven依赖配置
查看>>
17.11.16
查看>>
使用proxyTable 解决webpack+vue-cli+vue-resource中跨域问题
查看>>
页面制作部分之PS切图
查看>>
mysql 案例~mysql元数据的sql统计
查看>>
Python之美--Decorator深入详解
查看>>
最短路径算法-Dijkstra
查看>>
Postgresql数据库的一些字符串操作函数
查看>>
《几何与代数导引》例2.7.1
查看>>
华硕ESC4000G2服务器如何使用NVIDIA GRID K2及NVIDIA Tesla K10显卡——VMware ESXI 5.5虚拟机版...
查看>>
Cookie的简单使用
查看>>
部署项目到jetty
查看>>