JAVA獲得request.session.Context等對象:
一非IOC方式:
這種方式主要是利用了com.opensymphony.xwork2.ActionContext類(lèi)以及org.apache.struts2.ServletActionContext類(lèi),具體的方法如下所示。
獲得request對象:
A . HttpServletRequest request = ServletActionContext.getRequest ();
B. ActionContext ct= ActionContext.getContext()
HttpServletRequest request=
(HttpServletRequest)ct.get(ServletActionContext. HTTP_REQUEST );
獲得session對象:
在Struts2中底層的session都被封裝成了Map類(lèi)型,我們稱(chēng)之為SessionMap,而平常我們所說(shuō)的session則是指HttpSession對象,具體的獲得方法如下所示。
A.Map session=ActionContext.getSession();
B.Map session=(Map)ActionContext.getContext().get(ActionContext.SESSION);
得到這個(gè)SessionMap之后我們就可以對session進(jìn)行讀寫(xiě)了,如果我們想得到原始的HttpSession可以首先得到HttpServletRequest對象,然后通過(guò)request.getSession()來(lái)取得原始的HttpSession對象。一般情況下SessionMap已經(jīng)可以完成所有的工作,我們不必再去碰底層的session了
struts提供兩種方式訪(fǎng)問(wèn)session和request,其中比較常用的是利用SPRING里面所說(shuō)的IOC即控制反轉
二:IOC方式:
action類(lèi)實(shí)現ServletRequestAware接口,并新建一個(gè)HttpServletRequest request
public class UserLoginAction extends ActionSupport implements ServletRequestAware{
public void setServletRequest(HttpServletRequest request) {
this.request=request;
}
然后可以生成的request得到對象,如request.getRemoteAddr()
action類(lèi)實(shí)現SessionAware接口,并創(chuàng )建一個(gè)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;
}
聯(lián)系客服