Struts2学习笔记03

来源:互联网 发布:js return 多个值 编辑:程序博客网 时间:2024/06/06 11:18

1.     Action组件的相关使用

1.     Action组件的原理

                      i.             客户发出action请求给struts控制器

                    ii.             Struts控制器会首先创建valuestack对象

                 iii.             Struts控制器根据请求创建action对象,并且将action对象压入valuestack的root栈顶(Action线性安全,不用考虑并发问题)

                 iv.             Struts控制器将请求相关的request,session对象放入到valuestack的context区域

                    v.             Struts控制器执行action对象的execute方法处理请求

                 vi.             Struts控制器根据execute结果生成响应信息输出

               vii.             请求处理完毕,销毁valuestack和action对象

2.     *Action中如何使用session,request

                      i.             利用ActionContext和ServletActionContext工具类

1.       ActionContext可以获取action对象中常用的session,request,application等对象,通过ActionContext获取的均是struts框架封装称MAP类型的对象。

2.       ServletActionContext返回的是Servlet中使用的request,session,application原有类型。

3.       使用建议:存值取值建议使用Map结构API,如果有特殊需求再采用Servlet原有类型

                    ii.             利用Aware接口方式注入(推荐)—编写一个类base,继承Aware接口,调用的时候通过继承base,从而灵活调用Aware里的方法。

1.       RequestAware对应的是Map结构的Request

2.       SessionAware对应的Map结构的session

3.       ApplicationAware对应的是Map结构的Application

4.       ServletRequestAware 对应的是HttpRequestAware

5.       ServletResponseAware 对应的是HttpResponseAware

6.       ServletApplicationAware对应的是HttpApplicationAware

建议:Action使用时采用Aware方式,Action之外使用时,采用ActionContext;

Aware的包装模式:

----如何将原有HttpSession封装成Map------

publicclass SessionMap extends AbstractMap{

 

    private HttpSession session;  

 

     public SessionMap(HttpSession session){

          this.session = session;

    }

 

      public void put(Object key,Object val){

          session.setAttribute(key,val);

     }

 

     public Object get(Object key){

         session.getAttribute(key);

     }

}

3.     Action属性注入

  i.   在<action>配置中,为Action对象的属性指定初始值使用格式如下

<actionname=”feelist” class=”org.action.FeeListAction”>

<pramaname=”属性名”>属性值</prama>

(备注:创建Action对象时,指定给属性的值)

<result></result>

4.     Action通配符配置

 i.    在<actionname=”action_*” method=”{1}” class=”a.action”

*代表0到多个字符,也可以有若干个*,例如一个请求为:action_add,则*代表add,就会自动调用a.action里的对应方法。不过要保证a.action里存在相同的方法名,否则会调用失败。

 i.   Result组件的使用

5.     Result组件原理

Result组件的作用

  i.     Result组件负责生成响应视图内容。

  ii.  Struts2框架提供了多种不同的result组件类型,用于做不同形式的响应。例如json数据响应,流数据响应,jsp响应等。

Result组件相关配置

results声明定义

a)       result-types name=”result类型” class=“Result组件实现类”/>

Result使用定义

      <action>

<resultname=”标示符”

type=”result类型”></result>

</action>

  i.    掌握经常使用的Result组件

1.       JSP视图

a)       Dispatcher(默认):以转发方式调用JSP

b)      Redirect: 以重定向方式调用JSP

2.       Action视图

a)       Chain:以转发方式调用下一个Action

b)      Redirect:以重定向方式调用下一个Action

原创粉丝点击