程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> JAVA綜合教程 >> struts2中訪問servlet API,struts2servlet

struts2中訪問servlet API,struts2servlet

編輯:JAVA綜合教程

struts2中訪問servlet API,struts2servlet


Struts2中的Action沒有與任何Servlet API耦合,,但對於WEB應用的控制器而言,不訪問Servlet API幾乎是不可能的,例如需要跟蹤HTTP Session狀態等。Struts2中提供了一個ActionContext類,Struts2的Action可以通過該類來訪問Servlet API。

ActionContext類中包含的幾個常用方法:

  Object get(Object key):該方法類似於調用HttpServletRequest的getAttribute(String name)方法。

  Map getApplication:返回一個Map對象,該對象模擬了該應用的ServletContext實例。

  static ActionContext getContext():靜態方法,獲取系統的ActionContext實例。

  Map getParameters():獲取所有的請求參數。類似於調用HttpServletRequest對象的getParameterMap()方法。

  Map getSession():返回一個Map對象,該Map對象模擬了HttpSession實例。

  void setApplication(Map application):直接傳入一個Map實例,將該Map實例裡的key-value對轉換成application的屬性名、屬性值。

  void setSession(Map session):直接傳入一個Map實例,將該Map實例裡的key-value對轉換成session的屬性名、屬性值。

例子:

  public class TextAction implements Action{

    public String execute() throws Exception{

       ActionContext ctx=ActionContext.getContext(); //獲取ActionContext實例

       Integet counter=(Integer)ctx.getApplication().get("counter");   //獲取application范圍的屬性值

       return SUCCESS; 

               }

       }

雖然struts2提供了ActionContext來訪問Servlet API,但這種訪問不是直接獲得servlet API的實例,為了在Action中訪問Servlet API,struts2中還提供了以下幾個接口:

ServletContextAware:實現該接口的Action可以直接訪問WEB應用的ServletContext實例。

ServletRequestAware:實現該接口的Action可以直接訪問WEB應用的HttpServletRequest實例。

ServletResponseAware:實現該接口的Action可以直接訪問服務器響應的HttpServletResponse實例。

除此之外,為了能直接訪問Servlet API,struts2還提供了一個ServletActionContext工具類,這個類包含了如下幾個靜態方法:

static PageContext getPageContext():取得WEB應用的PageContext對象。

static HttpServletRequset getRequets():取得Web應用的HttpServletRequset對象。

static HttpServletRsponse getResponse():取得WEB應用的HttpServletResponse對象。

static ServletContext getServletContext():取得WEB應用的ServletContext對象。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved