Struts2學習筆記三

今天弄了半天終於明白如何在Action中訪問Servlet API了,唉......感覺沒有Struts1方便,不過爲了解偶也是值得的,呵呵

 

5.訪問Servlet API

       前面曾經說過,用戶所寫的Action並不是真正處理用戶請求的Action實例,而僅僅是Struts2Action代理的代理目標,這是因爲它沒有和Servlet API直接關聯,根本無法處理用戶的請求,那在用戶的Action中又該如何訪問Servlet API呢?

       1). Struts2提供了一個ActionContext類,Struts2Action可以通過此類來訪問Servlet API,以下給出最爲常用的訪問ServletContextHttpSessionHttpServletRequest的代碼:

// 訪問ServletContext

ActionContext.getContext().getApplication().get(key);  // 取值

ActionContext.getContext().getApplication().put(key, value);  // 設值

 

// 訪問HttpSession

ActionContext.getContext().getSession().get(key);

ActionContext.getContext().getSession().put(key, value);

 

// 訪問HttpServletRequest

ActionContext.getContext().get(key);

ActionContext.getContext().put(key, value);

 

順便在此給出使用OGNL訪問上述範圍內的屬性值:

${applicationScope.屬性名}

${sessionScope.屬性名}

${requestScope.屬性名}

 

2). 除了上述所提到的使用ActionContext類來訪問Servlet API外,Struts2還提供了以下接口可以直接訪問Servlet API

l         ServletContextAware

public void setServletContext(ServletContext context);

 

l         ServletRequestAware

public void setservletRequest(HttpServletRequest request);

 

l         ServletResponseAware

public void setservletResponse (HttpServletResponse response);

 

3). 此外Struts2提供了一個更爲簡單的ServletActionContext類,這個類包含了如下幾個方法可用於訪問Servlet API

       static PageContext getPageContext();

       static HttpServletRequest getRequest();

       static HttpServletResponse getResponse();

       static ServletContext getservletContext();

 

注意:在Struts1中可以使用response對象向頁面直接輸出內容,但在Struts2中這種方法是不可能生成服務器響應的,即是說類似response.getWriter().print(“cfanboy”);這樣的代碼在Struts2中是不起作用的!

發佈了35 篇原創文章 · 獲贊 0 · 訪問量 6萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章