Struts1和Spring整合的步骤


 * 搭建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>
	         			  
        * 测试

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值