struts2中Action使用ServlteAPI

    struts2中的Action在MVC模式中充當着Servlet的做用,struts2中的Action沒有與Servlet耦合,那麼在struts2中的Action是怎樣訪問ServletAPI(一般爲HttpServletRequest、HttpSession和ServletContext)的呢?服務器

   方法一: strtus2提供了ActionContext類來訪問ServletAPI :ActionContext.getContext();來獲取ActionContext。session

        其get("key")--Object;該方法相似於調用HttpServletRequest的getAttribute(「name」)方法; app

        getApplication()--Map;該對象相似於ServletContext實列;對象

        getParameters()--Map;相似於調用HttpServletRequest的getParameterMap()方法;接口

        getSession()--Map;相似於HttpSession實列;get

     setApplication(Map application)--void;傳入一個Map實列,將Map裏面的key-value轉換爲application的屬性值、屬性名。it

        setSession(Map session)--void;傳入一個Map實列,將Map裏面的key-value轉換爲Session中的屬性值、屬性名。io

    補充一點:Servlet中的HttpServletRequest、HttpSession和ServletContext分別對應JSP內置對象中的request、session、applction。struts2

    方法二: 另外一種比較直接的方法就是Action實現對應的接口,ServletConextAware實現該接口後能夠直接訪問Web應用中的ServletContext實列;ServletRequestAware實現該接口後能夠直接訪問HttpServletRequest實列;ServletResponseAware實現該接口後可直接訪問HttpServletResponse實列;request

    方法三:使用ServletActionContext類的ServletActionContext.getRequest()獲取  HttpServletRequest;ServletActionContext.getResponse()獲取HttpServletResponse;ServletActionContext.getServletContext()獲取ServletContext。

注意:雖然咱們能夠在Action中拿到HttpSerletResponse實列,可是沒法用該實列直接生成服務器響應,Action只控制業務;如response.getWriter().println("hello world")是錯誤的。

相關文章
相關標籤/搜索