Servlet异步处理的典型应用

Servlet异步处理的典型应用

更新时间:2017年04月08日

  • 网盘提取码:gtar
  • 适合对象:Java学员、Java爱好者、开发人员
  • qq号:2158476996
一键免费下载

下载介绍

更多>>
Servlet异步处理的典型应用

前面对于异步 Servlet 的使用方式均存在一个问题:站在用户角度来说,用户需要等待 才可看到最终的计算结果,用户体验很差。站在系统性能角度来说,页面的停滞是表象,实 质是当前 Servlet 线程被阻塞,被长期占用,降低了系统性能。虽然,Servlet 主线程与异步 子线程的执行的确是异步运行的,但运行效果却很差。这是为什么呢? 只要在异步子线程中一直使用着与当前异步对象相关的 request 与 response 对象,那么 异步对象就不会被销毁,异步操作就不会结束。这就引发了与异步对象相关的 Servlet 主线 程被阻塞、被占用。而结束异步操作,销毁异步对象的方式,常用的有三种:  调用异步对象 AsyncContext 的 complete()方法。  调用异步对象 AsyncContext 的 setTimeout()方法,使超时时限很短。  调用异步对象 AsyncContext 的 dispatch ()方法。 只要在异步子线程中想通过使用 response 的 PrintWriter 对象,即 out 对象,将异步子 线程的运算结果响应给客户端,那么根据销毁异步对象方式的不同,会出现两种结果:要么 用户等待,但最终可以看到运算结果;要么用户根本就看不到运算结果。而无论哪种结果, 都不是我们真正需要的结果。

对于 Servlet 的异步处理的应用,一般是将异步子线程的处理结果存放到 Session 域或 ServletContext 域中,让用户通过访问另一个指定页面来查看运算结果。 Servlet 的异步处理的最典型应用是:用户在某站点注册完毕后,需要到自己的邮箱中点 击确认链接。下面的例子就是模拟这个需求的:当用户注册完毕后,提示用户进入邮箱查看 注册结果。用户打开邮箱后,可以查看到注册结果。

Java相关视频锦集

返回顶部