`
lvwenwen
  • 浏览: 953952 次
  • 性别: Icon_minigender_1
  • 来自: 魔都
社区版块
存档分类
最新评论

servlet线程安全性探索

阅读更多

文章链接:http://developer.51cto.com/art/200907/133827.htm

            http://www.yesky.com/334/1951334.shtml
在Serlet中避免使用实例变量是保证Servlet线程安全的最佳选择。从Java 内存模型也可以知道,方法中的临时变量是在栈上分配空间,
而且每个线程都有自己私有的栈空间,所以它们不会影响线程的安全。
在Serlet中避免使用实例变量是保证Servlet线程安全的最佳选择。从Java 内存模型也可以知道,方法中的临时变量是在栈上分配空间,
而且每个线程都有自己私有的栈空间,所以它们不会影响线程的安全。
(Servlet/JSP默认是以多线程模式执行的,Servlet多线程体系结构是建立在Java多线程机制之上的,它的生命周期是由Web容器负责的。当客户端第一次请求某个Servlet时,Servlet容器将会根据web.xml配置文件实例化这个Servlet类。当有新的客户端请求该Servlet时,一般不会再实例化该Servlet类,也就是有多个线程在使用这个实例。
这样,当两个或多个线程同时访问同一个Servlet时,可能会发生多个线程同时访问同一资源的情况,数据可能会变得不一致)
1.解决serlet线程安全问题
  1、实现 SingleThreadModel 接口(Servlet引擎将为每个新的请求创建一个单独的Servlet实例,
  这将引起大量的系统开销。SingleThreadModel在Servlet2.4中已不再提倡使用)
  2、同步对共享数据的操作(同样如果在程序中使用同步来保护要使用的共享的数据,也会使系统的性能大大下降)
  3、避免使用实例变量(最佳)

 

分享到:
评论

相关推荐

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

    通过对jakarta-servletapi-4-src.zip源码的分析,开发者不仅可以加深对Servlet API的理解,还能学习到如何优化Web应用程序的性能、安全性以及用户体验。这是一次深入挖掘Java Web核心技术的宝贵机会,对于任何希望...

    servlet快速学习文档

    - **避免单例Servlet**:尽管Servlet容器默认会为每个Servlet创建一个实例,但开发者应避免手动创建单例Servlet,因为这可能导致线程安全问题。 - **资源释放**:在`destroy()`方法中释放任何持久性资源,如数据库...

    servlet源代码

    6. **多线程与并发**:Servlet容器通常会为每个请求创建一个新的线程,因此开发者需要注意线程安全问题,避免在Servlet中使用不安全的全局变量。 7. **异步Servlet**:Java Servlet 3.0及以上版本引入了异步Servlet...

    深入java servlet 网络编程

    8. **安全性**: Servlet可以通过设置过滤器实现访问控制、登录验证等安全措施。同时,需要关注跨站脚本攻击(XSS)、跨站请求伪造(CSRF)等Web安全问题。 9. **性能优化**: 为了提高性能,可以使用线程池处理...

    servlet基础教程及深入理解

    - 由于`service()`方法可能会并发执行,因此需要注意线程安全问题,尤其是在共享数据或状态时。 9. **Servlet与JSP的关系** - JSP是Servlet的简化版,用于方便编写动态页面。JSP会被编译为Servlet,然后由Servlet...

    探索Java EE的企业心脏:EJB的深度解析

    6. **安全性**:Java的安全性体现在其内置的安全管理器上,它可以控制对系统资源的访问,防止恶意代码的执行。 7. **简单性**:相比C++等其他语言,Java在设计时去除了指针运算等复杂特性,使得语言更加简洁易学。 ...

    how tomcat works( 深入剖析tomcat) 的随书源码

    8. **安全性** Tomcat支持多种安全机制,如SSL/TLS加密、基本认证、摘要认证、Form认证等,可以保护Web应用免受恶意攻击。 9. **JNDI(Java Naming and Directory Interface)** Tomcat提供JNDI服务,允许Web应用...

    Jetty 学习资料汇总

    4. **安全性**:介绍Jetty的安全机制,包括角色认证、SSL/TLS配置和过滤器链。 四、实战与最佳实践 1. **部署应用**:讲解如何将WAR文件或自定义配置部署到Jetty服务器。 2. **性能调优**:提供性能监控和调优的...

    基于java的文本服务器

    服务器的安全性是至关重要的,需要防止SQL注入、跨站脚本攻击等。同时,设计良好的架构使得服务器易于扩展,如支持HTTPS、添加身份验证机制、负载均衡等。 在【web服务】这个压缩包中,可能包含了服务器的源代码、...

    Java课程体系本体系统构建探索.zip

    多线程和并发处理也是Java的强项,理解线程安全、同步机制和并发模型至关重要。 再者,Java的API和库也应纳入本体系统中,例如Java Swing和JavaFX用于创建桌面应用程序,Java Servlet和JSP则用于构建Web应用。还有...

    JAVAWEB商城

    JavaWeb技术以其强大的可扩展性、稳定性和安全性,被广泛应用在商城系统的开发中。本文将深入探讨JavaWeb在电商领域的应用以及"天下陶商城"所采用的关键技术。 首先,JavaWeb是Java技术在Web开发中的应用,它包括...

    高效Java后台程序缓存用户信息的研究.pdf

    在实现难度上,二者也都有一定的实现成本,尤其是ThreadLocal,其线程安全特性的实现需要开发者有较高的线程管理能力。从编程思想来看,二者都体现了对Java Web开发中数据流转和线程管理的深刻理解。而在扩展性方面...

    jetty1.3.3

    使用 Jetty 1.3.3 时,开发者需要注意它的兼容性和安全性问题,因为较旧的软件版本可能不支持最新的 Java 版本,并且可能存在已知的安全漏洞。对于新项目,推荐使用更新的 Jetty 版本,以获得更好的性能、功能和安全...

    web常见问题解答web常见问题解答,可以受到很大的启发

    这取决于Servlet的配置,通常可以通过单例模式或线程安全的设计来优化。 - **WebLogic与Tomcat**:WebLogic是企业级应用服务器,而Tomcat是轻量级应用服务器,两者对类加载、热部署等有不同的处理方式。 - **UTF-8...

    struts 完整例子

    - 由于Servlet容器可能会多线程执行Servlet方法,因此开发者必须确保doGet和doPost方法是线程安全的。 - Servlet Context是全局共享的,它提供了一个共享数据的范围,可以用来存储全局应用程序级别的数据。 9. **...

    apache-tomcat-7.0.52

    在安全性方面,Tomcat 7.0.52引入了更强的身份验证和授权机制,如Container Managed Security,可以更方便地配置访问控制。它还支持SSL/TLS协议,可以通过HTTPS提供安全的HTTP服务,保护用户的敏感信息。 此外,...

    计算机专业毕业论文题目_大全.docx

    1. JAVA的多线程与并发:深入理解线程池,研究线程安全问题。 2. JAVA的反射机制:讨论其在动态加载、序列化和元数据操作中的应用。 3. Spring框架:研究依赖注入、AOP和Spring Boot的应用。 4. JAVA EE企业级开发:...

    java+jsp实现web聊天系统

    六、安全性与优化 1. 数据安全:确保所有用户输入都被正确过滤和转义,防止SQL注入和跨站脚本攻击。 2. 性能优化:使用线程池处理并发请求,避免过多的线程创建和销毁带来的开销。 3. 安全性考虑:使用HTTPS进行数据...

    基于java的简单银行系统。。包括用户登录等功能

    综上所述,基于Java的简单银行系统涵盖了多个核心Java技术,包括但不限于MVC架构、用户认证、数据库操作、安全性控制、异常处理、多线程以及软件测试和部署策略。这个系统的设计和实现需要综合运用这些知识点,构建...

    Java服务器高级编程

    9. **安全性**:服务器安全涵盖身份验证、授权、加密、防止SQL注入、XSS攻击等方面。Java提供了JAAS(Java Authentication and Authorization Service)和JSSE(Java Secure Socket Extension)来处理安全问题。 10...

Global site tag (gtag.js) - Google Analytics