`

转:关于Servlet的并发响应

 
阅读更多

http://blog.csdn.net/irelandken/article/details/6935659

关于Servlet的并发响应

 

http://blog.csdn.net/irelandken/article/details/6927713我们分析了Servlet的生命周期

Servlet的生命周期是这个Servlet被访问时构造,项目被Remove部署时才终止…

 

那么我们现在再来看看,当多个用户以doget/dopost方式同时访问同一个Servlet时,那个响应情况是怎么的呢??是一个一个来执行?还是多线程并行来执行呢??

 

1: 新建web Project

2:新建文件: Servlet_MutiThreads.java

 

 

 

[java] view plaincopy
  1. package myServlet;  
  2. import java.io.IOException;  
  3.    
  4. import javax.servlet.ServletException;  
  5. import javax.servlet.http.HttpServlet;  
  6. import javax.servlet.http.HttpServletRequest;  
  7. import javax.servlet.http.HttpServletResponse;  
  8.    
  9.    
  10. public class Servlet_MutiThreads extends HttpServlet {  
  11.    
  12.     private static final long serialVersionUID = 1L;  
  13.    
  14.     @Override  
  15.     protected void doGet(HttpServletRequest req, HttpServletResponse resp)  
  16.            throws ServletException, IOException {  
  17.         
  18.        System.out.println(Thread.currentThread().getName() + " is running");  
  19.         
  20.        try {  
  21.            Thread.sleep(10*1000);  
  22.        } catch (InterruptedException e) {  
  23.            e.printStackTrace();  
  24.        }  
  25.         
  26.        System.out.println(Thread.currentThread().getName() + " is ------------finished");  
  27.     }  
  28.    
  29.     @Override  
  30.     protected void doPost(HttpServletRequest req, HttpServletResponse resp)  
  31.            throws ServletException, IOException {  
  32.         
  33.        doGet(req,resp);  
  34.     }  
  35.    
  36. }  
  37.    



 

3.XML加入:

 

[html] view plaincopy
  1.  <servlet>  
  2.   <servlet-name>Servlet_MutiThreads</servlet-name>  
  3.   <servlet-class>myServlet.Servlet_MutiThreads</servlet-class>  
  4. </servlet>  
  5.   
  6. <servlet-mapping>  
  7.   <servlet-name>Servlet_MutiThreads</servlet-name>  
  8.   <url-pattern>/myServlet/Servlet_MutiThreads</url-pattern>  
  9. </servlet-mapping>  



 

 

那么这个servlet的访问的url是: http://localhost:8080/Servlet_MutiThreads//myServlet/Servlet_MutiThreads

 

这个Servlet里,每次访问都sleep 10s,就是说每个访问的持续时间为10s….(这里为不什么不用wait呢? 是因为sleep时,尽管线程休眠了,但还是不会释放锁的,而这正是我们想要的,而wait是会释放的)

 

 

我们有在地址栏里多次访问这个URL(连续按多次enter):

 

 

我们可以看到,这个访问是并发的,并Servlet的响应也是并发的,查看资料:

 

Servlet体系结构是建立在Java多线程机制之上的,它的生命周期是由Web容器负责的。

 

当客户端第一次请求某个Servlet时,Servlet 容器将会根据web.xml配置文件实例化这个Servlet类。当有新的客户端请求该Servlet时,一般不会再实例化该Servlet类,也就是有多个线程在使用这个实例。

 

Servlet容器会自动使用线程池等技术来支持系统的运行

 

我们就验证了Servlet能并发响应多个用户的访问

 

分享到:
评论

相关推荐

    深入学习:Java Servlet开发与实例

    9. **异步Servlet**:自Java Servlet 3.0起,Servlet支持异步处理,使得Servlet可以在不阻塞线程的情况下处理请求,提高了服务器的并发性能。 10. **Servlet的部署与调试**:了解如何在Servlet容器中部署Web应用,...

    servlet原理和实践

    - **线程安全**:Servlet容器管理多个请求的并发访问,开发者需要考虑线程安全问题。 了解以上知识点后,你将能够更深入地理解Servlet在Java EE项目中的作用,以及如何在实践中有效地利用它来构建Web应用程序。...

    java web Servlet

    * 高性能:Servlet 的性能非常高,能够满足高并发和高流量的需求。 * 多线程:Servlet 可以以多线程方式运行,提高了服务器的响应速度和处理能力。 * 统一接口:Servlet API 提供了统一的编程接口,方便开发者快速...

    servlet作为服务器响应请求.zip

    初始化后,Servlet可以处理多个并发请求,直到服务器关闭或Servlet被显式卸载时销毁。 3. **登录注册界面实现** "LoginAndReg"可能包含了两个主要部分:登录(Login)Servlet和注册(Registration)Servlet。登录...

    servlet api servlet api

    Servlet 3.0引入了异步处理能力,使得Servlet可以在`service()`方法内启动异步任务,提高并发性能。 10. **MVC框架与Servlet的关系**: MVC(Model-View-Controller)框架如Spring MVC、Struts等,虽然提供了更高...

    Servlet教材

    4. Servlet处理完请求后,通过Servlet容器将响应结果返回给Web服务器,再由Web服务器将响应发送回客户端。 四、Servlet API Servlet API包含两个主要的包:`javax.servlet`和`javax.servlet.http`。前者定义了所有...

    servlet-api-3.0.zip

    - **异步处理**:Servlet 3.0允许开发者实现异步Servlet,通过`AsyncContext`接口,可以将请求处理从主线程分离开来,提高并发性能。 - **WebSocket支持**:Servlet 3.0引入了对WebSocket协议的支持,通过`javax....

    servlet基础与servlet容器模型

    5. **请求/响应对象**(HttpServletRequest/HttpServletResponse):Servlet容器提供这些对象,让Servlet能够获取请求信息和构造响应。 6. **过滤器**(Filter):在Servlet处理请求之前和之后,可以添加过滤器来...

    com.oreilly.servlet

    9. **多线程安全**:Servlet默认是线程安全的,这意味着多个请求可能会并发地在同一个Servlet实例上执行,因此开发者需要注意同步和资源管理,以避免潜在的线程安全问题。 10. **性能优化**:通过使用Servlet的异步...

    servlet 源码

    由于Servlet容器会复用Servlet实例来处理多个并发请求,因此开发者需要注意线程安全问题。在编写Servlet时,应避免在实例变量中存储请求特定的数据。 8. **URL映射**: 在Web应用的部署描述符(web.xml)中,我们...

    IBM关于Servlet与JSP开发的练习

    ### IBM关于Servlet与JSP开发的练习 #### 一、课程概述 本课程《Servlet and JSP Development with IBM Rational Application Developer V6》(课程代码SW284)旨在通过一系列的实践练习帮助学员掌握Servlet与JSP...

    Java Servlet API (英文版)

    - 自Java Servlet 3.0起,Servlet API支持异步处理,允许Servlet在`service()`方法内启动异步操作,提高并发性能。 8. **MVC模式与Servlet** - 虽然Servlet本身并不直接支持Model-View-Controller(MVC)设计模式...

    深入Java Web心脏:Servlet工作原理全解析

    - **多线程**:Java内置的多线程支持,方便开发者构建并发程序。 - **网络编程**:Java提供了丰富的网络通信API,简化了网络应用的开发过程。 - **安全性**:Java的安全管理器可以限制应用程序对系统资源的访问,...

    jsp中html转换为servlet输出流小工具

    JSP主要用于视图层,而Servlet则在控制层处理请求和响应。有时,开发者可能需要将HTML或者JSP页面的内容转换为Servlet的输出流来实现特定功能。下面我们将详细探讨这个过程以及相关的知识点。 1. **JSP基础**: ...

    servlet-2.5-mrel-spec.rar

    6. **Filter过滤器**:过滤器允许在请求到达Servlet之前进行预处理,或者在响应返回给客户端之后进行后处理。Servlet 2.5增加了对过滤链的支持,可以有多个过滤器按顺序执行。 7. **Listener监听器**:这些是实现了...

    servlet高级应用

    在"JBJSPSERVLET007"这个文件中,可能包含了更多关于这些高级主题的详细示例和教程,帮助开发者进一步理解和掌握Servlet的高级特性。通过深入学习和实践,开发者能够创建出更加健壮和高性能的Java Web应用程序。

    Java程序开发教学课件:15-Servlet高级编程.ppt

    以下是关于Servlet 3.0及其中涉及的高级编程主题的详细说明: 1. **基于Annotation的配置**: 在Servlet 3.0中,开发者可以通过注解(@WebServlet, @WebFilter, @WebListener)直接在类上声明Servlet、Filter和...

    servlet-2_4-fr-spec-doc.rar_doc_servlet 2.4 spec_servlet api_ser

    以下是关于Servlet 2.4规范和API的一些关键知识点: 1. **Servlet生命周期**:Servlet的生命周期包括初始化、服务和销毁三个阶段。初始化阶段通常在Servlet首次被请求时发生,此时会调用`init()`方法。服务阶段处理...

    Java+Servlet+and+Jsp+Cookbook.2004.rar

    - **线程安全**:理解Servlet并发问题,避免潜在的线程安全问题。 - **性能监控**:通过Servlet容器提供的监控工具分析应用性能。 6. **开发工具与框架**: - **IDE集成**:如Eclipse、IntelliJ IDEA等,提供了...

Global site tag (gtag.js) - Google Analytics