声明:本代码来源于北京圣思园张龙讲师
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();
}
}
}
分享到:
相关推荐
然后,你可以创建一个`AsyncContext`对象,该对象可以用来在后台线程中完成任务,并在完成后使用`asyncContext.complete()`结束异步操作。 2. **WebSocket**: 虽然Servlet 3.0的异步推送可以实现长连接,但...
总的来说,Servlet3.0通过增强的注解配置、异步处理、过滤器改进、上下文参数和监听器的注解支持,以及微容器概念,极大地提升了Java Web开发的效率和便利性。这份参考手册无疑是深入理解和掌握Servlet3.0技术的关键...
通过`HttpServletRequest.startAsync()`方法启动异步处理,然后在另一个线程中完成业务逻辑,最后调用`AsyncContext.complete()`结束异步操作。 3. **生命周期管理**:Servlet 3.0引入了全生命周期回调方法,如`@...
在异步线程中,我们可以等待数据准备就绪,然后调用`asyncContext.complete()`来结束异步操作,并将结果写入响应。这种方式下,客户端的HTTP连接会一直保持打开状态,直到服务器有新的数据推送或者连接超时。 此外...
2. **异步处理**:Servlet 3.0引入了异步Servlet的概念,允许Servlet在处理请求时返回控制权给容器,然后在准备好响应时再重新获取控制权。这提高了性能,因为线程可以在等待I/O操作完成时被重用,而不是阻塞等待。 ...
Servlet 3.0作为Servlet规范的一个重要版本,引入了许多新特性,其中最引人注目的就是异步处理和支持Web插座(WebSocket),这使得实时通信如聊天室的实现变得更加便捷。本文将深入探讨如何利用Servlet 3.0的异步...
通过`AsyncContext`可以进行异步操作。 - **生命周期回调**:Servlet 3.0提供了更多的生命周期回调方法,如`init()`、`destroy()`、`onStartup()`和`onShutdown()`,便于开发者管理Servlet实例的生命周期。 - **...
Servlet 3.0是Java服务器端编程的重要组成部分,主要用于构建动态Web应用程序。它是由Java Community Process(JCP)制定的标准,定义了一套用于处理HTTP请求的API,使得开发者可以编写服务器端程序来处理来自Web...
【标题】"maven servlet 3.0 eclipse config video" 提供的是关于如何在Eclipse集成开发环境中配置Maven和Servlet 3.0的视频教程。这个教程旨在帮助开发者了解和掌握如何有效地利用Maven构建Java Web项目,并利用...
2. **异步处理**:Servlet3.0支持异步处理,允许Servlet在接收到请求后启动一个后台线程进行处理,而主线程可以立即返回,提高了服务器对高并发请求的响应能力。通过`HttpServletRequest.startAsync()`方法,开发者...
【标题】"Jsp/Servlet3.0 ppt和代码"涉及的是Java服务器页面(JSP)和Servlet 3.0版本的关键技术。JSP是一种动态网页技术,它允许开发者将HTML代码与Java代码混合编写,从而实现服务器端的动态内容生成。而Servlet是...
在这个名为“servlet3.0-demo”的项目中,我们重点探讨的是如何利用Servlet 3.0的新特性进行文件上传操作,并且采用注解的方式来简化代码。 在Servlet 3.0之前,我们需要在web.xml中配置Servlet,然后通过继承...
Servlet3.0引入了异步处理能力,允许Servlet在处理请求时返回控制权给容器,然后在后台继续执行任务。通过实现`AsyncContext`,开发者可以创建非阻塞的应用,提高应用性能和响应速度。 3. **Pluggable Contexts**...
在实际开发中,将这些库导入到项目中,开发者可以利用Servlet3.0的异步处理能力,处理高并发场景下的请求;使用JSTL简化页面逻辑,提升开发效率。同时,由于不再依赖web.xml进行所有配置,项目的部署和扩展也变得...
通过`AsyncContext`接口,开发者可以控制异步操作的生命周期。 3. 部署监听器:无需在web.xml中声明,开发者可以通过注解定义部署监听器,如`@WebListener`,在应用部署或卸载时自动执行代码。 4. 嵌入式Servlet...
Java Servlet 3.0 异步处理问题 Java Servlet 3.0 异步处理问题主要介绍了 Java 中 Servlet 3.0 异步处理的原理以及遇到的问题分析。Servlet 3.0 开始提供了 AsyncContext 用来支持异步处理请求,那么异步处理请求...
1. **异步处理**:Servlet 3.0引入了异步处理能力,允许Servlet在请求处理过程中挂起并稍后恢复,而不是阻塞线程,这极大地提高了应用的并发性能。通过`AsyncContext`接口,开发者可以实现非阻塞I/O,以更高效地处理...
本文将详细介绍 Servlet 3.0 的关键新特性,包括异步处理、新增的注解支持以及可插性支持等方面。 #### 异步处理支持 异步处理是 Servlet 3.0 中最为显著的新特性之一。这一特性解决了传统 Servlet 在处理长时间...
Servlet3.0是Java EE平台中的一个重要里程碑,它在Servlet规范上引入了许多创新特性,极大地提高了Web应用的开发效率和性能。在这个版本中,重点强调了异步处理和反向Ajax的支持,这两个特性使得Web应用能够更加高效...