/hello.action-->Filter控制器-->HelloAction(Spring)-->Result-->/WEB-INF/hello.jsp
搭建Struts2+Spring环境
- 引入struts2和spring的jar包
- 引入struts.xml和applicationContext.xml
引入struts2-spring-plugin.jar包
<dependencies> <!-- struts相关包 --> <dependency> <groupId>org.apache.struts</groupId> <artifactId>struts2-core</artifactId> <version>2.5.14.1</version> </dependency> <dependency> <groupId>org.apache.struts</groupId> <artifactId>struts2-json-plugin</artifactId> <version>2.5.14.1</version> </dependency> <!-- 测试包 --> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.12</version> </dependency> <!-- jsp相关包 --> <dependency> <groupId>jstl</groupId> <artifactId>jstl</artifactId> <version>1.2</version> </dependency> <!-- struts+spring,会自动将spring相关包引入 --> <dependency> <groupId>org.apache.struts</groupId> <artifactId>struts2-spring-plugin</artifactId> <version>2.5.14.1</version> </dependency> </dependencies>
在web.xml配置ContextLoaderListener
<context-param> <param-name>contextConfigLocation</param-name> <param-value>classpath:applicationContext.xml</param-value> </context-param> <!-- 内部加载contextConfigLocation指定的配置文件,创建Spring容器给StrutsSpringObjectFactory访问 --> <listener> <listener-class> org.springframework.web.context.ContextLoaderListener </listener-class> </listener>
编写HelloAction,将它纳入Spring容器中
HelloAction.java
@Controller//默认id名为helloAction public class HelloAction { public String execute(){ System.out.println("进入HelloAction"); return "success"; } }
spring配置
<context:component-scan base-package="cn.xdl"/>
编写hello.jsp
配置Struts2请求响应处理流程
配置Filter控制器
<filter> <filter-name>strutsmvc</filter-name> <filter-class> org.apache.struts2.dispatcher.filter.StrutsPrepareAndExecuteFilter </filter-class> <!-- 默认访问struts.xml --> </filter> <filter-mapping> <filter-name>strutsmvc</filter-name> <url-pattern>/*</url-pattern> </filter-mapping>
配置Action+Result
<package name="demo1" extends="struts-default"> <!-- StrutsSpringObjectFactory根据class名做id查找Spring容器的Action对象 --> <action name="hello" class="helloAction"> <result>/WEB-INF/hello.jsp</result> </action> </package>