struts2 action中获取上下文

静态获取spring中配置的ioc

WebApplicationContext wac = WebApplicationContextUtils.getRequiredWebApplicationContext(filterConfig.getServletContext());
        adminMng = (AdminMng) wac.getBean(BEAN_NAME, AdminMng.class);

获取webroot的绝对路径

ServletContext servletContext = (ServletContext)ActionContext.getContext().get(ServletActionContext.SERVLET_CONTEXT);

String rootPath = servletContext.getRealPath("/");


在Struts2中,从Action中取得request,session的对象进行应用是开发中的必需步骤,那么如何从Action中取得这些对象呢?Struts2为我们提供了四种方式。分别为servlet 不相关的 非IoC 取得Request等对象的方式servlet 不相关的 IoC 取得Request等对象的方式servlet 相关的 非IoC 取得Request等对象的方式servlet 相关的 IoC 取得Request等对象的方式以下分别叙述。首先请看struts.xml文件文件内容:

  1. <?xml version="1.0" encoding="UTF-8" ?>  
  2. <!DOCTYPE struts PUBLIC  
  3.     "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"  
  4.     "http://struts.apache.org/dtds/struts-2.0.dtd">  
  5.   
  6. <struts>  
  7.   
  8.     <package name="default" extends="struts-default">  
  9.         <action name="login" class="struts2.login.LoginAction">  
  10.             <result name="success" >result.jsp</result>  
  11.         </action>  
  12.          
  13.         <action name="login2" class="struts2.login.Login2Action">  
  14.             <result name="success" >result.jsp</result>  
  15.         </action>  
  16.          
  17.         <action name="login3" class="struts2.login.Login3Action">  
  18.             <result name="success" >result.jsp</result>  
  19.         </action>  
  20.          
  21.         <action name="login4" class="struts2.login.Login4Action">  
  22.             <result name="success" >result.jsp</result>  
  23.         </action>  
  24.     </package>  
  25.      
  26. </struts>  
  27.   
  28. 其中的LoginAction,Login2Action,Login3Action,Login4Action分别对应四种方式的Action。  
  29.   
  30. 文件名:result.jsp  
  31. 文件内容:  
  32. <%@ page contentType="text/html; charset=gb2312" %>  
  33. <%@ taglib uri="/struts-tags" prefix="s"%>  
  34.   
  35. <html>  
  36. request 属性是 ${requestScope.attribute}<br>  
  37. session 属性是 ${sessionScope.attribute}<br>  
  38. application 属性是 ${applicationScope.attribute}<br>  
  39. </html>  
  40.   
  41. 文件名:getrequest.jsp  
  42. 文件内容:  
  43. <%@ page contentType="text/html; charset=gb2312" %>  
  44. <%@ taglib uri="/struts-tags" prefix="s"%>  
  45. <html>  
  46. <a href="login.action">servlet 不相关的 非IoC 取得Request等对象的方式</a><br>  
  47. <a href="login2.action">servlet 不相关的 IoC 取得Request等对象的方式</a><br>  
  48. <a href="login3.action">servlet 相关的 非IoC 取得Request等对象的方式</a><br>  
  49. <a href="login4.action">servlet 相关的 IoC 取得Request等对象的方式</a><br>  
  50. </form>  
  51. </html>  
  52.   
  53. 然后分别叙述4种方式,  
  54. 1,servlet 不相关的 非IoC 取得Request等对象的方式  
  55. 这种方法先取得ActionContext,然后获取Map类型的request等对象  
  56.   
  57. Action文件:  
  58. package struts2.login;  
  59.   
  60. import java.util.Map;  
  61.   
  62. import com.opensymphony.xwork2.ActionContext;  
  63. import com.opensymphony.xwork2.ActionSupport;  
  64.   
  65. public class LoginAction  extends ActionSupport{  
  66.     private ActionContext context;  
  67.     private Map request;  
  68.     private Map session;  
  69.     private Map application;  
  70.      
  71.     @Override  
  72.     public String execute() throws Exception {  
  73.         // TODO Auto-generated method stub  
  74.         this.context = ActionContext.getContext();  
  75.         this.request = (Map)this.context.get("request");  
  76.         this.session = this.context.getSession();  
  77.         this.application = this.context.getApplication();  
  78.         this.request.put("attribute""request value servlet 不相关的 非IoC ");  
  79.         this.session.put("attribute""session value servlet 不相关的 非IoC ");  
  80.         this.application.put("attribute""application value servlet 不相关的非IoC ");  
  81.         return SUCCESS;  
  82.     }  
  83. }  
  84.   
  85. 2,servlet 不相关的 IoC 取得Request等对象的方式  
  86. 这种方法,是实现特定的接口,由container来设定request等对象。请注意如下代码示例中红色文字的部分。  
  87.   
  88. Action文件:  
  89. package struts2.login;  
  90.   
  91. import java.util.Map;  
  92.   
  93. import org.apache.struts2.interceptor.ApplicationAware;  
  94. import org.apache.struts2.interceptor.RequestAware;  
  95. import org.apache.struts2.interceptor.SessionAware;  
  96.   
  97. import com.opensymphony.xwork2.ActionSupport;  
  98.   
  99. public class Login2Action  extends ActionSupport  
  100.     implements RequestAware , SessionAware, ApplicationAware{  
  101.     private Map request;  
  102.     private Map session;  
  103.     private Map application;  
  104.      
  105.     @Override  
  106.     public String execute() throws Exception {  
  107.         // TODO Auto-generated method stub  
  108.         this.request.put("attribute""request value servlet 不相关的 IoC ");  
  109.         this.session.put("attribute""session value servlet 不相关的 IoC ");  
  110.         this.application.put("attribute""application value servlet 不相关的 IoC ");  
  111.         return SUCCESS;  
  112.     }  
  113.   
  114.     @Override  
  115.     public void setRequest(Map<String, Object> arg0) {  
  116.         // TODO Auto-generated method stub  
  117.         this.request = arg0;  
  118.     }  
  119.   
  120.     @Override  
  121.     public void setSession(Map<String, Object> arg0) {  
  122.         // TODO Auto-generated method stub  
  123.         this.session = arg0;  
  124.     }  
  125.   
  126.     @Override  
  127.     public void setApplication(Map<String, Object> arg0) {  
  128.         // TODO Auto-generated method stub  
  129.         this.application = arg0;  
  130.     }  
  131. }  
  132.   
  133.   
  134. 3,servlet 相关的 非IoC 取得Request等对象的方式  
  135. 这种方法可以获取servlet相关的request等对象,也就是说这种方式取出的request对象不单单是设定属性的作用,而是可以获取http相关的信息。  
  136. 取出方法,请参看代码中的蓝字部分。  
  137.   
  138. Action文件:  
  139. package struts2.login;  
  140.   
  141. import javax.servlet.ServletContext;  
  142. import javax.servlet.http.HttpServletRequest;  
  143. import javax.servlet.http.HttpSession;  
  144.   
  145. import org.apache.struts2.ServletActionContext;  
  146.   
  147. import com.opensymphony.xwork2.ActionSupport;  
  148.   
  149. public class Login3Action  extends ActionSupport{  
  150.     private HttpServletRequest request;  
  151.     private HttpSession session;  
  152.     private ServletContext application;  
  153.      
  154.     @Override  
  155.     public String execute() throws Exception {  
  156.         // TODO Auto-generated method stub  
  157.         this.request = ServletActionContext.getRequest();  
  158.         this.session = this.request.getSession();  
  159.         this.application = ServletActionContext.getServletContext();  
  160.         this.request.setAttribute("attribute""request value servlet 相关的非IoC ");  
  161.         this.session.setAttribute("attribute""session value servlet 相关的非IoC ");  
  162.         this.application.setAttribute("attribute""application value servlet 相关的 非IoC ");  
  163.         return SUCCESS;  
  164.     }  
  165.      
  166. }  
  167.   
  168.   
  169. 4,servlet 相关的 IoC 取得Request等对象的方式  
  170.   
  171. 这种方法也可以获取servlet相关的request等对象,也就是说这种方式取出的request对象不单单是设定属性的作用,而是可以获取http相关的信息。  
  172. 但是取出方法是通过接口进行实现,也就是由struts2的container来设定,请参看代码中的红字部分。  
  173.   
  174. Action文件:  
  175. package struts2.login;  
  176.   
  177. import javax.servlet.ServletContext;  
  178. import javax.servlet.http.HttpServletRequest;  
  179. import javax.servlet.http.HttpSession;  
  180.   
  181. import org.apache.struts2.interceptor.ServletRequestAware;  
  182. import org.apache.struts2.util.ServletContextAware;  
  183.   
  184. import com.opensymphony.xwork2.ActionSupport;  
  185.   
  186. public class Login4Action  extends ActionSupport  
  187.     implements ServletRequestAware , ServletContextAware{  
  188.     private HttpServletRequest request;  
  189.     private HttpSession session;  
  190.     private ServletContext application;  
  191.      
  192.     @Override  
  193.     public String execute() throws Exception {  
  194.         // TODO Auto-generated method stub  
  195.         this.request.setAttribute("attribute""request value servlet 相关的 IoC ");  
  196.         this.session = this.request.getSession();  
  197.         this.session.setAttribute("attribute""session value servlet 相关的 IoC ");  
  198.         this.application.setAttribute("attribute""application value servlet 相关的 IoC ");  
  199.         return SUCCESS;  
  200.     }  
  201.   
  202.     @Override  
  203.     public void setServletRequest(HttpServletRequest arg0) {  
  204.         // TODO Auto-generated method stub  
  205.         this.request = arg0;  
  206.     }  
  207.   
  208.     @Override  
  209.     public void setServletContext(ServletContext arg0) {  
  210.         // TODO Auto-generated method stub  
  211.         this.application = arg0;  
  212.     }  
  213. }  
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值