1. 程式人生 > >Struts2筆記--Action訪問Servlet API

Struts2筆記--Action訪問Servlet API

jsp內置對象 key oid tap bsp 響應 p s context page


  Web應用中通常需要訪問的Servlet API就是HttpServletRequest、HttpSession和ServletContext,這三個接口分別代表JSP內置對象中的request、session和application。


1.使用Struts2提供的ActionContext類來訪問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的屬性名、屬性值。



  eg:
  通過ActionContext設置application範圍的屬性

    ActionContext ctx = ActionContext.getContext();
    ctx.getApplication.put("name","aaa");

  通過ActionContext設置request範圍的屬性

   ctx.put("name","bbb");

2.雖然Struts2提供了ActionContext來訪問Servlet API,但這種訪問不是直接獲得Servlet API的實例,為了直接在Action中訪問Serlvet API,struts2提供了如下幾個接口

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

  ServletRequestAware:實現該接口的Action可以直接訪問用戶請求的HttpServletRequest實例。

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

3.使用ServletActionContext訪問Servlet API

  為了能直接訪問Servlet API,Struts2還提供了一個ServletActionContext工具類,這個類包含了如下幾個靜態方法。

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

  static HttpServletRequest getRequest():取得Web應用的HttpServletRequest對象。

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

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

Struts2筆記--Action訪問Servlet API