这是我刚解决的一个问题,从网上看了很多资料,但都没有能直接解决问题的,最后综合多方意见,多次调试,终于测试通过。
希望可以给对Struts2不熟的朋友一些帮助。
综述:要让Struts2的参数,在页面访问服务器之后自动更新,其实现方法分两步(这里以Struts2配Spring为例):
1:在Spring配置Action的Bean的时候,添加scope属性。
bean id="CompanyInfoAction" scope="request"
class="org.wangcy.equityReport.web.server.CompanyInfoAction">
<property name="companyInfoBS" ref="CompanyBSImpl"></property>
<property name="calllingTypeBS" ref="callingTypeBSImpl"></property>
</bean>
2:在Web.xml中添加Spring的Request的监听
<listener>
<listener-class>
org.springframework.web.context.request.RequestContextListener</listener-class>
</listener>
问题:我的查询页面有两个条件参数,第一次用其中一个条件参数进行查询,得到正确的结果,第二次只用第二个条件参数进行查询,得到两个参数一齐做为条件得到的结果,到后来我无论怎么改参数的值都得到和先前一样的结果。
原因:Struts2的并没将先前的参数值释放,有点类似Struts1的ActionForm。
另外:Struts2与Struts1在我们自己添加过滤器的时候有细微的区别:
在配置过滤器监听的时候,Struts1可以配置到任意位置,但Struts2必须配置到Strut2的监听之前
<!-- 配置监听 -->
<filter>
<filter-name>encodingFilter</filter-name>
<filter-class>org.wangcy.equityReport.web.EncodingFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>encodingFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<filter>
<filter-name>struts2</filter-name>
<filter-class>
org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter<!--
org.apache.struts2.dispatcher.FilterDispatcher
-->
</filter-class>
</filter>
分享到:
相关推荐
- **Struts1**: 在Struts1架构中,Action的生命周期是由容器管理的。每次HTTP请求都需要重新创建Action实例,并调用它的`execute`方法。这种方式导致了较高的资源消耗。 - **Struts2**: 每个Action实例都只服务于...
此外,为了更好地展示数据,可能还需要在Struts2中使用Interceptor(拦截器),例如,`params`拦截器用于将请求参数绑定到Action,`validation`拦截器负责验证表单数据,`workflow`拦截器管理Action的生命周期。...
- **Struts1** 主要是基于Servlet API进行操作,使用ActionForm来封装请求参数,并且依赖于JSP页面的生命周期;而 **Struts2** 则更加灵活,支持多种视图技术如JSP、FreeMarker等,同时也支持更丰富的插件和拦截器...
7. **Struts2的生命周期**: 一个请求到达时,Struts2会经历Action实例化、拦截器链执行、Action方法调用、结果渲染等阶段。了解这个生命周期有助于调试和优化应用。 8. **类型转换**: Struts2自动将请求参数...
3. **Struts2的生命周期** - 用户发起HTTP请求。 - Struts2 Filter捕获请求,解析请求参数。 - 根据`struts.xml`中的配置,找到对应的Action类和方法。 - 拦截器链执行,每个拦截器按顺序执行其doIntercept()...
- **Struts2** 则引入了拦截器栈(Interceptor Stacks)的概念,允许针对每个Action定义不同的执行路径和生命周期管理方式。这种灵活性提高了应用程序的可配置性和可扩展性。 综上所述,Struts2相比Struts1在架构...
- **Struts2**:支持拦截器堆栈,允许为每个Action创建独特的生命周期,堆栈可以根据需要定制。 总的来说,Struts2在设计上更加灵活、可测试和可扩展,而Struts1则相对更注重基础功能和简单的实现。在实际项目中,...
1. **核心库**:`struts2-core.jar` 是框架的核心,包含了Action、Interceptor、Result等主要组件,以及配置解析和生命周期管理等功能。 2. **插件**:Struts2支持许多插件,如`struts2-convention-plugin.jar` ...
对于初学者来说,这个小项目可以让你熟悉Struts2的生命周期,理解MVC架构,掌握Action和结果的配置,以及学习如何将Struts2与数据库集成。在实践中,你还将接触到Servlet、JSP、EL(Expression Language)和JSTL等...
在Struts2Demo中,Spring可能用来管理Action的生命周期,而Hibernate可能用于数据库操作。 动手实践Struts2小demo,你需要理解以下几个步骤: 1. **环境搭建**:确保你已经安装了Java开发环境,设置好Apache Maven...
- **Struts1**: 支持为每个模块单独配置Request Processors(即生命周期管理器),但模块内的所有Action必须共享相同的生命周期。 - **Struts2**: 通过配置拦截器堆栈(Interceptor Stacks)来为每个Action定制不同...
这种模板机制使得开发者能够灵活地控制请求的生命周期,并简化了控制器的实现。 二、JavaDoc视图 JavaDoc视图是Struts2提供的一种简单快速的文档生成工具。通过配置,Struts2可以从Action类的JavaDoc注释中自动生成...
同时,为了处理HTTP请求和响应,开发者需要理解Struts2的生命周期,包括调度、参数绑定、结果渲染等步骤。 此外,该项目可能还包括错误和异常处理、权限控制等方面的设计。例如,使用Struts2的全局异常映射(Global...
- 表单标签的生命周期:它们会自动处理参数的传递,包括表单的验证、类型转换和结果处理。 - 异常处理:如果标签在处理过程中遇到问题,Struts2会捕获异常并提供友好的错误信息。 掌握Struts2标签API不仅可以提高...
在Struts2中,IOC通常通过Spring框架来实现,以管理Action和其他组件的生命周期和依赖注入。 #### 6. Struts2标签 Struts2提供了丰富的标签库,如`<s:textfield>`, `<s:submit>`, `<s:iterator>`等,这些标签用于...
四、Struts2的生命周期 1. 用户发送请求到服务器。 2. Struts2 Filter接收到请求,解析请求参数并调用对应的Action。 3. 拦截器链开始执行,每个拦截器按顺序执行其方法。 4. Action被调用,执行业务逻辑。 5. ...
对于初学者来说,理解Struts2的生命周期和请求处理流程也是很重要的。当一个HTTP请求到达时,Struts2会解析请求参数,通过Interceptor链处理,然后调用Action方法,最后将控制权交给Result来呈现视图。这个过程中,...
ModelDriven接口使得模型对象可以被添加到ActionContext,从而可以在整个请求生命周期内访问。 5. **减少代码量**:使用ModelDriven,开发者可以避免在Action类中写大量的setter和getter方法来处理参数,提高了代码...
**Struts1**的扩展性相对较弱,因为它依赖于Servlet容器的生命周期管理。如果要添加新的功能,通常需要编写自定义的过滤器或者扩展核心类。 **Struts2**通过拦截器栈机制大大提高了其扩展性。开发者可以通过配置...
学习Struts2不仅需要理解这些基本概念,还要掌握Action的生命周期、拦截器链的工作原理、国际化处理、文件上传下载等功能。此外,整合Spring框架以实现依赖注入,以及与Hibernate等ORM框架集成进行数据库操作,也是...