`
phyeas
  • 浏览: 164302 次
  • 性别: Icon_minigender_1
  • 来自: 珠海
社区版块
存档分类
最新评论

使用Struts2+Spring注意Action的作用域

阅读更多
今天写coding的时候发现一个问题。郁闷。Action执行过一次之后,第二次请求竟不再次执行Action。这让人非常郁闷。
代码是这样的:
public String login() {
        UserinfoDto user 
= biz.login(account, password);
        
if (user == null{
            
// TODO 用户名/密码错误
            this.addActionError("用户名/密码错误,请重新登陆。");
            
return "input";
        }

        
// TODO 登陆成功
        request.setAttribute("user", user);
        
return "loginSuccess";
    }
biz是利用Spring注入的业务对象。如果登陆成功则没什么。但是一次登陆失败后。以后的每次都登陆失败。恼火。改用ActionMessage。可以了。但是每失败依次都会增加一个message。我才想到。原来Action并没有被消除。可能Struts2对已经有ActionError的对象就不再访问。而直接返回错误页面。这里我试了一下。第一次发生错误之后能返回你定义的页面。而以后每次访问则返回"input",不会再次执行Action。所以。而这一切都是因为Action是被 Spring创建的。如果是XWork创建的。每次请求它都会创建一个新的Action。就不会发生以上问题。因为新创建的 Action不会预先添加ActionError。解决方案是将Action放在request作用域中。具体做法在 http://blog.csdn.net/wxy_G/archive/2008/01/29/2071662.aspx 有介绍。我就不再赘述了。
分享到:
评论

相关推荐

    struts2+hirbate+spring面试题

    Struts2、Spring和Hibernate(SSH)是Java企业级开发中的三大主流框架,它们共同构建了一个强大的MVC(模型-视图-控制器)架构。在面试中,掌握这些框架的基本概念、工作原理以及最佳实践至关重要,尤其是对于刚踏入...

    Struts1+Hibernate+Spring整合

    - **配置文件**:创建或编辑Spring的配置文件`applicationContext.xml`,其中定义了Bean的作用域、生命周期、依赖关系等。 - **集成Struts和Hibernate**:通过Spring的配置来整合Struts和Hibernate,实现两者之间的...

    STRUTS2+SpringLib架包

    3. **Bean管理**:Spring容器管理Bean的生命周期,包括初始化、配置、装配以及销毁,提供了单例、原型等多种bean作用域。 4. **数据访问**:Spring对各种持久化技术如JDBC、Hibernate、MyBatis等提供支持,简化了...

    Struts2+Spring2整合范例

    - 在使用Spring时,注意Bean的作用域,如singleton或prototype,以适应不同的需求。 8. **范例中的S22S2**: 压缩包文件S22S2可能包含了上述整合过程所需的所有文件,包括源代码、配置文件、库文件等。解压后,...

    SSH(Struts1.0+Spring+Hibernate)框架集成笔记

    - **Action Mappings**:定义了Action的路径、类型、作用域等属性,以及处理成功或失败时的转发页面。 - **Controller**:指定了处理器类为Spring的DelegatingRequestProcessor,这是Spring与Struts1.0整合的关键...

    struts1 + hibernate + spring 实现文件上传

    2. **Struts1配置**:在Struts1的配置文件(struts-config.xml)中定义一个Action,指定处理文件上传的Form Bean和Action Class。 3. **ActionForm**:创建一个继承自Struts1的`ActionForm`类,添加`File`和`String...

    Struts2+Spring整合所需完整稳定可用jar包

    3. **共享Session作用域**:在整合后,Struts2和Spring可以共享Session作用域的对象,使得状态管理更为便捷。 4. **事务管理**:Spring的声明式事务管理可以覆盖Struts2的Action方法,确保数据的一致性。 5. **...

    spring+struts2+hibernate 增删改查

    在IT行业中,Web开发是至关重要的领域,而Spring、Struts2和Hibernate是Java Web开发中的三大主流框架,常被组合使用以实现高效且灵活的业务逻辑处理。本篇文章将详细探讨这三大框架如何协同工作,实现数据的增删改...

    Struts2+Spring+Hibernate知识点总结

    ### Struts2+Spring+Hibernate知识点总结 #### Struts2框架概述 - **Struts2的工作流程**: 1. **客户端发起HTTP请求**:客户端浏览器向服务器发送HTTP请求。 2. **FilterDispatcher接收请求**:根据`web.xml`...

    Struts2+Spring3+Hibernate3整合文档

    由于Struts2中的Action对象是针对每个请求生成一个新的实例,而Spring默认使用`singleton`作用域来管理Bean。为了与Struts2保持一致,需要将Action的Scope设置为`prototype`或`session`。 - **`prototype`**:为每...

    struts2+hibernate+spring整合

    在Struts2的配置文件`struts.xml`中,我们需要告诉Struts2使用Spring作为其对象工厂,这样Action类实例将由Spring来创建: ```xml <constant name="struts.objectFactory" value="spring" /> ``` 然后,在`...

    struts2+spring2+hibernate3.1应用实例

    1. **applicationContext.xml**:这是Spring的核心配置文件,用于定义Bean的定义,包括它们的依赖关系、初始化参数、作用域等。在这里,可能会配置Spring的DataSource、SessionFactory(Hibernate的配置)、Service...

    struts2+hibernate3.1+spring2.0指导

    总的来说,这个实验旨在让开发者熟练掌握Struts2、Hibernate3.1和Spring2.0的整合使用,理解它们在企业级应用中的作用,以及如何通过这些工具构建分层架构,实现低耦合、高复用的代码设计。通过这个实验,开发者可以...

    struts2+hibernate3.2+spring2.0配置+入门实例

    【Struts2+Hibernate3.2+Spring2.0配置+入门实例】 本文将详细介绍如何配置和构建一个基于Struts2、Hibernate3.2和Spring2.0的企业级Java应用入门实例。首先,我们理解整体架构,这有助于我们更好地了解各个组件的...

    ssh整合(struts2+hibernate3+spring3)

    1. **配置Struts2**:在`struts.xml`中指定使用Spring作为对象工厂,这意味着Struts2中的Action将由Spring管理,实现MVC和IoC的完美结合。 ```xml <constant name="struts.objectFactory" value="spring"/> ...

    struts2+hibernate3.2+spring2.0帮助文档

    Spring2.0中文帮助文档.chm可能涵盖了Spring的核心模块,如IoC容器、AOP原理、Bean的生命周期和作用域、数据源配置、DAO支持和Spring MVC的配置与使用。Spring的注解驱动开发、Spring Security和Spring Boot等内容也...

    Struts + Spring + Hibernate

    Struts、Spring 和 Hibernate 是Java开发中非常著名的三个框架,它们常常被组合使用,形成了一个强大的企业级应用开发解决方案,通常被称为"SSH"或者"SSH2"。这三种框架各有侧重点,Struts负责表现层,Spring处理...

    基于Annotation的Struts2.0+Hibernate3.3+Spring2.5整合开发

    接着,`@Controller`和`@Scope("prototype")`是Spring的注解,它们标记`RegisterAction`为一个Spring的控制器组件,并设置其作用域为原型(prototype),意味着每次请求都会创建一个新的实例。`@Resource(name=...

    第17讲 Spring、hibernate和Struts2的整合

    ②把action交给spring管理,即在spring配置文件中定义action Bean并使用依赖注入功能在action中注入业务Bean,同时修改作用域。 ③在struts.xml中的class使用第②步中所定义的action Bean 的id属性值。

Global site tag (gtag.js) - Google Analytics