默认情况下,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为空时。另一个线程获取链接,正好是刚刚线程返回到链接池中的链接,然后第一个线程判断链接是否为空,若是不为空就关闭链接,这时第二个线程就会出问题。所以解决办法就是关闭链接后要将链接置为空
分享到:
相关推荐
4. **Servlet运行机制** - 浏览器向Servlet容器发送HTTP请求。 - 容器解析请求,创建`HttpServletRequest`和`HttpServletResponse`对象。 - 容器根据请求路径创建Servlet实例,调用`service`方法,传入请求和响应...
- Servlet运行机制涉及其生命周期的管理,包括实例化、初始化、请求处理和销毁。 二、HTTP协议 - HTTP协议定义了浏览器和服务器之间通信的规则,包括请求和响应的基本格式。 - 通过TCP/IP Monitor等工具可以监控...
### Servlet 运行原理及生命周期详解 #### 一、Servlet简介 Servlet 是 Java Web 开发中的一个重要组成部分,它主要用于处理客户端发送至服务器端的 HTTP 请求,并返回相应的响应结果。Servlet 技术允许开发者以 ...
- **Servlet 运行机制**: - 当客户端发出HTTP请求时,Servlet容器接收到请求并将其转发给相应的Servlet。 - Servlet处理请求并生成响应。 ##### 3.3 Servlet 基本类 - **Servlet 的结构**: - 所有Servlet都必须...
- **Servlet运行机制**:了解Servlet的生命周期,包括初始化、服务、销毁等阶段。 ##### 3.3 SERVLET基本类 - **Servlet的结构**:介绍了Servlet的基本结构,包括初始化参数、配置文件等。 - **javax.servlet....
开发者需要确保该文件正确无误,以避免运行时错误。 - **自动创建实例**:在某些情况下,当Web服务器启动时,会自动创建Servlet实例。这种机制可以提高首次请求的响应速度。 #### 四、路径与资源管理 - **路径解析...
Servlet运行在Servlet容器中,而Servlet容器通常嵌入在Web服务器内。Web服务器如Apache Tomcat、JBoss等,负责接收HTTP请求并将它们转发给Servlet容器处理。Tomcat是广泛使用的开源Web服务器,基于Java开发,需要JVM...
### Tomcat的结构和运行机制 #### 一、Tomcat的大结构 Tomcat是一个流行的开源Java Servlet容器,用于部署和运行Java Web应用程序。其结构设计非常灵活,支持多种配置方式来满足不同应用场景的需求。 ##### 1. ...
#### 四、Servlet运行详解 为了运行Servlet,需要完成以下步骤: 1. **启动Tomcat服务器**:确保Tomcat服务器已经启动并且能够正常工作。 2. **测试访问**:在浏览器中输入URL:`...
Servlet 的多线程机制是建立在 Java 多线程机制之上的。Servlet 容器会自动使用线程池等技术来支持系统的运行。当客户端第一次请求某个 Servlet 时,Servlet 容器将会根据 web.xml 配置文件实例化这个 Servlet 类。...
项目中通常会包含错误处理机制,如异常捕获和处理,以及使用Log4j等工具进行日志记录,以便于调试和排查问题。 以上就是"基于Servlet+Jsp的在线购物商城系统"的主要技术点和知识点,涵盖了Java Web开发的核心内容...
Servlet容器,如Tomcat、Jetty等,负责管理和运行Servlet。它们根据web.xml或注解配置加载Servlet,并通过DispatcherServlet进行请求分发。DispatcherServlet是Spring MVC的核心组件,它实现了Servlet API并负责调度...
5. **ServletContext接口**:代表了Servlet的运行时环境,提供了获取整个Web应用的信息,如初始化参数、其他Servlet、MIME类型映射等。 6. **HttpServletRequest和HttpServletResponse接口**:分别表示HTTP请求和...
同时,支持异步处理,使得Servlet可以在不阻塞线程的情况下处理长时间运行的任务。 这个"Servlet常用语法Demo"实例将覆盖以上知识点,并提供具体的代码示例,帮助初学者快速上手Servlet开发。通过学习和实践这些...
Servlet是Java Web开发中的核心组件,它用于接收和处理客户端的HTTP请求,并返回响应结果。...通过学习和实践"Servlet入门小例子",我们可以更好地理解和掌握Servlet的工作机制,为后续的Web开发打下坚实基础。