亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

如何在Action類中獲得HttpServletResponse對象

發布時間:2021-11-12 17:56:16 來源:億速云 閱讀:220 作者:柒染 欄目:編程語言

這篇文章將為大家詳細講解有關如何在Action類中獲得HttpServletResponse對象,文章內容質量較高,因此小編分享給大家做個參考,希望大家閱讀完這篇文章后對相關知識有一定的了解。

在struts1.x Action類的execute方法中,有四個參數,其中兩個就是response和request。而在Struts2中,并沒有任何參數,因此,就不能簡單地從execute方法獲得HttpServletResponse或HttpServletRequest對象了。

但在Struts2 Action類中仍然有很多方法可以獲得這些對象。下面就列出四種獲得這些對象的方法。

【方法1】使用Struts2 Aware攔截器

這種方法需要Action類實現相應的攔截器接口。如我們要獲得HttpServletResponse對象,需要實現org.apache.struts2.interceptor.ServletResponseAware接口,代碼如下:

package action;   import com.opensymphony.xwork2.ActionSupport;  import javax.servlet.http.*;  import org.apache.struts2.interceptor.*;   public class MyAction extends ActionSupport implements ServletResponseAware  {      private javax.servlet.http.HttpServletResponse response;      // 獲得HttpServletResponse對象      public void setServletResponse(HttpServletResponse response)      {          this.response = response;      }          public String execute() throws Exception      {              response.getWriter().write("實現ServletResponseAware接口");      }  }

在上面的代碼中,MyAction實現了一個ServletResponseAware接口,并且實現了setServletResponse方法。如果一個動作類實現了ServletResponseAware接口,Struts2在調用execute方法之前,就會先調用setServletResponse方法,并將response參數傳入這個方法。如果想獲得HttpServletRequest、HttpSession和Cookie等對象,動作類可以分別實現ServletRequestAware、SessionAware和CookiesAware等接口。這些接口都在org.apache.struts2.interceptor包中。

如果要獲得請求參數,動作類可以實現org.apache.struts2.interceptor. ParameterAware接口,但如果只想判斷某個參數是否存在,也可以實現com.opensymphony.xwork2.interceptor. ParameterNameAware接口。這個接口有一個acceptableParameterName方法,當Struts2獲得一個請求參數時,就會調用一次。讀者可以在這個方法中將所有的請求參數記錄下來,以便以后使用。這個方法的定義如下:

boolean acceptableParameterName(String parameterName);

【方法2】使用RequestAware攔截器

這種方法和第1種方法類似。動作類需要實現一個org.apache.struts2.interceptor.RequestAware接口。所不同的是RequestAware將獲得一個com.opensymphony.xwork2.util.OgnlValueStack對象,這個對象可以獲得response、request及其他的一些信息。代碼如下所示:

package action;   import java.util.Map;  import org.apache.struts2.*;  import com.opensymphony.xwork2.ActionSupport;  import javax.servlet.http.*;  import com.opensymphony.xwork2.util.*;  import org.apache.struts2.interceptor.*;   public class FirstAction extends ActionSupport implements RequestAware  {      private Map request;  private HttpServletResponse response;            public void setRequest(Map request)      {          this.request = request;              }          public String execute() throws Exception      {              java.util.Set< String> keys = request.keySet();          // 枚舉所有的key值。實際上只有一個key:struts.valueStack          for(String key: keys)              System.out.println(key);          // 獲得OgnlValueStack 對象          OgnlValueStack stack = (OgnlValueStack)request.get("struts.valueStack");          // 獲得HttpServletResponse對象          response = (HttpServletResponse)stack.getContext().get(StrutsStatics.HTTP_RESPONSE);          response.getWriter().write("實現RequestAware 接口");      }  }

我們也可以使用StrutsStatics.HTTP_REQUEST、StrutsStatics.PAGE_CONTEXT來獲得HttpServletRequest和PageContext對象。這種方法有些麻煩,一般很少用,讀者可以作為一個參考。

【方法3】使用ActionContext類

這種方法比較簡單,我們可以通過org.apache.struts2.ActionContext類的get方法獲得相應的對象。代碼如下:

HttpServletResponse response = (HttpServletResponse)

ActionContext.getContext().get(org.apache.struts2.StrutsStatics.HTTP_RESPONSE);

HttpServletRequest request = (HttpServletRequest)

ActionContext.getContext().get(org.apache.struts2.StrutsStatics.HTTP_REQUEST);

【方法4】使用ServletActionContext類

Struts2為我們提供了一種最簡單的方法獲得HttpServletResponse及其他對象。這就是org.apache.struts2.ServletActionContext類。我們可以直接使用ServletActionContext類的getRequest、getResponse方法來獲得HttpServletRequest、HttpServletResponse對象。代碼如下:

HttpServletResponse response = ServletActionContext.getResponse()

response.getWriter().write("hello world");

從這四種方法來看,第一種是最簡單的,讀者可以根據自己的需要和要求來選擇使用哪一種方法來獲得這些對象。

關于如何在Action類中獲得HttpServletResponse對象就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

禹州市| 杭锦旗| 壤塘县| 汉阴县| 石泉县| 兴国县| 连南| 资溪县| 汪清县| 麟游县| 新竹县| 韶关市| 东城区| 商水县| 黔西县| 盘山县| 赤壁市| 海南省| 嘉义市| 吴堡县| 鄂伦春自治旗| 秦皇岛市| 凤凰县| 洛宁县| 郓城县| 建平县| 鄂伦春自治旗| 衢州市| 富阳市| 怀安县| 荃湾区| 定结县| 县级市| 邵阳县| 新巴尔虎右旗| 读书| 浪卡子县| 信丰县| 霍州市| 社旗县| 高阳县|