Struts 2之Servlet API

n672 9年前發布 | 21K 次閱讀 Struts2 Web框架

Struts 2對Servlet API進行了封裝,是業務層更加獨立,如果需要調用Request、Response等Servlet API有兩種途徑

利用ServletActinContext的靜態方法

Struts 2利用ServletActinContext來維護Servlet對象,ServletActinContext利用ThreadLocal來維護不同 線程的Servlet對象,因此可以使用ServletActinContext來獲得Servlet的各種對象

    import  org.apache.struts2. ServletActinContext
public class LoginActin extends ActionSupport{

      public String login(){  
             HttpServletRequest request = ServletActinContext.getRequest();  
             HttpServletResponse response = ServletActinContext.getResponse();  
             HttpServletContext context = ServletActinContext.getServletContext();  
             HttpSession session = request.getSession();  
             ……  
      }  

}  </pre> <br />

利用相關的Aware接口

Struts 2在實例化一個Action實例時,如果發現它實現了相關的Aware接口,會把相應的資源通過Aware接口方法注射進去,Aware接口其實是一種攔截器

Servlet API常用對象application、request、response、session對應的Aware接口分別為 ServletContextAware、ServletRequestAware、ServletResponseAware、 SessionAware

    public class ServletAwareAction extends ActionSupport implementsServletContextAware,ServletRequestAware,ServletResponseAware,SessionAware{

      private HttpServletRequest request ;  
      private HttpServletResponse response;  
      private HttpServletContext application;  
      private HttpSession session ;  

//相應的setter方法  
      public void setServletRequest(HttpServletRequest request ){  
             this.request = request;  
      }  
      public void setServletResponse(HttpServletResponse response ){  
             this.reponse = reponse;  
      }  
      public void setServletContext(HttpServletContext application ){  
             this. application = application;  
      }  
      public void setSession(Map sessionValues){  
             this.session = sessionValues;  
      }  
//然后可以在Action中直接使用這些對象  
      public String execute(){  
             request.getRemoteAddr();  
             response.getContentType()  
             session.get(“account”);  
             return SUCCESS;  
      }  
}  </pre> <br />
 本文由用戶 n672 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!