`
cd_cd
  • 浏览: 6263 次
  • 性别: Icon_minigender_1
  • 来自: 成都
文章分类
社区版块
存档分类
最新评论

Struts2 action 并发访问线程安全问题

阅读更多
  本人最近二年一直在用struts2,对struts2的安全问题一直没多大关心,认为一个大家可以公认的框架,应该不会出现大的安全问题,自己考虑到的东西,别人估计已经考虑到了。为了自己用的踏实就做了一次小小的测试。可能我的这次测试没测试到要点,还喜欢大家多提意见,小弟在这里先说一声谢谢了。

   测试目的:测试struts2 同一个action连续2次请求是否线程安全
  
  测试内容: 第一:写一个线程
        public class Test implements Runnable {


public void run() {

       
}

}

第二:写一个action
   String name="cccc";
  String str="";
           //str 的get set方法略
public String  test() throws Exception
{
      Test t=new Test();
      name=str+name;
      if(b.getName().equals("dd")){
      Thread.sleep(10000);
     
      }else
      {
      Thread.sleep(10000*3);
      }
    
  t.run();
           }

    第三: 页面:
         <s:form action="taction!test.action" method="post">
         <s:textfield name="str" label="名称"></s:textfield>
         <s:submit value="提交"></s:submit>
       </s:form>
      struts配置文件略

    第四: 显示页面

            ${name}
             
    测试操作过程:   在同一个action请求下  先输入 “MMM” 立刻输入“dd”

    测试预想错误结果:ddMMcc MMcc
    测试理想结果:  ddccc MMccc

   测试最终结果:ddccc MMccc

得出结论:struts2 每次请求 action 是重新开启一个线程进行处理 但是我不能下结论是否线程安全。。希望大家做处更详细的解释,但是在我们B/S结构中 大家可以放心用struts2 .不必过多考虑线程安全问题
         以上完全是个人观点 。。。希望大家别拍砖 这是我的第一篇博客
分享到:
评论

相关推荐

    struts1,struts2,webwork,线程安全问题

    Struts2框架设计时充分考虑了线程安全问题,主要体现在其默认使用“prototype”作用域来管理`Action`类实例,这意味着每次请求都会创建一个新的`Action`实例。 - **Struts2中Action实例管理机制:** - Struts2利用...

    servlet与Struts action线程安全问题分析

    Struts2框架提供了多种策略来处理线程安全问题,包括Action实例的多例模式、使用拦截器进行同步控制等。开发者需要理解框架的工作原理,并结合最佳实践来避免线程安全问题。 总之,理解和处理Servlet和Struts ...

    servlet与Struts action线程安全问题分析(pdf)

    ### servlet与Struts action线程安全问题分析 #### 一、引言 随着互联网应用的不断普及和发展,基于Servlet和JSP技术的应用程序在企业级应用中占据着重要的位置。Servlet作为一种常用的技术栈,因其多线程运行特性...

    Struts中action线程安全问题解析

    然而,使用Struts框架时,开发者需要注意一个关键的安全问题,那就是Action类的线程安全问题。这个问题主要源于Servlet容器(如Tomcat)对Servlet的处理方式。 首先,我们需要理解Servlet的生命周期。Servlet在Web...

    Struts线程安全

    因此,如果Action类中有实例变量,它们可能会被多个线程共享并同时访问,从而引发线程安全问题。 - **使用局部变量**:局部变量是线程安全的,因为它们是在方法调用时在栈上分配的,每个线程都有其独立的栈空间。这...

    java struts2学习笔记之线程安全

    总结来说,Java Struts2通过为每个请求创建新的Action实例,解决了Servlet的线程安全问题。但开发者仍然需要关注Action所依赖的对象的线程安全,以确保整个应用程序的稳定性和数据一致性。在编写Struts2应用时,遵循...

    Struts1和Struts2的区别和对比

    而Struts2为每个请求创建一个新的Action实例,避免了线程安全问题,同时也降低了内存和性能的影响。 在对Servlet容器的依赖上,Struts1的Action直接依赖于HttpServletRequest和HttpServletResponse,导致Action难以...

    struts2学习心得

    在多线程环境中,如果字符串操作涉及到并发访问,则应使用`StringBuffer`以保证线程安全。 12. **EL表达式的使用**:Struts2支持使用EL(Expression Language)表达式语法,如`$(requestScope.username)`,来引用...

    Struts1与Struts2本质区别

    - **Struts 2**:每个请求都会创建一个新的Action实例,消除了线程安全问题,同时也减少了开发者在处理并发请求时需要考虑的问题。 #### 3. Servlet依赖方面的对比 - **Struts 1**:Action的方法签名中包含了`...

    Struts2与Struts1的对比

    这可能会导致线程安全问题,因为多个请求可能会并发访问同一个Action实例。 - **Struts2**:每个请求都有自己的Action实例,因此每个请求处理都是线程安全的。这大大降低了出现线程安全问题的风险,并且使得代码更...

    程序员必看的书籍Struts1和Struts2的区别

    - **请求处理**:在Struts2中,每个请求都会创建一个新的Action实例,这解决了Struts1中的并发问题,同时也增加了线程安全性。 - **验证机制**:Struts2提供了更加灵活的验证框架,支持多种验证机制,如内建验证器、...

    struts2学习总结

    - **Struts2**中的Action是线程安全的,因此可以被多个请求复用,减少了资源消耗。 3. **依赖注入机制:** - **Struts1**的Action类依赖于`Servlet API`,这限制了其在非Web环境下的使用。 - **Struts2**支持...

    Struts2 学习 2

    在Struts2中,ThreadLocal被用来存储和管理请求相关的数据,确保在并发环境下每个请求都能正确地访问其独有的数据。 四、Action的实现方式 在“第六讲 action的实现方式.docx”中,你会了解到Struts2支持多种...

    struts2与jfreechart整合

    7. **整合过程中的常见问题**:可能会遇到如内存溢出、图像质量不佳、多线程安全问题等挑战。解决这些问题通常需要优化内存使用、调整图像输出参数,或者在并发环境下正确管理资源。 8. **性能优化**:如果需要频繁...

    struts2 文本说明

    8. **多线程支持**:Struts2相比Struts1在多线程方面有所优化,更好地处理并发请求,提升了应用的性能和稳定性。 9. **校验机制**:Struts2提供了内置的校验框架,可以在Action级别或字段级别进行数据校验,通过...

    struts1和struts2的区别

    - Struts2则为每个请求创建一个新的Action实例,每个Action运行在一个独立的线程中,这提高了并发性和安全性。 3. **Servlet依赖**: - Struts1的Action类直接依赖于Servlet API,需要通过`HttpServletRequest`和...

    Struts2漏洞检测(带自己编写使用说明一看就上手)

    然而,随着时间的推移,Struts2框架发现了一系列的安全漏洞,这些漏洞可能导致远程代码执行、敏感信息泄露等问题,对使用Struts2的系统构成了严重的安全威胁。本资源提供的“Struts2漏洞检测(带自己编写使用说明一...

Global site tag (gtag.js) - Google Analytics