Struts2里面的action传值方式

本文包含知识点:

1.ActionContext对象及其方法

2.Action参数的传递


=======ActionContext对象及其方法=========

 

在Struts2.0中,Action已经与Servlet API完全分离,这使得Struts2.0的Action具有了更加灵活和低耦合的特性,与Struts1.0相比较而言是个巨大的进步。虽然Struts2.0的Action已经与Servlet API完全分离,但我们在实现业务逻辑处理时经常需要访问Servlet中的对象,如Session、Application等。Struts2.0 提供了一个名字为ActionContext的类,在Action中可以通过该类获得Servlet API。

 ActionContext是一个Action的上下文对象,Action运行期间所用到的数据都保存在ActionContext中(如Session,客户端提交的参数等信息)。
  在Action中可以通过下面的代码来创建和使用ActionContext类,关于该类的方法介绍如下所示: 
ActionContext ac=ActionContext.getContext(); 

以下是ActionContext类的常用方法 
1.Object get(Object key) :通过参数key来查找当前ActionContext中的值 
2.Map getApplication() :返回一个Application级的Map对象 
3.Static ActionContext getContext() :获得当前线程的ActionContext对象 
4.Map getParameters() :返回一个包含所有HttpServletRequest参数信息的Map对象 
5.Map getSession() :返回一个Map类型的HttpSession对象 
6.Void put(Object key,Object value) :向当前ActionContext对象中存入名值对信息 
7.Void setApplication(Map application) :设置Application上下文 
8.Void setSession(Map session) :设置一个Map类型的Session值

===========================Action参数的传递================================

一般在Action里面会存放全局变量和局部变量的值,然后在对应的逻辑视图页面进行参数的接收。

全局变量的接收

1.通过struts2标签获取(<s:property value="name"/>),

2.el表达式(${name})

3.ognl表达式(<s:property value="#request.name"/>)。

4.嵌入java代码<%=request.getParameter("name")%>或者<%=request.getAttribute("name")%>,当然嵌入java代码的写法不推荐使用。


局部变量的设定和接收有如下几种方式:

(由于采用的是struts2框架,所以接收页面采用的都是struts2标签。当然可以选择其他的,这里就不赘述。)

1..获取Map类型的request、response、application。最常用的实例化方法如下:

Map request = (Map)ActionContext.getContext().get("request");

Map session = (Map)ActionContext.getContext().getSession();

Map application =(Map) ActionContext.getContext().getApplication();

设置值后 :request.put("name",name);

可以在Jsp页面获取 <s:property value="#request.name"/> 说明:<s:property/>为struts2的标签。

其他初始化方法详见http://blog.csdn.net/jdfkldjlkjdl/article/details/13770491


2.直接用ActionContext的对象传值:

 ActionContext.getContext().put("name",name);

在jsp页面通过如下方式获取name值:<s:property value="#request.name"/>



3.获取Servlet里面的request对象

HttpServletRequest req = ServletActionContext.getRequest();

req.setAttribute("name",name);

可以在Jsp页面获取 <s:property value="#request.name"/>


4.获取Servlet里面的session对象(适用于重定向之后的jsp页面接收参数(前面几种无法传参时使用))

HttpServletRequest req = ServletActionContext.getRequest();//先获得request对象

HttpSession session1 = req.getSession(); //通过request对象获得session

session1.setAttribute("name",name);

可以在Jsp页面获取 <s:property value="#session.name"/>

注意:不论设置attribute的request/session名称是什么,jsp都用request/session关键字接收,Map类型的request/session等同。




你可能感兴趣的:(struts2)