struts2怎麼調用Servlet API

  首先,我必須弄清楚,struts2爲什麼要和Servlet API解耦呢?

struts2與1有很大區別,struts1與Serlvlet API耦合緊密:

1.exectue必須使用HttpServletResponse、HttpServletRequest方法,這樣很不利於單元測試;

那麼,既然解耦了,怎麼調用Servlet API呢?有三種方法;

   1.直接調用:IoC方式(控制反轉)

         必須在action中實現一些接口才可調用,如ServletContextAware、ServletRequestAware、ServletResponseAware、SessionAware。

注:

  •    接口名稱                                        說明

ServletContextAware :  實現該接口的action可以直接訪問ServletContext對象,實現該接口的action必須                                              實現 void setServletContext()方法。

ServletRequestAware:   實現該接口的action可以直接訪問HttpServletRequest對象,實現該接口的action                                        必須實現void setServletRequest()方法;

ServletResponseAware:   必須實現   void setServletResponse()

SessionAware:  必須實現  void setSessionAware();

 

2.直接調用:非IoC方式

struts2提供ServletActionContext類獲得Servlet API。

該類提供getPageContext()、getRequest()、getResponse()方法實現直接訪問;

推薦使用非IoC方式,實現簡單,代碼量少。

3.間接訪問:

ActionContext類

 

另:struts1與2區別:

struts1:ActionForm必須繼承AcionForm基類;Action必須繼承Action基類;

                與servlet API強耦合;

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章