zoukankan      html  css  js  c++  java
  • spring+struts2引起的错误被记忆问题

    标题表述的比较模糊,详细情况是这样的:

    目前开发的一个管理系统,当使用出现异常时会自动跳转到错误页。其处理流程是“发生异常——跳转到错误处理action——错误页”。

    但是出现了一个bug,即某个操作引发过一次异常之后,这个操作之后会一直报异常。

    比如“添加商品信息”这个操作由于非法字符引发了异常,那么在这之后,就算填写的信息是正确的,程序仍然会跳转到非法字符的错误页。

    在参考了这篇文章http://zfei.iteye.com/blog/1236020后,问题解决了。

    这个bug的原因如下:

    Struts2单独使用时,会对每一个请求,产生一个Action的实例来处理.

    而Spring的Ioc容器管理的bean默认是单实例的.

    Struts2 与Spring整合后, 由spring来管理Struts2 的Action,bean默认是单实例有情况下,Struts2的action变成了单例模式,于是产生了如下问题:

    1) Action是单例,其中的FieldError,actionerror中的错误信息会累加, 即使再次输入了正确的信息,也过不了验证.

    2) Struts2 的Action是有状态的,他有自己的成员属性, 所以在多线程下,会有问题.

     

    文章给出的解决方案有两个,我们用了第一个

    不用单例, spring中bean的作用域设为prototype,每个请求对应一个实例.

  • 相关阅读:
    jvm 垃圾收集算法
    jvm 判断对象死亡
    jvm 内存分配
    jvm 对象奥秘
    mysql事务测试及delete和update是使用行级锁,还是表级锁
    sql语句中where后边的哪些条件会使索引失效 -- SQL语句优化
    java nio详解
    mysql数据库优化概述详解
    java 序列化和反序列化
    java io框架详解
  • 原文地址:https://www.cnblogs.com/bailiyi/p/3284700.html
Copyright © 2011-2022 走看看