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,每个请求对应一个实例.

  • 相关阅读:
    ConcurrentHashMap源码阅读
    java中Scanner类nextLine()和next()的区别和使用方法
    setuid
    lsattr
    设置umask
    touch
    od
    vi 搜索
    nl
    cat 参数
  • 原文地址:https://www.cnblogs.com/bailiyi/p/3284700.html
Copyright © 2011-2022 走看看