<bean name="/register" class="com.action.RegisterAction" singleton="false">
<property name="businessService">
<ref bean="businessService"/>
</property>
</bean>
RegisterAction是Action的实现类,businessService是业务逻辑,Spring把businessService注入到
Action中,在Action中只要写businessService的get和set方法就可以了,同时action的bean设为
singleton="false",这样每次新建一个实例,从而解决了Struts中Action的线程同步问题
1.struts 中实现接口
<plug-in className="org.springframework.web.struts.ContextLoaderPlugIn">
<set-property property="contextConfigLocation" value="/WEB-INF/applicationContext.xml,/WEB-INF/action-servlet.xml" />
</plug-in>
2.将<action type 变为
= "org.springframework.web.struts.DelegatingActionProxy"
3.编写action-servlet.xml 如:
<bean name="/Analyse" class="com.apple.struts.action.IndexAnalyseAction" singleton="false">
<property name="flowService">
<ref bean="flowService"/> //此处对应applicationContext.xml
</property>
</bean>
4.web.xml中配置
<filter>
<filter-name>hibernateFilter</filter-name>
<filter-class>
org.springframework.orm.hibernate3.support.OpenSessionInViewFilter
</filter-class>
<init-param>
<param-name>singleSession</param-name>
<param-value>true</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>hibernateFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
分享到:
相关推荐
Servlet和Struts Action是两种常见的Java Web开发组件,它们在多线程环境下运行时可能存在线程安全问题。线程安全是指在多线程环境中,一个类或者方法能够正确处理多个线程的并发访问,保证数据的一致性和完整性。 ...
- **原理**:`DelegatingRequestProcessor`类是Spring提供的一个类,用于替代Struts默认的`ActionServlet`,它将Struts的Action与Spring进行分离,使Struts的Action处于Spring的控制之下。这种方式的最大优点是几乎...
`struts.xml`是主要的配置文件,用于定义Action、结果类型、拦截器等。注解配置则可以直接在Action类上声明,简化配置过程。 3. **拦截器(Interceptors)**:Struts 2的拦截器是实现AOP(面向切面编程)的关键组件...
1. **Action实例的作用域**:当使用Spring管理Action时,确保Action实例的作用域设置为`prototype`,以避免多线程安全问题。 2. **Struts2与Spring的整合**:选择适合项目需求的整合方式。如果需要更细粒度的控制,...
- ActionServlet:是Struts框架的控制器,负责接收用户请求,并根据配置将请求派发给相应的Action对象。 - ActionForm:用于封装用户提交的数据,可以进行数据校验。 - ActionMapping:定义了请求与Action之间的...
而`web.xml`是Servlet容器的配置文件,用来配置Struts的拦截器以及Action的URL映射。 在`struts-config.xml`中,我们需要配置`<form-bean>`来定义表单Bean,它对应于用户界面中的数据模型。例如,我们可以创建一个...
- 在Web服务器启动时,ActionServlet加载并解析struts-config.xml配置文件。 - 当收到用户请求时,ActionServlet查找与请求匹配的ActionMapping。 - 如果ActionForm不存在,它会创建一个新的ActionForm并将表单...
5. **线程安全性**:每个线程在Struts2中拥有自己的Action实例,避免了线程安全问题。 6. **配置简化**:Struts2的配置比Struts 1更加灵活,可以使用XML或注解进行配置。 **Struts2的核心组件和配置** - **核心包**...
它的核心是ActionServlet,它处理HTTP请求并根据配置文件(struts-config.xml)转发到相应的Action。ActionForm用于在Action与视图之间传递数据。 **Hibernate框架** 是一个对象关系映射(ORM)工具,允许开发者使用...
Action是处理用户请求的业务逻辑组件,ActionForm用于封装表单数据,Controller(通常指Struts的ActionServlet)负责调度请求。通过配置struts-config.xml文件,开发者可以定义请求的路由和视图的渲染方式。 在...
1. **初始化ActionServlet**:Web应用启动时加载,读取struts-config.xml配置。 2. **ActionMapping匹配**:根据URL找到对应的Action Mapping。 3. **ActionForm处理**:创建ActionForm,存储表单数据,可能进行表单...
- 初始化ActionServlet,读取struts-config.xml配置。 - 匹配ActionMapping,创建ActionForm,处理表单数据。 - 验证ActionForm,调用validate()方法。 - 表单验证成功后,调用Action的execute()方法。 - Action的...
ActionServlet会根据struts-config.xml配置文件将请求分发到对应的Action,如果Action实例不存在,会创建新实例,并调用execute()方法。Action类需要考虑线程安全,因为可能被多个请求共享。 - **ActionForward类**...
- ActionServlet捕获请求,解析请求参数,根据struts-config.xml配置找到对应的ActionForm Bean实例。 - 将请求参数填充到ActionForm Bean中。 - 调用Action类的方法进行业务处理。 - Action返回ActionForward...
在`web.xml`中配置`ActionServlet`,你可以设置其初始化参数,例如最大线程数、会话超时时间等,这些参数对性能优化至关重要。文件`web_xml中ActionServlet中的属性.doc`很可能详细解释了如何配置这些属性,帮助...
- **配置文件**:如struts2.xml、spring-servlet.xml和hibernate.cfg.xml,它们分别定义了Struts2、Spring和Hibernate的行为。 - **Action类和ActionForm**:Struts2中的Action类是处理业务逻辑的核心,ActionForm...
- **初始化阶段**:在Web应用启动时,ActionServlet加载并解析`struts-config.xml`配置文件,将配置信息存储到各个对象中。 - **请求处理**:用户通过HTTP请求到达服务器,ActionServlet接收请求,根据`struts-...
每个请求都会创建一个新的Action实例,避免了线程安全问题,这是与Struts1的一个显著差异。 5. 自定义Action可以通过直接编写Action类并实现execute()方法,或者让Action类实现Action接口或继承ActionSupport类。...
相反,Struts2的Action为每个请求创建一个新的实例,避免了线程安全问题。 关于Servlet依赖,Struts1的Action直接依赖于Servlet API,意味着测试必须在容器环境中进行。而Struts2降低了对Servlet API的依赖,使得...