`

Servlet的运行机制

阅读更多
默认情况下,servlet不是在分布式环境中部署的。servlet对声明的每个servlet只创建一个实例。
servlet容器实际上维护了一个线程池来服务成千上百的请求。线程池实际上是一组等待执行代码的线程。这些线程被称为工作者线程。
servlet使用调度者线程来管理工作者线程。
当容器接收到一个servlet的请求的时候。调度者线程从线程池中选取一个工作者线程,然后将请求传递给该线程。由这个线程去执行servlet的service方法。
如果2个线程请求的是同一个servlet,那么该servlet的service方法将会并发的执行。
因此如果为某个servlet定义一个成员变量,那么这个成员变量是不安全的。
正确的方法是将变量设定成成员变量。或是将变量靠threadLocal进行维护。
如果对方法进行同步,那么当成千上万个请求到来时会对方法进行排队。这种效率会非常底下。
如果为servlet定义静态的变量,那么该变量是所有该类的实例中共享的,是不安全的。通常类变量在servlet中常常定义成只读的常量数据。如驱动程序类名,链接URL,密码等等。

错误定义1
将statement定义成类变量然后在各个增、删、该、查方法中使用,这是错误的,因为statement会被多个线程共享类实例,如果一个线程执行完毕后关闭了statement,那么其他的线程执行就会出现错误。
正确的做法是将statement定义到成员变量中去。

实例2,如果将dataSource定义成类变量,当一个线程方法方法时创建了一个connection(从线程池中获取链接)。然后对connection进行关闭(返回线程池中),再没有调用finally将链接引用置2为空时。另一个线程获取链接,正好是刚刚线程返回到链接池中的链接,然后第一个线程判断链接是否为空,若是不为空就关闭链接,这时第二个线程就会出问题。所以解决办法就是关闭链接后要将链接置为空
分享到:
评论

相关推荐

    servlet初级基础知识入门笔记

    4. **Servlet运行机制** - 浏览器向Servlet容器发送HTTP请求。 - 容器解析请求,创建`HttpServletRequest`和`HttpServletResponse`对象。 - 容器根据请求路径创建Servlet实例,调用`service`方法,传入请求和响应...

    Servlet学习笔记

    - Servlet运行机制涉及其生命周期的管理,包括实例化、初始化、请求处理和销毁。 二、HTTP协议 - HTTP协议定义了浏览器和服务器之间通信的规则,包括请求和响应的基本格式。 - 通过TCP/IP Monitor等工具可以监控...

    servlet运行原理及生命周期.pdf

    ### Servlet 运行原理及生命周期详解 #### 一、Servlet简介 Servlet 是 Java Web 开发中的一个重要组成部分,它主要用于处理客户端发送至服务器端的 HTTP 请求,并返回相应的响应结果。Servlet 技术允许开发者以 ...

    java技术文档(不可多得的资料)

    - **Servlet运行机制**:深入理解Servlet是如何工作的,包括其生命周期以及如何与客户端进行交互。 - **客户端请求处理**:掌握如何通过Servlet处理客户端请求,包括GET和POST方法的使用。 - **客户端信息获取**:...

    java web 开发

    - **Servlet 运行机制**: - 当客户端发出HTTP请求时,Servlet容器接收到请求并将其转发给相应的Servlet。 - Servlet处理请求并生成响应。 ##### 3.3 Servlet 基本类 - **Servlet 的结构**: - 所有Servlet都必须...

    Java_Web应用程序设计讲义

    - **Servlet运行机制**:了解Servlet的生命周期,包括初始化、服务、销毁等阶段。 ##### 3.3 SERVLET基本类 - **Servlet的结构**:介绍了Servlet的基本结构,包括初始化参数、配置文件等。 - **javax.servlet....

    方立勋servlet学习笔记

    开发者需要确保该文件正确无误,以避免运行时错误。 - **自动创建实例**:在某些情况下,当Web服务器启动时,会自动创建Servlet实例。这种机制可以提高首次请求的响应速度。 #### 四、路径与资源管理 - **路径解析...

    Tomcat的结构和运行机制

    ### Tomcat的结构和运行机制 #### 一、Tomcat的大结构 Tomcat是一个流行的开源Java Servlet容器,用于部署和运行Java Web应用程序。其结构设计非常灵活,支持多种配置方式来满足不同应用场景的需求。 ##### 1. ...

    servlet编写、部署、运行全过程

    #### 四、Servlet运行详解 为了运行Servlet,需要完成以下步骤: 1. **启动Tomcat服务器**:确保Tomcat服务器已经启动并且能够正常工作。 2. **测试访问**:在浏览器中输入URL:`...

    servlet线程安全问题

    Servlet 的多线程机制是建立在 Java 多线程机制之上的。Servlet 容器会自动使用线程池等技术来支持系统的运行。当客户端第一次请求某个 Servlet 时,Servlet 容器将会根据 web.xml 配置文件实例化这个 Servlet 类。...

    模拟Tomcat运行机制

    《模拟Tomcat运行机制》是一本深入解析Tomcat内核的书籍,主要针对Tomcat4.1.12和5.0.18版本。Tomcat作为一款流行的、开源的Servlet容器,其复杂性在于由多个组件组成。本书旨在帮助读者理解Tomcat的工作原理,无论...

    javaweb课程设计,基于Servlet+Jsp的在线购物商城系统

    项目中通常会包含错误处理机制,如异常捕获和处理,以及使用Log4j等工具进行日志记录,以便于调试和排查问题。 以上就是"基于Servlet+Jsp的在线购物商城系统"的主要技术点和知识点,涵盖了Java Web开发的核心内容...

    jakarta-servletapi-4-src.zip servlet源码

    Servlet容器,如Tomcat、Jetty等,负责管理和运行Servlet。它们根据web.xml或注解配置加载Servlet,并通过DispatcherServlet进行请求分发。DispatcherServlet是Spring MVC的核心组件,它实现了Servlet API并负责调度...

    servlet-api_servlet_

    5. **ServletContext接口**:代表了Servlet的运行时环境,提供了获取整个Web应用的信息,如初始化参数、其他Servlet、MIME类型映射等。 6. **HttpServletRequest和HttpServletResponse接口**:分别表示HTTP请求和...

    Servlet常用语法Demo

    同时,支持异步处理,使得Servlet可以在不阻塞线程的情况下处理长时间运行的任务。 这个"Servlet常用语法Demo"实例将覆盖以上知识点,并提供具体的代码示例,帮助初学者快速上手Servlet开发。通过学习和实践这些...

    servlet入门小例子

    Servlet是Java Web开发中的核心组件,它用于接收和处理客户端的HTTP请求,并返回响应结果。...通过学习和实践"Servlet入门小例子",我们可以更好地理解和掌握Servlet的工作机制,为后续的Web开发打下坚实基础。

Global site tag (gtag.js) - Google Analytics