声明:本代码来源于北京圣思园张龙讲师
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();
}
}
}
分享到:
相关推荐
Maven是一个强大的Java项目管理工具,而Servlet3.0是Java服务器端编程的重要组成部分,尤其在构建Web应用程序方面发挥着核心作用。 Maven简化了Java项目的构建、依赖管理和项目信息管理。它通过一个中央配置文件...
- **实验异步处理**:尝试实现异步 Servlet,体验其性能优势。 - **自定义拦截器**:学习如何使用 Spring MVC 的拦截器机制增强功能。 6. **最佳实践** - **RESTful 设计**:遵循 REST 原则设计 URL 结构,使 ...
- `@WebServlet` 是Java Servlet 3.0及以上版本引入的一个注解,用于声明Servlet类,它简化了传统的在web.xml中配置Servlet的过程。在这个实验中,`@WebServlet("/GuessNumberServlet")`表示将GuessNumberServlet...
12. **Servlet 3.0及以上版本的新特性**:包括异步处理、注解配置、过滤器和监听器等改进,让开发变得更加便捷。 在"javaEE期末大实验"这个项目中,你可能需要结合上述知识点,完成一个完整的JavaEE应用,包括用户...
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支持Servlet 3.0规范,该规范引入了异步处理、过滤器链、生命周期管理等特性,使得开发者可以更加灵活地控制Web应用的行为。 除了基础的HTTP服务,Jetty 8还提供了WebSocket支持,这是一个低延迟、全双工的...
5. **NIO.2**:Tomcat 9采用了Java NIO.2 API进行I/O操作,提供了更好的异步处理能力和更高的并发性能。 6. **安全增强**:Tomcat 9在安全性方面进行了加强,包括支持TLSv1.3协议,提供了更强的数据加密和身份验证...
在实际项目中,如DMS3.0,你需要开发数据采集系统,从Unix实验室记录中解析用户登录信息,并将其发送到服务器进行存储和报表生成。这涉及到文件处理、网络通信和多线程技术。 HTML和CSS是网页设计的基础,了解HTML...
GAE支持Servlet 3.0规范,允许你使用注解来定义Servlet和Filter。 3. **Google Cloud Datastore**:GAE提供了NoSQL数据库服务,即Cloud Datastore。通过`com.google.appengine.api.datastore`包中的API,你可以进行...