Struts2中访问HttpServletRequest和HttpSession
2019獨角獸企業重金招聘Python工程師標準>>>
關鍵字: struts2 httpservletrequest httpsession
????? 在沒有使用Struts2之前,都習慣使用HttpServletRequest和HttpSession對象來操作相關參數,下面介紹一下在Struts2中訪問隱藏的HttpServletRequest和HttpSession的兩種方法:
1.非Ioc方式
這種方式主要是利用了com.opensymphony.xwork2.ActionContext類以及ora.apache.struts2.ServletActionContext類,具體的方法如下所示。
獲得request對象:
1).HttpServletRequest request = ServletActionContext.getRequest ();
2).ActionContext ct=?ActionContext.getContext();
???HttpServletRequest?request=
(HttpServletRequest)ct.get(ServletActionContext.HTTP_REQUEST);
獲得session對象:
在Struts2中底層的session都被封裝成了Map類型,我們稱之為SessionMap,而平常我們所說的session則是指HttpSession對象,具體的獲得方法如下所示。
1).Map session=ActionContext.getSession();
2).Map session=(Map)ActionContext.getContext().get(ActionContext.SESSION);
得到這個SessionMap之后我們就可以對session進行讀寫了,如果我們想得到原始的HttpSession可以首先得到HttpServletRequest對象,然后通過request.getSession()來取得原始的HttpSession對象。一般情況下SessionMap已經可以完成所有的工作,我們不必再去強行使用底層的session了。
2.IoC方式
這種方式相對來說變化就比較少了,下面給出代碼大家自己看吧:
import?javax.servlet.http.HttpServletRequest;??? import?javax.servlet.http.HttpServletResponse;??? import?javax.servlet.http.HttpSession;???import?org.apache.struts2.interceptor.ServletRequestAware;??? import?org.apache.struts2.interceptor.ServletResponseAware;??? import?org.apache.struts2.interceptor.SessionAware;???import?com.opensymphony.xwork2.ActionContext;??? import?com.opensymphony.xwork2.ActionSupport;???publicclass?IoCServlet?extends?ActionSupport?implements?SessionAware,?ServletRequestAware,?ServletResponseAware?{???private?String?message;???private?Map?att;???private?HttpServletRequest?request;???private?HttpServletResponse?response;???????public?String?getMessage()?{???return?message;???????????}???publicvoid?setSession(Map?att)?{???this.att?=?att;???}???publicvoid?setServletRequest(HttpServletRequest?request)?{???this.request?=?request;???}???publicvoid?setServletResponse(HttpServletResponse?response)?{???this.response?=?response;???}???@Override??public?String?execute()?{???????????att.put("msg",?"Hello?World?from?Session!");???HttpSession?session?=?request.getSession();???StringBuffer?sb?=new?StringBuffer("Message?from?request:?");???sb.append(request.getParameter("msg"));???sb.append("<br>Response?Buffer?Size:?");???sb.append(response.getBufferSize());???sb.append("<br>Session?ID:?");???sb.append(session.getId());???message?=?sb.toString();???return?SUCCESS;???}??? }?
import?javax.servlet.http.HttpServletRequest;?? import?javax.servlet.http.HttpServletResponse;?? import?javax.servlet.http.HttpSession;??import?org.apache.struts2.interceptor.ServletRequestAware;?? import?org.apache.struts2.interceptor.ServletResponseAware;?? import?org.apache.struts2.interceptor.SessionAware;??import?com.opensymphony.xwork2.ActionContext;?? import?com.opensymphony.xwork2.ActionSupport;??publicclass?IoCServlet?extends?ActionSupport?implements?SessionAware,?ServletRequestAware,?ServletResponseAware?{??private?String?message;??private?Map?att;??private?HttpServletRequest?request;??private?HttpServletResponse?response;??????public?String?getMessage()?{??return?message;??????????}??publicvoid?setSession(Map?att)?{??this.att?=?att;??}??publicvoid?setServletRequest(HttpServletRequest?request)?{??this.request?=?request;??}??publicvoid?setServletResponse(HttpServletResponse?response)?{??this.response?=?response;??}??@Override??public?String?execute()?{??????????att.put("msg",?"Hello?World?from?Session!");??HttpSession?session?=?request.getSession();??StringBuffer?sb?=new?StringBuffer("Message?from?request:?");??sb.append(request.getParameter("msg"));??sb.append("<br>Response?Buffer?Size:?");??sb.append(response.getBufferSize());??sb.append("<br>Session?ID:?");??sb.append(session.getId());??message?=?sb.toString();??return?SUCCESS;??}?? }轉載于:https://my.oschina.net/u/1462795/blog/305094
創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎總結
以上是生活随笔為你收集整理的Struts2中访问HttpServletRequest和HttpSession的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 天天梦到女朋友出轨怎么回事
- 下一篇: 安装NTOP网络监控工具(wheezy)