`
iwebcode
  • 浏览: 2071275 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
文章分类
社区版块
存档分类
最新评论

关于servlet3.0异步操作实验程序

 
阅读更多

声明:本代码来源于北京圣思园张龙讲师

package com.jereh;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.Date;
import javax.servlet.AsyncContext;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

@WebServlet(name="SecondServlet",urlPatterns="/SecondServlet",asyncSupported=true) // 蓝色字体表示servlet3.0(默认情况下为false)允许异步操作
public class SecondServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
PrintWriter out = resp.getWriter();
out.println("servlet starts:" + new Date());
out.flush(); //刷新缓冲区

AsyncContext context = req.startAsync();
Thread thread = new MyThread(context) ;
thread.start();

out.println("servlet ends"+new Date());
}
}

-------------------------------------------分割线下为线程部分-----------------------------------------------------------------------------------------------------

package com.jereh;


import java.io.IOException;
import java.io.PrintWriter;
import java.util.Date;

import javax.servlet.AsyncContext;
import javax.servlet.ServletResponse;

public class MyThread extends Thread {
private AsyncContext context ;
public MyThread(AsyncContext context)
{
this.context = context ;
}

@Override
public void run() {
try {
ServletResponse response = context.getResponse();
PrintWriter out = response.getWriter();
out.println("async starts:"+ new Date());
Thread.sleep(7000);
out.println("async ends:"+ new Date());

context.complete(); // 通知主线程,该线程已经完成
} catch (InterruptedException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}

分享到:
评论
1 楼 string2020 2014-05-03  
楼主,能否写一个例子说说:
AsyncContext 类的 dispatch、dispatch(String path)
两个方法是干啥的

谢谢。

相关推荐

    Maven+Servlet3.0显示系统时间源码+文档

    Maven是一个强大的Java项目管理工具,而Servlet3.0是Java服务器端编程的重要组成部分,尤其在构建Web应用程序方面发挥着核心作用。 Maven简化了Java项目的构建、依赖管理和项目信息管理。它通过一个中央配置文件...

    spring_servlet3:Spring MVC Servlet 3.0博客的源代码-mvc source code

    - **实验异步处理**:尝试实现异步 Servlet,体验其性能优势。 - **自定义拦截器**:学习如何使用 Spring MVC 的拦截器机制增强功能。 6. **最佳实践** - **RESTful 设计**:遵循 REST 原则设计 URL 结构,使 ...

    叶倩琳 201706061330 实验三1

    - `@WebServlet` 是Java Servlet 3.0及以上版本引入的一个注解,用于声明Servlet类,它简化了传统的在web.xml中配置Servlet的过程。在这个实验中,`@WebServlet("/GuessNumberServlet")`表示将GuessNumberServlet...

    软工JavaEE期末测试 含程序

    12. **Servlet 3.0及以上版本的新特性**:包括异步处理、注解配置、过滤器和监听器等改进,让开发变得更加便捷。 在"javaEE期末大实验"这个项目中,你可能需要结合上述知识点,完成一个完整的JavaEE应用,包括用户...

    Tomcat7.0版本

    1. **Servlet 3.0支持**:Tomcat7.0支持Servlet 3.0规范,带来了异步处理能力,允许开发者编写非阻塞I/O的Servlet,提高了Web应用的响应速度。 2. **JSP 2.2支持**:Tomcat7.0支持JSP 2.2标准,提供了新的EL表达式...

    jetty 8及依赖包

    Jetty 8支持Servlet 3.0规范,该规范引入了异步处理、过滤器链、生命周期管理等特性,使得开发者可以更加灵活地控制Web应用的行为。 除了基础的HTTP服务,Jetty 8还提供了WebSocket支持,这是一个低延迟、全双工的...

    tomcat9.0服务器工具

    5. **NIO.2**:Tomcat 9采用了Java NIO.2 API进行I/O操作,提供了更好的异步处理能力和更高的并发性能。 6. **安全增强**:Tomcat 9在安全性方面进行了加强,包括支持TLSv1.3协议,提供了更强的数据加密和身份验证...

    Java基础教程1.pdf.docx

    在实际项目中,如DMS3.0,你需要开发数据采集系统,从Unix实验室记录中解析用户登录信息,并将其发送到服务器进行存储和报表生成。这涉及到文件处理、网络通信和多线程技术。 HTML和CSS是网页设计的基础,了解HTML...

    cloud-app-playground:玩谷歌应用引擎的沙盒

    GAE支持Servlet 3.0规范,允许你使用注解来定义Servlet和Filter。 3. **Google Cloud Datastore**:GAE提供了NoSQL数据库服务,即Cloud Datastore。通过`com.google.appengine.api.datastore`包中的API,你可以进行...

Global site tag (gtag.js) - Google Analytics