您的位置:首页 > 编程语言 > Java开发

Spring+Struts2

2016-07-12 23:04 232 查看
 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中对象方法  
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息