无线&移动互联网技术研发

换位思考·····
posts - 19, comments - 53, trackbacks - 0, articles - 283
  BlogJava :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理

struts1中,获得到系统的request或者session对象非常方便,都是按照形参传递的,但是在struts2中,requestsession都被隐藏了

struts提供两种方式访问sessionrequest,其中比较常用的是利用SPRING里面所说的IOC即控制反转

IOC方式:

action类实现ServletRequestAware接口,并新建一个HttpServletRequest request

public class UserLoginAction extends ActionSupport implements ServletRequestAware {

public void setServletRequest(HttpServletRequest request) {

this.request=request;

}

然后可以生成的request得到对象,如request.getRemoteAddr()

action类实现SessionAware接口,并创建一个MAP对象session

public class UserLoginAction extends ActionSupport implements ServletRequestAware,SessionAware{

public void setServletRequest(HttpServletRequest request) {

this.request=request;

}

public void setSession(Map session) {

this.session=session; 

}

Ioc方式

这种方式主要是利用了com.opensymphony.xwork2.ActionContext类以及org.apache.struts2.ServletActionContext类,具体的方法如下所示。

获得request对象:

A. HttpServletRequest request = ServletActionContext.getRequest ();

BActionContext ct = ActionContext.getContext()

   HttpServletRequest request = (HttpServletRequest)ct.get(ServletActionContext. HTTP_REQUEST );

获得session对象:

Struts2中底层的session都被封装成了Map类型,我们称之为SessionMap,而平常我们所说的session则是指HttpSession对象,具体的获得方法如下所示。

AMap session = ActionContext.getSession();

BMap session = (Map)ActionContext.getContext().get(ActionContext.SESSION);

得到这个SessionMap之后我们就可以对session进行读写了,如果我们想得到原始的HttpSession可以首先得到HttpServletRequest对象,然后通过request.getSession()来取得原始的HttpSession对象。一般情况下SessionMap已经可以完成所有的工作,我们不必再去碰底层的session了。


只有注册用户登录后才能发表评论。


网站导航: