怎么把struts交给spring管理

worktile 其他 32

回复

共3条回复 我来回复
  • 不及物动词的头像
    不及物动词
    这个人很懒,什么都没有留下~
    评论

    将Struts交给Spring管理可以通过以下几个步骤实现:

    1. 引入相关依赖:在项目的pom.xml文件中,添加Struts和Spring的相关依赖。可以通过Maven或Gradle来管理项目依赖。

    2. 配置Struts的Action类:对于每个Struts的Action类,需要将其配置为Spring的Bean。在struts.xml配置文件中,在Action的配置中添加以下内容:







      这里com.example.MyAction是你自己的Action类的包路径。scope="prototype"表示该Bean的作用域是原型模式,每次请求都会创建一个新的实例。defaultStack和spring是Struts和Spring的拦截器。

    3. 配置Spring容器:在Spring的配置文件中,一般为applicationContext.xml,需要配置Struts的拦截器和相关的Bean定义。配置示例如下:


      这样配置可以让Struts与Spring容器进行整合。

    4. 配置Struts的过滤器:在web.xml配置文件中,添加Struts的过滤器,将请求交给Struts处理。示例如下:


      struts2
      org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter


      struts2
      /*

      这样配置可以确保所有的请求都会经过Struts的过滤器进行处理。

    通过以上的配置,将Struts交给Spring管理,可以充分利用Spring的IOC和AOP等特性,方便管理和扩展Struts的功能。同时也可以更好地组织和维护项目的代码。

    1年前 0条评论
  • fiy的头像
    fiy
    Worktile&PingCode市场小伙伴
    评论

    将Struts交给Spring管理有两种方式:使用Spring的Web框架集成或者使用Spring的BeanFactory后置处理器。

    1. 使用Spring的Web框架集成:
      a. 在web.xml中配置DispatcherServlet,将请求转发给Struts的Action。例如:
    <servlet>
       <servlet-name>dispatcher</servlet-name>
       <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
       <init-param>
           <param-name>contextConfigLocation</param-name>
           <param-value>classpath:spring-config.xml</param-value>
       </init-param>
       <load-on-startup>1</load-on-startup>
    </servlet>
    
    <servlet-mapping>
       <servlet-name>dispatcher</servlet-name>
       <url-pattern>/</url-pattern>
    </servlet-mapping>
    

    b. 在spring-config.xml中配置Struts的Action,以及其他需要的Spring Bean。例如:

    <bean name="/welcome" class="com.example.WelcomeAction" />
    

    c. 在Struts的Action中可以使用Spring的依赖注入来获取其他Bean:

    public class WelcomeAction extends ActionSupport {
        private GreetingService greetingService;
        // 使用setter方法注入依赖
        public void setGreetingService(GreetingService greetingService) {
            this.greetingService = greetingService;
        }
        // 在Action中使用注入的Bean
        public String execute() {
            String message = greetingService.sayHello();
            // ...
            return SUCCESS;
        }
    }
    

    d. 在WelcomeAction中可以使用@Autowired注解进行自动注入:

    public class WelcomeAction extends ActionSupport {
        @Autowired
        private GreetingService greetingService;
        // ...
    }
    
    1. 使用Spring的BeanFactory后置处理器:
      a. 在Spring的配置文件中配置一个BeanFactory后置处理器,例如:
    <bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
       <property name="locations">
           <list>
               <value>/WEB-INF/jdbc.properties</value>
           </list>
       </property>
    </bean>
    <bean class="org.springframework.beans.factory.config.StrutsActionFactoryBean">
       <property name="namespace" value="/"/>
       <property name="beanFactory" ref="beanFactory"/>
    </bean>
    

    b. 在Struts的配置文件中,设置Struts的Action工厂为Spring的StrutsActionFactoryBean:

    <constant name="struts.objectFactory" value="spring" />
    <bean id="beanFactory"
       class="org.springframework.beans.factory.xml.XmlBeanFactory">
       <constructor-arg>
           <value>classpath:spring-config.xml</value>
       </constructor-arg>
    </bean>
    

    c. 在Spring的配置文件中配置Struts的Action,以及其他需要的Spring Bean:

    <bean id="/welcome" class="com.example.WelcomeAction" />
    

    d. 同样可以使用Spring的依赖注入来注入其他Bean:

    public class WelcomeAction extends ActionSupport {
        private GreetingService greetingService;
        // 使用setter方法注入依赖
        public void setGreetingService(GreetingService greetingService) {
            this.greetingService = greetingService;
        }
        // 在Action中使用注入的Bean
        public String execute() {
            String message = greetingService.sayHello();
            // ...
            return SUCCESS;
        }
    }
    
    1年前 0条评论
  • worktile的头像
    worktile
    Worktile官方账号
    评论

    将 Struts 交给 Spring 管理是一种将两个框架结合使用的常见方式,这样可以充分利用 Spring 的依赖注入和控制反转功能来管理 Struts 的对象和依赖关系。下面将介绍如何将 Struts 交给 Spring 管理的详细步骤。

    1. 导入相关依赖
      首先确保已经在项目中导入了 Struts 和 Spring 的相关依赖。

    2. 配置 Spring 配置文件
      在 Spring 的配置文件中配置 Struts 的相关内容。可以使用 XML 配置或者注解配置两种方式。

      a. XML 配置方式
      在 Spring 配置文件中添加如下配置:

      <bean id="strutsObjectFactory" class="org.springframework.struts.ObjectFactoryDelegatingActionProxyFactory"/>
      <bean id="myAction" class="com.example.MyAction">
         <property name="strutsObjectFactory" ref="strutsObjectFactory"/>
         <!-- 其他属性配置 -->
      </bean>
      

      在上述配置中,strutsObjectFactory 是 Spring 提供的一个工厂类,用于代理 Struts 的 Action 对象,从而将其纳入 Spring 的管理范围。

      b. 注解配置方式
      可以使用 Spring 的注解方式来配置 Struts 的 Action 对象。在 Action 类上添加 @Component 注解,并在 Spring 配置文件中加入扫描注解的配置。

      <context:component-scan base-package="com.example"/>
      

      这样 Spring 会自动扫描带有 @Component 注解的类,并将其纳入管理范围。

    3. 配置 Struts 配置文件
      在 Struts 的配置文件中修改 struts.objectFactory 的值为 spring,以告诉 Struts 使用 Spring 托管对象。

      <struts>
         <constant name="struts.objectFactory" value="spring"/>
         <!-- 其他配置信息 -->
      </struts>
      

      这样,Struts 将使用 Spring 提供的对象工厂来管理 Action 对象。

    4. 通过 Spring 获取 Action 对象
      现在可以在代码中通过 Spring 的上下文来获取 Struts 的 Action 对象了。

      ApplicationContext context = new ClassPathXmlApplicationContext("spring-config.xml");
      MyAction myAction = context.getBean("myAction", MyAction.class);
      

      这样,Struts 的 Action 对象就被成功地交给了 Spring 管理。

    通过上述步骤,可以将 Struts 交给 Spring 管理,从而充分利用 Spring 的优势来管理 Struts 的对象和依赖关系,并实现更好的代码组织和可维护性。

    1年前 0条评论
注册PingCode 在线客服
站长微信
站长微信
电话联系

400-800-1024

工作日9:30-21:00在线

分享本页
返回顶部