spring如何调用struts2

fiy 其他 11

回复

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

    Spring框架可以通过使用注解或配置文件的方式来调用Struts2框架。

    一、使用注解方式调用Struts2

    1. 在Spring配置文件中引入Struts2配置:

      <bean id="strutsObjectFactory" class="org.apache.struts2.spring.StrutsSpringObjectFactory" />
      <bean id="strutsActionProxyFactory" class="org.apache.struts2.spring.StrutsSpringActionProxyFactory" />
      
      <bean id="strutsActionProxy" class="org.apache.struts2.dispatcher.DefaultActionProxyFactory"/>
      <bean id="strutsPrepareOperations" class="org.apache.struts2.interceptor.PrepareOperations">
          <constructor-arg ref="strutsObjectFactory"/>
      </bean>
      
      <bean id="strutsDefaultInterceptorStack" class="org.apache.struts2.dispatcher.DefaultStack"/>
      
      <bean id="strutsLocaleProvider" class="org.apache.struts2.util.DefaultLocaleProvider">
          <property name="locales">
              <list>
                  <value>zh_CN</value>
              </list>
          </property>
      </bean>
      
    2. 使用注解在Spring中配置Struts2示例:

      @Configuration
      @EnableWebMvc
      @ComponentScan(basePackages = {"com.example"})
      public class AppConfig extends WebMvcConfigurerAdapter {
      
          @Autowired
          private ApplicationContext applicationContext;
      
          @Bean
          public StrutsPrepareAndExecuteFilter strutsPrepareAndExecuteFilter() {
              StrutsPrepareAndExecuteFilter filter = new StrutsPrepareAndExecuteFilter();
              filter.setServletContext(servletContext());
              return filter;
          }
      
          @Bean
          public ServletContext servletContext() {
              ServletContext servletContext = applicationContext.getServletContext();
              return servletContext;
          }
      }
      
    3. 在Struts2的Action类上使用注解配置:

      @Namespace("/")
      @Controller
      @Results({
          @Result(name = "success", location = "/success.jsp"),
          @Result(name = "error", location = "/error.jsp")
      })
      public class SampleAction extends ActionSupport {
      
          @Action(value = "/sampleAction", results = {
              @Result(name = "success", location = "/success.jsp"),
              @Result(name = "error", location = "/error.jsp")
          })
          public String execute() {
              return SUCCESS;
          }
      }
      

    二、使用配置文件方式调用Struts2

    1. 在Spring配置文件中引入Struts2配置:

      <bean id="strutsObjectFactory" class="org.apache.struts2.spring.StrutsSpringObjectFactory" />
      <bean id="strutsActionProxyFactory" class="org.apache.struts2.spring.StrutsSpringActionProxyFactory" />
      
      <bean id="strutsActionProxy" class="org.apache.struts2.dispatcher.DefaultActionProxyFactory"/>
      <bean id="strutsPrepareOperations" class="org.apache.struts2.interceptor.PrepareOperations">
          <constructor-arg ref="strutsObjectFactory"/>
      </bean>
      
      <bean id="strutsDefaultInterceptorStack" class="org.apache.struts2.dispatcher.DefaultStack"/>
      
      <bean id="strutsLocaleProvider" class="org.apache.struts2.util.DefaultLocaleProvider">
          <property name="locales">
              <list>
                  <value>zh_CN</value>
              </list>
          </property>
      </bean>
      
    2. 在Struts2的配置文件中配置Spring示例:

      <bean id="sampleAction" class="com.example.SampleAction" />
      
    3. 在Struts2的Action类中使用依赖注入:

      public class SampleAction extends ActionSupport {
      
          private Service service;
      
          public void setService(Service service) {
              this.service = service;
          }
      
          public String execute() {
              // 使用service
              return SUCCESS;
          }
      }
      

    通过上述的配置,Spring框架就可以调用Struts2框架中的Action类。同时也可以进行依赖注入,方便管理和调用其他的服务。

    1年前 0条评论
  • worktile的头像
    worktile
    Worktile官方账号
    评论

    要在Spring中调用Struts2,可以遵循以下步骤:

    1. 首先,确保在项目中引入了Struts2和Spring的相关库。在Maven项目中,可以在pom.xml文件中添加依赖项。
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-web</artifactId>
        <version>5.1.1.RELEASE</version>
    </dependency>
    
    <dependency>
        <groupId>org.apache.struts</groupId>
        <artifactId>struts2-core</artifactId>
        <version>2.5.20</version>
    </dependency>
    
    1. 在Spring的配置文件(如applicationContext.xml)中,需要配置Struts2的拦截器栈和相关的bean。可以使用struts-default.xml文件作为模板,将其重命名为struts.xml并将其放在类路径下。
    <bean id="urlMapping" class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
        <property name="mappings">
            <props>
                <prop key="/actionName">actionName</prop>
            </props>
        </property>
    </bean>
    
    <bean id="handlerAdapter" class="org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter" />
    
    <bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <property name="prefix" value="/WEB-INF/views/" />
        <property name="suffix" value=".jsp" />
    </bean>
    
    <bean id="actionName" class="com.example.ActionName">
        <property name="strutsAction" ref="strutsAction" />
    </bean>
    
    <bean id="strutsAction" class="com.example.StrutsAction">
        <property name="springService" ref="springService" />
    </bean>
    
    <bean id="springService" class="com.example.SpringService" />
    
    1. 创建一个Struts2的Action类,并注入所需的Spring服务。
    public class StrutsAction extends ActionSupport implements ApplicationContextAware {
        private SpringService springService;
    
        public void setSpringService(SpringService springService) {
            this.springService = springService;
        }
    
        // ...
    
        @Override
        public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
            this.springService = applicationContext.getBean(SpringService.class);
        }
    }
    
    1. 创建一个Spring的服务类,并在Struts2的Action类中调用该服务。
    public class SpringService {
        public void doSomething() {
            // 执行业务逻辑
        }
    }
    
    1. 最后,在Struts2的配置文件(struts.xml)中定义Action:
    <package name="default" extends="struts-default">
        <action name="actionName" class="com.example.StrutsAction">
            <result>/WEB-INF/views/example.jsp</result>
        </action>
    </package>
    

    通过这些步骤,你就可以在Spring中成功调用Struts2。

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

    Spring和Struts2是两个主流的Java框架,它们在Web应用开发中都被广泛使用。Spring作为一个容器框架,它可以作为中间层集成其他框架,包括Struts2。下面将介绍如何在Spring中调用Struts2。

    1. 配置Spring MVC和Struts2的依赖
      首先,在项目的pom.xml文件中添加Spring MVC和Struts2的相关依赖。例如:
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-webmvc</artifactId>
        <version>5.3.10</version>
    </dependency>
    <dependency>
        <groupId>org.apache.struts</groupId>
        <artifactId>struts2-core</artifactId>
        <version>2.5.26</version>
    </dependency>
    

    这些依赖将会在构建项目时被下载并添加到项目的classpath下。

    1. 配置web.xml文件
      在项目的web.xml文件中配置Spring的DispatcherServlet。例如:
    <servlet>
        <servlet-name>springDispatcher</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        <init-param>
            <param-name>contextConfigLocation</param-name>
            <param-value>/WEB-INF/spring-config.xml</param-value>
        </init-param>
        <load-on-startup>1</load-on-startup>
    </servlet>
    <servlet-mapping>
        <servlet-name>springDispatcher</servlet-name>
        <url-pattern>/</url-pattern>
    </servlet-mapping>
    

    这里的contextConfigLocation指向了Spring配置文件的路径,需要根据实际的项目结构进行配置。同时,将Struts2的过滤器添加到web.xml文件中,以处理Struts2的请求。例如:

    <filter>
        <filter-name>struts2</filter-name>
        <filter-class>org.apache.struts2.dispatcher.filter.StrutsPrepareAndExecuteFilter</filter-class>
    </filter>
    <filter-mapping>
        <filter-name>struts2</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>
    
    1. 配置Spring的配置文件
      在上一步中配置的contextConfigLocation指向的Spring配置文件中,需要添加Struts2的相关配置。例如:
    <!-- 开启Spring MVC支持 -->
    <mvc:annotation-driven />
    <!-- 启用Struts2 -->
    <bean name="struts2" class="org.apache.struts2.spring.StrutsSpringObjectFactory" />
    

    这里使用了mvc:annotation-driven来开启Spring MVC的支持,StrutsSpringObjectFactory则用于连接Spring和Struts2。

    1. 编写控制器和处理方法
      在Spring MVC中,控制器类用于处理请求并返回响应。可以在控制器类中直接使用Struts2的注解,例如:
    @Controller
    public class MyController {
        @RequestMapping("/hello")
        public String hello() {
            return "success";
        }
    }
    

    在上面的例子中,@Controller注解表示这是一个Spring MVC的控制器类,@RequestMapping("/hello")指定了处理请求的URL路径。在方法体中,可以直接返回Struts2的结果字符串,例如"success"

    1. 配置Struts2的配置文件
      在src/main/resources目录下创建struts.xml文件,配置Struts2的相关配置。例如:
    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE struts PUBLIC
            "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
            "http://struts.apache.org/dtds/struts-2.3.dtd">
    <struts>
        <package name="default" extends="struts-default">
            <action name="hello" class="com.example.MyController" method="hello">
                <result>/hello.jsp</result>
            </action>
        </package>
    </struts>
    

    在上面的例子中,定义了一个名为hello的Action,它将调用MyController类中的hello方法,并返回/hello.jsp页面作为结果。

    1. 编写视图页面
      在Web应用的WEB-INF目录下创建hello.jsp页面,用于展示视图。例如:
    <!DOCTYPE html>
    <html>
        <head>
            <title>Hello</title>
        </head>
        <body>
            <h1>Hello, World!</h1>
        </body>
    </html>
    
    1. 运行Web应用
      根据配置的URL路径,访问相应的URL可以调用对应的控制器方法,并返回结果视图。

    总结:
    通过以上步骤,我们可以在Spring中调用Struts2。Spring作为容器框架,可以用于管理和组装各个框架的组件。通过配置Spring MVC和Struts2,并在控制器中使用Struts2的注解,可以方便地在Spring中调用Struts2的功能。

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

400-800-1024

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

分享本页
返回顶部