`

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_Web应用程序设计讲义

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

    Servlet详解Servlet详解

    2. Servlet 容器:提供了一个运行环境,用于部署和管理 Servlet 3. Servlet 工具:提供了一些工具,用于开发、测试和调试 Servlet 在 Java 服务器结构中,Servlet 是一个核心组件,用于提供服务的类的集合。它可以...

    方立勋servlet学习笔记

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

    servlet入门servlet入门

    1. **高效性**:Servlet通过支持多线程处理机制,能够有效处理并发请求,提高服务器的响应速度和处理能力。 2. **功能强大**:Servlet可以直接与服务器交互,实现数据共享和状态管理,使开发者能够在多个程序间共享...

    servlet笔记,servlet的总结

    Servlet运行在Servlet容器中,而Servlet容器通常嵌入在Web服务器内。Web服务器如Apache Tomcat、JBoss等,负责接收HTTP请求并将它们转发给Servlet容器处理。Tomcat是广泛使用的开源Web服务器,基于Java开发,需要JVM...

    Tomcat的结构和运行机制

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

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

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

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

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

    servlet线程安全问题

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

    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