Servlet3.0 中,ServletRequest 中提供了一个方法用于获取异步上下文对象。
startAsync 原型:AsyncContext startAsync()throws java.lang.IllegalStateException 意义:获取当前请求的异步上下文对象。
startAsync 原型:AsyncContext startAsync(ServletRequest servletRequest, ServletResponse servletResponse) throws java.lang.IllegalStateException 意义:获取指定请求的异步上下文对象。 AsyncContext 是从 Servlet3.0 开始定义的 javax.servlet 包中的一个接口,该接口是实现 Servlet 异步的核心 API。常用的方法有:
start 原型:void start(java.lang.Runnable run) 意义:开启异步子线程
addListener 原型:void addListener(AsyncListener listener) 意义:为异步线程添加监听器。该监听器用于监听异步线程的启动、完成、出错、超时事件。 3.3.5 setTimeout 原型:void setTimeout(long timeout) 意义:设置异步操作的超时时限。当到达超时时限,异步 Servlet 主线程将向客户端浏览器 发送响应,不再等待异步子线程的执行。
dispatch 原型:void dispatch(String path) 意义:该方法若使用在异步线程中,其执行相当于 ServletRequest 的 RequestDispacher 对象 的 include()方法的执行效果。即,将指定 path 页面中的数据写入到当前异步 Servlet 主线程 的响应流中,并结束异步线程。在异步线程执行过程中,Servlet 主线程会被阻塞,被占用。 该方法若使用在异步 Servlet 中,则会直接结束 Servlet 主线程,无论异步线程执行情 况如何。同时也会销毁异步对象,销毁请求 request 对象,向客户端响应后销毁响应 response 对象。但不会影响异步线程的执行。
complete 原型:void complete() 意义:结束异步操作,关闭标准输出流。
getRequest 原型:ServletRequest getRequest() 意义:获取当前的请求对象。
getResponse 原型:ServletResponse getResponse() 意义:获取当前请求的响应对象。