您好,欢迎访问三七文档
Action中取得request,session的四种方法在Struts2中,从Action中取得request,session的对象进行应用是开发中的必需步骤,那么如何从Action中取得这些对象呢?Struts2为我们提供了四种方式。分别为servlet不相关的非IoC取得Request等对象的方式servlet不相关的IoC取得Request等对象的方式servlet相关的非IoC取得Request等对象的方式servlet相关的IoC取得Request等对象的方式以下分别叙述。首先请看struts.xml文件文件内容:?xmlversion=1.0encoding=UTF-8?!DOCTYPEstrutsPUBLIC-//ApacheSoftwareFoundation//DTDStrutsConfiguration2.0//EN=defaultextends=struts-defaultactionname=loginclass=struts2.login.LoginActionresultname=successresult.jsp/result/actionactionname=login2class=struts2.login.Login2Actionresultname=successresult.jsp/result/actionactionname=login3class=struts2.login.Login3Actionresultname=successresult.jsp/result/actionactionname=login4class=struts2.login.Login4Actionresultname=successresult.jsp/result/action/package/struts其中的LoginAction,Login2Action,Login3Action,Login4Action分别对应四种方式的Action。文件名:result.jsp文件内容:%@pagecontentType=text/html;charset=gb2312%%@tagliburi=/struts-tagsprefix=s%htmlrequest属性是${requestScope.attribute}brsession属性是${sessionScope.attribute}brapplication属性是${applicationScope.attribute}br/html文件名:getrequest.jsp文件内容:%@pagecontentType=text/html;charset=gb2312%%@tagliburi=/struts-tagsprefix=s%htmlahref=login.actionservlet不相关的非IoC取得Request等对象的方式/abrahref=login2.actionservlet不相关的IoC取得Request等对象的方式/abrahref=login3.actionservlet相关的非IoC取得Request等对象的方式/abrahref=login4.actionservlet相关的IoC取得Request等对象的方式/abr/form/html然后分别叙述4种方式,1,servlet不相关的非IoC取得Request等对象的方式这种方法先取得ActionContext,然后获取Map类型的request等对象Action文件:packagestruts2.login;importjava.util.Map;importcom.opensymphony.xwork2.ActionContext;importcom.opensymphony.xwork2.ActionSupport;publicclassLoginActionextendsActionSupport{privateActionContextcontext;privateMaprequest;privateMapsession;privateMapapplication;@OverridepublicStringexecute()throwsException{//TODOAuto-generatedmethodstubthis.context=ActionContext.getContext();this.request=(Map)this.context.get(request);this.session=this.context.getSession();this.application=this.context.getApplication();this.request.put(attribute,requestvalueservlet不相关的非IoC);this.session.put(attribute,sessionvalueservlet不相关的非IoC);this.application.put(attribute,applicationvalueservlet不相关的非IoC);returnSUCCESS;}}2,servlet不相关的IoC取得Request等对象的方式这种方法,是实现特定的接口,由container来设定request等对象。请注意如下代码示例中红色文字的部分。Action文件:packagestruts2.login;importjava.util.Map;importorg.apache.struts2.interceptor.ApplicationAware;importorg.apache.struts2.interceptor.RequestAware;importorg.apache.struts2.interceptor.SessionAware;importcom.opensymphony.xwork2.ActionSupport;publicclassLogin2ActionextendsActionSupportimplementsRequestAware,SessionAware,ApplicationAware{privateMaprequest;privateMapsession;privateMapapplication;@OverridepublicStringexecute()throwsException{//TODOAuto-generatedmethodstubthis.request.put(attribute,requestvalueservlet不相关的IoC);this.session.put(attribute,sessionvalueservlet不相关的IoC);this.application.put(attribute,applicationvalueservlet不相关的IoC);returnSUCCESS;}@OverridepublicvoidsetRequest(Maparg0){//TODOAuto-generatedmethodstubthis.request=arg0;}@OverridepublicvoidsetSession(Maparg0){//TODOAuto-generatedmethodstubthis.session=arg0;}@OverridepublicvoidsetApplication(Maparg0){//TODOAuto-generatedmethodstubthis.application=arg0;}}3,servlet相关的非IoC取得Request等对象的方式这种方法可以获取servlet相关的request等对象,也就是说这种方式取出的request对象不单单是设定属性的作用,而是可以获取http相关的信息。取出方法,请参看代码中的蓝字部分。Action文件:packagestruts2.login;importjavax.servlet.ServletContext;importjavax.servlet.http.HttpServletRequest;importjavax.servlet.http.HttpSession;importorg.apache.struts2.ServletActionContext;importcom.opensymphony.xwork2.ActionSupport;publicclassLogin3ActionextendsActionSupport{privateHttpServletRequestrequest;privateHttpSessionsession;privateServletContextapplication;@OverridepublicStringexecute()throwsException{//TODOAuto-generatedmethodstubthis.request=ServletActionContext.getRequest();this.session=this.request.getSession();this.application=ServletActionContext.getServletContext();this.request.setAttribute(attribute,requestvalueservlet相关的非IoC);this.session.setAttribute(attribute,sessionvalueservlet相关的非IoC);this.application.setAttribute(attribute,applicationvalueservlet相关的非IoC);returnSUCCESS;}}4,servlet相关的IoC取得Request等对象的方式这种方法也可以获取servlet相关的request等对象,也就是说这种方式取出的request对象不单单是设定属性的作用,而是可以获取http相关的信息。但是取出方法是通过接口进行实现,也就是由struts2的container来设定,请参看代码中的红字部分。Action文件:packagestruts2.login;importjavax.servlet.ServletContext;importjavax.servlet.http.HttpServletRequest;importjavax.servlet.http.HttpSession;importorg.apache.struts2.interceptor.ServletRequestAware;importorg.apache.struts2.util.ServletContextAware;importcom.opensymphony.xwork2.ActionSupport;publicclassLogin4ActionextendsActionSupportimplementsServletRequestAware,ServletContextAware{privateHttpServletRequestrequest;privateHttpSessionsession;privateServletContextapplication;@OverridepublicStringexecute()throwsException{//TODOAuto-genera
本文标题:Struts2
链接地址:https://www.777doc.com/doc-3364159 .html