* 搭建struts和spring的整合
* 定义person.jsp页面
<tr>
<td>姓名:</td>
<td><html:text property="name" /></td>
</tr>
* 创建PersonForm封装表单的数据(放置在cn.itcast.web.form下)
public class PersonForm extends ActionForm {
private String id;
private String name;
}
* 创建PersonAction(放置在cn.itcast.web.action包下)
public class PersonAction extends Action {
//该属性应该有spring容器注入
private PersonService personService;
public ActionForward execute(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response)
throws Exception {
PersonForm personForm=(PersonForm)form;
Person p=new Person();
p.setName(personForm.getName());
this.personService.savePerson(p);
return mapping.findForward("success");
}
}
* 配置struts-config.xml文件
<struts-config>
<form-beans>
<form-bean name="personForm" type="cn.itcast.web.form.PersonForm" />
</form-beans>
<action-mappings>
<action path="/personAction" name="personForm" scope="request">
<forward name="success" path="/success.jsp" />
</action>
</action-mappings>
</struts-config>
* 在struts-config.xml增加请求委托配置
<!-- 请求委托 给spring的DelegatingRequestProcessor的类去执行 因为在struts底层收到请求后交给ActionServlet,但是ActionServlet不是真正执行操作的类,
它将请求交给RequestProcessor去处理(能处理ActionForm,Action等等)。 那么要将struts和spring整合的话,需要处理的问题就是:当请求进入Action,这时所用的Action是程序员手动定义好的或是动态Action,
但是spring里配置的<bean name="/personAction" class="com.xxc.web.action">却是用到的时候就去new一个,
所以这时是存在两个不同的action。我们需要解决的就是让它们用同一个action。 我们就需要从RequestProcessor这个类入手,因为这个类是struts处理数据的核心类。
我们发现spring提供了一个类DelegatingRequestProcessor,这个类是继承了RequestProcessor这个处理数据的核心类,(因为是继承,所以只要在最后super(..)调用的还是父类方法)
所以我们只需要在struts-config.xml中配置<controller processorClass="org.springframework.web.struts.DelegatingRequestProcessor"></controller>
表示将请求委托给这个类去执行,这样就可以和spring整合在一起 让spring去帮struts去创建这个处理数据的核心类。
-->
<controller processorClass="org.springframework.web.struts.DelegatingRequestProcessor"></controller>
* 在spring的beans.xml文件中增加如下配置
<bean name="/personAction" class="cn.itcast.web.action.PersonAction">
<property name="personService" ref="personService" />
</bean>
* 在web.xml文件配置struts的actionServlet
<!-- 配置struts -->
<servlet>
<servlet-name>action</servlet-name>
<servlet-class>org.apache.struts.action.ActionServlet</servlet-class>
<init-param>
<param-name>config</param-name>
<param-value>/WEB-INF/struts-config.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>action</servlet-name>
<url-pattern>*.do</url-pattern>
</servlet-mapping>
* 启动spring容器(在web.xml文件中增加如下配置)
<!-- 利用上下文参数配置beans.xml文件 -->
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/classes/beans.xml</param-value>
</context-param>
<!-- 通过servler加载beans.xml文件 -->
<servlet>
<servlet-name>contextLoader</servlet-name>
<servlet-class>org.springframework.web.context.ContextLoaderServlet</servlet-class>
<load-on-startup>0</load-on-startup>
</servlet>
* 测试
Struts1和Spring整合的步骤
最新推荐文章于 2017-09-21 16:22:00 发布