Struts2中獲取servletAPI

struts中有兩種獲取servletAPI的方式:web

1:解耦的方式,這種方式方便了測試代碼,在servlet中每次測試都須要開啓服務器,發起請求,而在struts中只須要寫一個main方法就能夠進行測試,不須要啓動服務器,方便測試就是提升了開發效率。其次耦合程度越低越容易進行擴展。action中只須要調用service的業務便可,aciton-->service-->dao,因此只須要測試service就行,不須要測試整個struts2。    經過actioncontext來獲取servletAPI,而actioncontext就是一個map容器,裏面存放了用戶請求的數據,actioninvocation數據,seesion數據,request數據,application數據等等。而actioncontext是一個全局變量,actioncontext.getcontext()獲取。而這種經過actioncontext對象獲取的request,session等等並非真正的httpservletrequest對象,只是獲取的裏面的一個attribute即只是獲取的一個map結構。這樣避免了直接和web容器直接打交道,正由於如此因此這種方式才稱之爲解耦的方式。服務器

 

2:耦合的方式:經過實現sessionaware(servletrequestaware)接口獲取session(request)對象,實現沒實現的方法即setSession(Map<String, Object> arg0)這種方式是一種依賴注入的方式,這是一種耦合的方式。而struts2是經過servletconfig攔截器來實現的,該方式實質上是至關與ActionContext.getContext().get(StrutsStatics.HTTP_REQUEST)。還有一種耦合方式是經過servletactioncontext這個工具類獲取request,application等,而經過這種工具類獲取的是一個實在的httpservletrequest對象,因此是直接與web容器直接打交道,稱之爲耦合的方式。session

相關文章
相關標籤/搜索