Struts2入门
怎样实现struts2和spring的整合?
一、struts2整合到spring容器的步骤:
web.xml配置:
1.【web监听spring容器上下文对象】
1 <!-- web监听 --> 2 <listener> 3 <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> 4 </listener>
2.【初始化Spring容器,加载spring核心配置文件】
1 <!-- 初始化Spring容器 --> 2 <context-param> 3 <param-name>contextConfigLocation</param-name> 4 <param-value>/WEB-INF/configs/applicationContext.xml</param-value> 5 </context-param>
spring容器配置:applicationContext.xml,导入负责处理业务bean和持久化bean的配置,需要额外添加对controller层的action bean管理的支持。(将action bean交给spring容器管理)
applicationContext.xml详细配置:
1 <?xml version="1.0" encoding="UTF-8"?> 2 <beans xmlns="http://www.springframework.org/schema/beans" 3 xmlns:context="http://www.springframework.org/schema/context" 4 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 5 xsi:schemaLocation="http://www.springframework.org/schema/beans 6 http://www.springframework.org/schema/beans/spring-beans.xsd 7 http://www.springframework.org/schema/context 8 http://www.springframework.org/schema/context/spring-context.xsd"> 9 10 <!-- 导入spring配置 --> 11 <import resource="spring-service.xml" /> 12 <import resource="spring-dao.xml" /> 13 14 <!-- 打开组件扫描controller,将action对象管理起来 --> 15 <context:component-scan base-package="com.entor.rams.actions"> 16 <!-- 只对@Controller --> 17 <context:include-filter type="annotation" 18 expression="org.springframework.stereotype.Controller" /> 19 </context:component-scan> 20 </beans>
3.【配置struts2核心过滤器,过滤所有的请求】
1 <!-- 配置struts过滤器,接管所有的请求 --> 2 <filter> 3 <filter-name>struts2</filter-name> 4 <filter-class>org.apache.struts2.dispatcher.filter.StrutsPrepareAndExecuteFilter</filter-class> 5 </filter> 6 <filter-mapping> 7 <filter-name>struts2</filter-name> 8 <url-pattern>/*</url-pattern> 9 </filter-mapping>
4.【加载struts2核心配置】
struts2核心配置:struts.xml,负责处理controller层的action bean以及前端控制功能,声明action对象的管理交给spring容器。
struts.xml详细配置:
1 <?xml version="1.0" encoding="UTF-8"?> 2 <!DOCTYPE struts PUBLIC 3 "-//Apache Software Foundation//DTD Struts Configuration 2.5//EN" 4 "http://struts.apache.org/dtds/struts-2.5.dtd"> 5 <struts> 6 <!-- 常量配置 --> 7 <!-- 开发模式打开 --> 8 <constant name="struts.devMode" value="true" /> 9 <!-- 声明action对象的管理交给spring容器 --> 10 <constant name="struts.objectFactory" value="spring" /> 11 <!-- 通过Action的限制得到结果页面路径 --> 12 <constant name="struts.convention.result.path" value="/WEB-INF/jsps/" /> 13 </struts>
二、UserAction继承ActionSupport实现ModelDrive<T>
1.ModelDrive<T>提供了对参数整体封装
2.必须提供getModel方法并实现(由这个方法接收并封装请求参数)
3.如果想在jsp页面使用el表达式直接访问参数,可以在action中将参数声明为成员,并提供这个成员的getter方法。