Struts2.x取得Servlet API 的一些对象

        如果要取得Servlet API中的一些对象,如request、response或session等,应该怎么做?这里的execute不像Struts 1.x的那样在参数中引入。开发Web应用程序当然免不了跟这些对象打交道。在Strutx 2.0你可以有两种方式获得这些对象:非IoC(控制反转Inversion of Control)方式和IoC方式。

 

       1、非IoC方式

             要获得上述对象,关键Struts 2.0中com.opensymphony.xwork2.ActionContext类。我们可以通过它的静态方法 getContext()  获取当前Action的上下文对象。 另外,org.apache.struts2.ServletActionContext作为辅助类(Helper Class),可以帮助您快捷地获得这几个对象。

            HttpServletRequest request = ServletActionContext.getRequest();

            HttpServletResponse response = ServletActionContext.getResponse();

            HttpSession session = request.getSession();

          

            如果你只是想访问session的属性(Attribute),你也可以通过ActionContext.getContext().getSession()获取或添加session范围(Scoped)的对象。

 

        2、IoC方式

        要使用IoC方式,我们首先要告诉IoC容器(Container)想取得某个对象的意愿,通过实现相应的接口做到这点。具体实现,请参考例6 IocServlet.java。

  1. package tutorial;
  2. import javax.servlet.http.HttpServletRequest;
  3. import javax.servlet.http.HttpServletResponse;
  4. import javax.servlet.http.HttpSession;
  5. import org.apache.struts2.ServletActionContext;
  6. import com.opensymphony.xwork2.ActionContext;
  7. import com.opensymphony.xwork2.ActionSupport;
  8. publicclass NonIoCServlet extends ActionSupport {
  9.     private String message;
  10.     
  11.     public String getMessage() {
  12.         return message;        
  13.     }
  14.     
  15.     @Override
  16.     public String execute() {    
  17.         ActionContext.getContext().getSession().put("msg""Hello World from Session!");
  18.         
  19.         HttpServletRequest request = ServletActionContext.getRequest();
  20.         HttpServletResponse response = ServletActionContext.getResponse();        
  21.         HttpSession session = request.getSession();
  22.         
  23.         StringBuffer sb =new StringBuffer("Message from request: ");
  24.         sb.append(request.getParameter("msg"));
  25.         sb.append("<br>Response Buffer Size: ");
  26.         sb.append(response.getBufferSize());
  27.         sb.append("<br>Session ID: ");
  28.         sb.append(session.getId());
  29.         
  30.         message = sb.toString();
  31.         return SUCCESS;
  32.     }
  33. }

classes/tutorial/NonIoCServlet.java

  1. package tutorial;
  2. import java.util.Map;
  3. import javax.servlet.http.HttpServletRequest;
  4. import javax.servlet.http.HttpServletResponse;
  5. import javax.servlet.http.HttpSession;
  6. import org.apache.struts2.interceptor.ServletRequestAware;
  7. import org.apache.struts2.interceptor.ServletResponseAware;
  8. import org.apache.struts2.interceptor.SessionAware;
  9. import com.opensymphony.xwork2.ActionContext;
  10. import com.opensymphony.xwork2.ActionSupport;
  11. publicclass IoCServlet extends ActionSupport implements SessionAware, ServletRequestAware, ServletResponseAware {
  12.     private String message;
  13.     private Map att;
  14.     private HttpServletRequest request;
  15.     private HttpServletResponse response;    
  16.     
  17.     public String getMessage() {
  18.         return message;        
  19.     }
  20.     
  21.     publicvoid setSession(Map att) {
  22.         this.att = att;
  23.     }
  24.     
  25.     publicvoid setServletRequest(HttpServletRequest request) {
  26.         this.request = request;
  27.     }
  28.     
  29.     publicvoid setServletResponse(HttpServletResponse response) {
  30.         this.response = response;
  31.     }
  32.     
  33.     @Override
  34.     public String execute() {        
  35.         att.put("msg""Hello World from Session!");
  36.         
  37.         HttpSession session = request.getSession();
  38.         
  39.         StringBuffer sb =new StringBuffer("Message from request: ");
  40.         sb.append(request.getParameter("msg"));
  41.         sb.append("<br>Response Buffer Size: ");
  42.         sb.append(response.getBufferSize());
  43.         sb.append("<br>Session ID: ");
  44.         sb.append(session.getId());
  45.         
  46.         message = sb.toString();
  47.         return SUCCESS;
  48.     }
  49. }

classes/tutorial/IoCServlet.java

 

  1. <%@ page contentType="text/html; charset=UTF-8" %>
  2. <%@ taglib prefix="s" uri="/struts-tags"%>
  3. <html>
  4. <head>
  5.     <title>Hello World!</title>
  6. </head>
  7. <body>
  8.     <h2>
  9.         <s:property value="message" escape="false"/>
  10.         <br>Message from session: <s:property value="#session.msg"/>
  11.     </h2>
  12. </body>
  13. </html>

Servlet.jsp

 

  1. < package name ="ActionDemo" extends ="struts-default" > 
  2.     <action name="NonIoCServlet" class="tutorial.NonIoCServlet">
  3.          <result>/Servlet.jsp</result>
  4.     </action>
  5.     <action name="IoCServlet" class="tutorial.IoCServlet">
  6.          <result>/Servlet.jsp</result>
  7.     </action> 
  8. </ package > 

classes/struts.xml中NonIocServlet和IoCServlet Action的配置

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器学习模型机器
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值