Struts1与Spirng的集成方案:(最佳方案)

 原理:使用 DelegatingActionProxy将 Struts Action 管理全权委托给  Spring 框架

1、spring和struts依赖库配置

         * 配置struts

                   1--拷贝struts类库和jstl类库

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

                   3--提供struts-config.xml文件

                   4--提供国际化资源文件

         * 配置spring

                   1--拷贝spring类库(注意spring-webmvc-struts.jar为必要的包,在注入struts action时需要)

                   2--提供spring配置文件

 

2、在web.xml 中使用ContextLoaderListener


<!- - applicationContext.xml放置在/WEB-INF/classes/目录下的配置 -->

<context-param>

      <param-name>contextConfigLocation</param-name>

      <param-value>/WEB-INF/classes/applicationContext.xml</param-value>

</context-param>

<!- - applicationContext.xml放置在src目录下的配置 -->

<context-param>

      <param-name>contextConfigLocation</param-name>

      <param-value>classpath:applicationContext.xml</param-value>

</context-param>

<!- - 以下为固定的配置 设置spring的监听 -->

<listener>

  <listener-class>

org.springframework.web.context.ContextLoaderListener

</listener-class>

</listener>

 

3、将struts-config.xml文件中的action中的type改为org.springframework.web.struts.DelegatingActionProxy,并增加<controller><controller>


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

<!DOCTYPE struts-config PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 1.3//EN" "http://struts.apache.org/dtds/struts-config_1_3.dtd">

<struts-config>

  <form-beans>

  <form-bean name="LoginForm" type="com.demo.form.LoginForm"></form-bean>

  </form-beans>

  <action-mappings>

  <action path="/login" name="LoginForm" type="org.springframework.web.struts.DelegatingActionProxy">

  <forward name="success" path="/success.jsp"></forward>

  <forward name="false" path="/false.jsp"></forward>

  </action>

  </action-mappings>

   <controller>

       <set-property property="processorClass" value="org.springframework.web.struts.DelegatingRequestProcessor"/>

</controller>

  <message-resources parameter="com.demo.struts.ApplicationResources" />

</struts-config>

 

4、struts中的action在spring配置文件applicationContext.xml的配置:


<?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:p="http://www.springframework.org/schema/p"

       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd">

       <bean name="userManager" class="com.demo.impl.UserManagerImpl"></bean>

       <bean name="/login" class="com.demo.action.LoginAction">

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

       </bean>

</beans>

此处action的bean中的name属性(“/login”)必须与struts-config.xml中action的path属性一致

5、在action中设置业务实现类中的get、set方法即可


package com.demo.action;

 

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

 

import org.apache.struts.action.Action;

import org.apache.struts.action.ActionForm;

import org.apache.struts.action.ActionForward;

import org.apache.struts.action.ActionMapping;

 

import com.demo.dao.UserManager;

import com.demo.form.LoginForm;

 

public class LoginAction extends Action{

       private UserManager userManager;

      

       public UserManager getUserManager() {

              return userManager;

       }

 

       public void setUserManager(UserManager userManager) {

              this.userManager = userManager;

       }

       @Override

       public ActionForward execute(ActionMapping mapping, ActionForm form,

                     HttpServletRequest request, HttpServletResponse response)

                     throws Exception {

              LoginForm loginForm=(LoginForm)form;

              System.out.println(loginForm.getUser().getPassword());

              userManager.login();

              request.setAttribute("user", loginForm.getUser().getName());

              request.setAttribute("str", request.getParameter("str"));

              return mapping.findForward("success");

       }

}

  

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值