struts2中Action获得request、session、application进行设值和取值的方法

由于后台的Action和前台进行通讯的时候,不做处理会拿不到request、session、application所设的值,那么前后台之间的通讯就会受到影响;我们可以通过几种办法来

获取这些对象一遍使用来进行前后台之间的通讯。

1.取得Map类型的request、session、application:

A

1.在Action类中定义private Map request;private Map session;private Map application;

2.在其无参构造方法中将其初始化request=(Map)ActionContext.getContext().get("request");session=(Map)ActionContext.getContext().getSession();

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

然后在execute()或者是自己定义的方法中使用这些对象进行设值。

在前台可以通过<s:property value="#request:xx" /> <s:property value="#session:xx" /> <s:property value="#application:xx" /> 其中xx表示你自己在request、session、

application中设定的key。

B

1.让Action类实现RequestAware、SessionAware、ApplicationAware接口

2.在Action类中定义private Map<String,Object> request;private Map<String,Object> session;private Map<String,Object> application;

3.覆盖接口中的setRequest(Map<String,Object>  request);setSession(Map<String,Object>  session);setApplication(Map<String,Object>  application);

这种方式最常用而且request很少去拿,Action中的成员变量会默认放到ValueStack中;application也基本不用;常用的就是session

2.取得真实类型的request、session、application:

A

1.在Action类中定义private HttpServletRequest request;private HttpSession session;private ServletContext application;

2.在构造方法中依次初始化:request = ServletActionContext.getRequest();session =request.getSession();application=session.getServletContext();

然后在execute()或者是自己定义的方法中使用这些对象进行设值。

B

1.Action类实现ServletRequestAware接口

2.在Action类中定义private HttpServletRequest request;private HttpSession session;private ServletContext application;

3.覆盖setServletRequest(HttpServletRequest request)方法

public void setServletRequest(HttpServletRequest request){

this.request = request;

this.session= request.getSession();

this.application = session.getServletContext();

}

然后在execute()或者是自己定义的方法中使用这些对象进行设值。


评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值