您的位置:首页 > 编程语言 > Java开发

spring+struts的集成(第二种集成方案,推荐)

2017-04-10 17:53 507 查看
spring+struts的集成(第二种集成方案)

原理:将业务逻辑对象通过spring注入到Action中,从而避免了在Action类中的直接代码查询

1、spring和struts依赖库配置

* 配置struts

--拷贝struts类库和jstl类库

--修改web.xml文件来配置ActionServlet

--提供struts-config.xml文件

--提供国际化资源文件

* 配置spring

--拷贝spring类库

--提供spring配置文件

2、因为Action需要调用业务逻辑方法,所以需要在Action中提供setter方法,让spring将业务逻辑对象注入过来

public class LoginAction extends Action {

private UserManager userManager;

@Override
public ActionForward execute(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response)
throws Exception {
LoginActionForm laf = (LoginActionForm)form;

userManager.login(laf.getUsername(), laf.getPassword());

return mapping.findForward("success");
}

public void setUserManager(UserManager userManager) {
this.userManager = userManager;
}
}


3、在struts-config.xml文件中配置Action

* <action>标签中的type属性需要修改为org.springframework.web.struts.DelegatingActionProxy

DelegatingActionProxy是一个Action,主要作用是取得BeanFactory,然后根据<action>中的path属性值

到IoC容器中取得本次请求对应的Action

struts-config.xml配置文件

<struts-config>
<form-beans>
<form-bean name="loginForm" type="com.bjsxt.usermgr.forms.LoginActionForm"/>
</form-beans>

<action-mappings>

<action path="/logininput"
forward="/login.jsp"
></action>

<action path="/login"
type="org.springframework.web.struts.DelegatingActionProxy"
name="loginForm"
scope="request"
>
<forward name="success" path="/success.jsp"/>
</action>
</action-mappings>

<message-resources parameter="MessageResources" />
</struts-config>
<plug-in className="org.springframework.web.struts.ContextLoaderPlugIn">
<set-property property="contextConfigLocation" value="/WEB-INF/applicationContext.xml,/WEB-INF/applicationContext-*.xml" />
</plug-in>


4、在spring配置文件中需要定义struts的Action,如:

<bean name="/login" class="com.bjsxt.usermgr.actions.LoginAction" scope="prototype">

<property name="userManager" ref="userManager"/>

</bean>

* 必须使用name属性,name属性值必须和struts-config.xml文件中<action>标签的path属性值一致

* 必须注入业务逻辑对象

* 建议将scope设置为prototype,这样就避免了struts Action的线程安全问题

spring配置文件:

<?xml version="1.0" encoding="UTF-8"?>

<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:aop="http://www.springframework.org/schema/aop"
xmlns:tx="http://www.springframework.org/schema/tx"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.0.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.0.xsd"> <bean name="/login" class="com.bjsxt.usermgr.actions.LoginAction" scope="prototype">
<property name="userManager" ref="userManager"/>
</bean>
<bean id="userManager" class="com.bjsxt.usermgr.manager.UserManagerImpl"/>
</beans>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: