Struts2+Spring整合
1.目的:用Spring管理Action,Service,Dao等组件
1)将Struts2的Action交给Spring
*引入spring包和配置文件
*开启组件扫描,扫描Action(采用非单例模式创建)
2)请求到Filter去Spring容器获取Action对象
*引入了struts2-spring-plugin.jar包
*修改<action>配置的class属性,将其指定为Spring容器中Controller对象Id
*追加web.xml中ContextLoaderListener配置,
为struts2-spring-plugin.jar指定访问的Spring容器
2.StrutsObjectFactory:利用反射创建Action对象
引入struts2-spring-plugin.jar后,将Struts2底层的ObjectFactory改成了StrutsSpringObjectFactory,
StrutsSpringObjectFactory去访问Spring容器获取Action对象
3.Result组件应用
1)常用类型:dispatcher,redirect,redirectAction,stream,json等
2)使用方法:<result type="指定类型">定义参数</result>
3)调用JSP响应
*dispatcher转发
<result name="success" type="dispatcher">/list.jsp</result>
*redirect重定向
<result name="success" type="redirect">/list.jsp</result>
4)调用Action响应
请求-->Action1-->result-->Action2...
*chain转发
<result name="success" type="chain">
<param name="actionName">请求名</param>
<param name="namespace">请求前缀</param>
</result>
*redirectAction重定向
<result name="success" type="redirectAction">
<param name="actionName">请求名</param>
<param name="namespace">请求前缀/param>
</result>
5)stream流响应
可以将服务器信息以字节流方式响应
<result type="stream">
<param name="inputName">Action中属性名</param>
</result>
Action中属性类型,必须是符合InputStream
6)json响应(在struts2-json-plugin.jar)
作用:将Action属性值转成json字符串输出
*<result type="json">
<param name="root">属性名</param>
</result>
*<result type="json">
<param name="includeProperties">属性名1,属性名2,属性名3...</param>
</result>
4.拦截器组件应用
请求-->StrutsPrepareAndExecuteFilter
拦截点1-->Action-->Service-->Dao
-->Result-->拦截点2
-->JSP-->响应输出
拦截器使用
*编写拦截器组件
实现Interceptor接口及方法
*配置拦截器组件
定义格式:<interceptor name="名字" class="">
使用格式:<interceptor-ref name="名字"/>
5.Struts2总结
1)主要组件及工作流程
Filter控制器-->拦截器-->Action-->Result-->拦截器-->ValueStack
2)Action组件使用
*属性作用
*方法规则
*request,session使用方法
3)Result组件使用
*了解Result组件类型
熟悉dispatcher,Redirect,RedirectAction,json使用
*拦截器
a.拦截器使用方法
b.了解框架内置拦截器
默认执行defaultStack拦截器,如果为<action>制定了拦截器,defaultStack不再执行,
会破坏原有Struts2流程功能,必须显示调用
4)ValueStack 被称为值栈 有两个属性root属性(栈结构),context属性(Map类型)
*作用:存储请求处理期间相关的一些数据对象
例如action,session,application,request,parameters等
请求处理期间需要使用这些对象,Filter控制器去ValueStack中查找获取对象信息
*如何访问
采用ognl工具队其数据进行访问
a.获取valuestack中对象属性值
b.设置valuestack中对象属性值
c.调用valuesstack中对象方法
1.目的:用Spring管理Action,Service,Dao等组件
1)将Struts2的Action交给Spring
*引入spring包和配置文件
*开启组件扫描,扫描Action(采用非单例模式创建)
2)请求到Filter去Spring容器获取Action对象
*引入了struts2-spring-plugin.jar包
*修改<action>配置的class属性,将其指定为Spring容器中Controller对象Id
*追加web.xml中ContextLoaderListener配置,
为struts2-spring-plugin.jar指定访问的Spring容器
2.StrutsObjectFactory:利用反射创建Action对象
引入struts2-spring-plugin.jar后,将Struts2底层的ObjectFactory改成了StrutsSpringObjectFactory,
StrutsSpringObjectFactory去访问Spring容器获取Action对象
3.Result组件应用
1)常用类型:dispatcher,redirect,redirectAction,stream,json等
2)使用方法:<result type="指定类型">定义参数</result>
3)调用JSP响应
*dispatcher转发
<result name="success" type="dispatcher">/list.jsp</result>
*redirect重定向
<result name="success" type="redirect">/list.jsp</result>
4)调用Action响应
请求-->Action1-->result-->Action2...
*chain转发
<result name="success" type="chain">
<param name="actionName">请求名</param>
<param name="namespace">请求前缀</param>
</result>
*redirectAction重定向
<result name="success" type="redirectAction">
<param name="actionName">请求名</param>
<param name="namespace">请求前缀/param>
</result>
5)stream流响应
可以将服务器信息以字节流方式响应
<result type="stream">
<param name="inputName">Action中属性名</param>
</result>
Action中属性类型,必须是符合InputStream
6)json响应(在struts2-json-plugin.jar)
作用:将Action属性值转成json字符串输出
*<result type="json">
<param name="root">属性名</param>
</result>
*<result type="json">
<param name="includeProperties">属性名1,属性名2,属性名3...</param>
</result>
4.拦截器组件应用
请求-->StrutsPrepareAndExecuteFilter
拦截点1-->Action-->Service-->Dao
-->Result-->拦截点2
-->JSP-->响应输出
拦截器使用
*编写拦截器组件
实现Interceptor接口及方法
*配置拦截器组件
定义格式:<interceptor name="名字" class="">
使用格式:<interceptor-ref name="名字"/>
5.Struts2总结
1)主要组件及工作流程
Filter控制器-->拦截器-->Action-->Result-->拦截器-->ValueStack
2)Action组件使用
*属性作用
*方法规则
*request,session使用方法
3)Result组件使用
*了解Result组件类型
熟悉dispatcher,Redirect,RedirectAction,json使用
*拦截器
a.拦截器使用方法
b.了解框架内置拦截器
默认执行defaultStack拦截器,如果为<action>制定了拦截器,defaultStack不再执行,
会破坏原有Struts2流程功能,必须显示调用
4)ValueStack 被称为值栈 有两个属性root属性(栈结构),context属性(Map类型)
*作用:存储请求处理期间相关的一些数据对象
例如action,session,application,request,parameters等
请求处理期间需要使用这些对象,Filter控制器去ValueStack中查找获取对象信息
*如何访问
采用ognl工具队其数据进行访问
a.获取valuestack中对象属性值
b.设置valuestack中对象属性值
c.调用valuesstack中对象方法