Servlet3发布好几年了,又有多少人知道它的新特性呢?下面简单介绍下。

主要增加了以下特性:

1、异步处理支持

2、可插性支持

3、注解支持,零配置,可不用配置web.xml

...

异步处理是什么鬼?

直接操起键盘干。

@WebServlet(name = "index", urlPatterns = { "/" }, asyncSupported = true)

public class IndexServlet extends HttpServlet {

@Override

protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {

resp.setContentType("text/html");

try {

PrintWriter out = resp.getWriter();

out.println("servlet started.
");

out.flush();

AsyncContext asyncContext = req.startAsync();

asyncContext.addListener(getListener());

asyncContext.start(new IndexThread(asyncContext));

out.println("servlet end.
");

out.flush();

} catch (Exception e) {

e.printStackTrace();

}

}

/**

* 异步线程结果监听

* @author javastack

* @return

*/

private AsyncListener getListener() {

return new AsyncListener() {

public void onComplete(AsyncEvent asyncEvent) throws IOException {

asyncEvent.getSuppliedResponse().getWriter().close();

System.out.println("thread completed.");

}

public void onError(AsyncEvent asyncEvent) throws IOException {

System.out.println("thread error.");

}

public void onStartAsync(AsyncEvent asyncEvent) throws IOException {

System.out.println("thread started.");

}

public void onTimeout(AsyncEvent asyncEvent) throws IOException {

System.out.println("thread timeout.");

}

};

}

}

public class IndexThread implements Runnable {

private AsyncContext asyncContext;

public IndexThread(AsyncContext asyncContext) {

this.asyncContext = asyncContext;

}

public void run() {

try {

Thread.sleep(5000);

PrintWriter out = asyncContext.getResponse().getWriter();

out.println("hello servlet3.
");

out.flush();

asyncContext.complete();

} catch (Exception e) {

e.printStackTrace();

}

}

}

访问localhost:8080/test

页面首先输出

servlet started.

servlet end.

过了5秒后再输出

hello servlet3.

可以看出servlet立马返回了,但没有关闭响应流,只是把response响应传给了线程,线程再继续输出,我们可以将比较费资源消耗时间的程序放到异步去做,这样很大程序上节省了servlet资源。

Springmvc3.2开始也加入了servlet3异步处理这个特性,有兴趣的同学可以去研究下。

从上面的servlet注解也可以看出来,servlet3完全解放了web.xml配置,通过注解可以完全代替web.xml配置。

推荐去我的博客:

觉得不错,别忘了点赞+转发哦!

java servlet异步_厉害了,Servlet3的异步处理机制相关推荐

  1. java servlet类_[Java教程]与Servlet相关的类

    [Java教程]与Servlet相关的类 0 2017-08-31 17:00:15 有4个有关的类,通过servlet可以获得其中的三个,然后通过ServletConfig间接获取ServletCo ...

  2. java双向涡轮_厉害了!首座涡轮式全互通立交,双向16车道,徐州这个地方是要上天啊!...

    重磅消息! 列入今年重点工程的城东大道高架终于有实质进展了!环评开始公示!即将开工建设!未来从东区进出城.去高铁站,再也不用担心堵车啦! 昨天(11月24日),徐环保局终于公示了城东大道的环评报告,从 ...

  3. 高并发 python socket send 异步_在Python中使用异步Socket编程性能测试

    ok,首先写一个python socket的server段,对开放三个端口:10000,10001,10002.krondo的例子中是每个server绑定一个端口,测试的时候需要分别开3个shell, ...

  4. python celery异步_【Python】Celery异步处理

    django.celery.django-celery.kombu.amqp最好统一pip安装,我用django 1.8.6和较低版本celery时候出现报错: /usr/local/lib/pyth ...

  5. 厉害了,Servlet3的异步处理机制

    转载自 厉害了,Servlet3的异步处理机制 Servlet3发布好几年了,又有多少人知道它的新特性呢?下面简单介绍下. 主要增加了以下特性: 1.异步处理支持 2.可插性支持 3.注解支持,零配置 ...

  6. java flex 上传文件_使用Flex和java servlet上传文件

    资源都是来自网上.本实例将展示使用Flex和java servlet上传文件. 事前准备就是到http://commons.apache.org 下载common-fileupload-1.1.1.j ...

  7. java 异步_浅谈Java异步编程

    本文来自网易云社区. Java异步编程引言 Java的异步编程其实是一个充分利用计算机CPU资源,不想让主程序阻塞在某个长时间运行的任务上,这类耗时的任务可以是IO操作.远程调用以及高密度计算任务.如 ...

  8. java.servlet js,调用servlet方法

    <深入剖析Tomcat>一2.1 javax.servlet.Servlet接口 2.1 javax.servlet.Servlet接口 Servlet编程需要使用到javax.servl ...

  9. Tomcat从socket到java Servlet

    整体架构图 一. 启动阶段 BootStrap的main方法加载server.xml配置文件,封装成Server,Service,Connector,Engine等java对象 Server初始化== ...

最新文章

  1. 使用nc检测udp端口是否可以正常通讯
  2. MySQL简单快速入门 (三)高级查询——JEPLUS软件快速开发平台
  3. LeetCode Longest Palindromic Substring
  4. docker安装部署_有关docker安装yearning和部署inception(闭源)
  5. python读取音频文件_python 读取wav 音频文件的两种方式
  6. Android Studio 教程(1)----配置
  7. (原创)使用nRF51822/nRF51422创建一个简单的BLE应用 ---入门实例手册(中文)之五...
  8. wordpress 更新以及下载插件:wordpress 安装失败:无法创建目录
  9. Laravel 5.1 文档攻略 —— Eloquent Collection
  10. 【雷达通信】基于matlab GUI雷达脉冲压缩【含Matlab源码 303期】
  11. html5变动标签新写法,HTML5新增的标签和废除的标签
  12. 双人游戏根据胜负关系匹配
  13. 【笔记】感谢《梦幻模拟战》的Unity+Spine资源,同人模式开启
  14. java opennlp_如何在Java中使用OpenNLP?
  15. pycharm怎么安装pygame_Python实战:运用Pygame编写Flappy bird小游戏,我能玩一天
  16. 飞刀哥移植UC/OS-II到LPC1788(ARM Cortex-M3)的步骤
  17. OSChina 周六乱弹 —— 感谢女装红薯开办了这个网站
  18. SQL:OUTER JOIN用法详解
  19. MinGW 和 MSYS 的手动安装与环境配置
  20. 数睿数据深度 | 中国软件网对话数睿数据总裁刘超:深挖数据驱动、企业级无代码

热门文章

  1. Ubuntu 18.04换国内源
  2. 移动开发web第一天
  3. iOS CoreAnimation
  4. python递归查询并列出目录
  5. Controlling Execution
  6. LOAM_velodyne学习(四)
  7. 圆环划痕检测halcon
  8. 学习笔记(57):Python实战编程-Treeview
  9. 使用opencv的LBF算法进行人脸关键点检测
  10. matlab ,python,c++关于格式化输出数字的表达