spring如何调用struts2
-
Spring框架可以通过使用注解或配置文件的方式来调用Struts2框架。
一、使用注解方式调用Struts2
-
在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> -
使用注解在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; } } -
在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
-
在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> -
在Struts2的配置文件中配置Spring示例:
<bean id="sampleAction" class="com.example.SampleAction" /> -
在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年前 -
-
要在Spring中调用Struts2,可以遵循以下步骤:
- 首先,确保在项目中引入了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>- 在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" />- 创建一个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); } }- 创建一个Spring的服务类,并在Struts2的Action类中调用该服务。
public class SpringService { public void doSomething() { // 执行业务逻辑 } }- 最后,在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年前 -
Spring和Struts2是两个主流的Java框架,它们在Web应用开发中都被广泛使用。Spring作为一个容器框架,它可以作为中间层集成其他框架,包括Struts2。下面将介绍如何在Spring中调用Struts2。
- 配置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下。
- 配置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>- 配置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。- 编写控制器和处理方法
在Spring MVC中,控制器类用于处理请求并返回响应。可以在控制器类中直接使用Struts2的注解,例如:
@Controller public class MyController { @RequestMapping("/hello") public String hello() { return "success"; } }在上面的例子中,
@Controller注解表示这是一个Spring MVC的控制器类,@RequestMapping("/hello")指定了处理请求的URL路径。在方法体中,可以直接返回Struts2的结果字符串,例如"success"。- 配置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页面作为结果。- 编写视图页面
在Web应用的WEB-INF目录下创建hello.jsp页面,用于展示视图。例如:
<!DOCTYPE html> <html> <head> <title>Hello</title> </head> <body> <h1>Hello, World!</h1> </body> </html>- 运行Web应用
根据配置的URL路径,访问相应的URL可以调用对应的控制器方法,并返回结果视图。
总结:
通过以上步骤,我们可以在Spring中调用Struts2。Spring作为容器框架,可以用于管理和组装各个框架的组件。通过配置Spring MVC和Struts2,并在控制器中使用Struts2的注解,可以方便地在Spring中调用Struts2的功能。1年前 - 配置Spring MVC和Struts2的依赖