Java EE----Struts2 Action 訪問Servlet API

以前 Servlet  doGet(HttpServletRequest,HttpServletResponse) ,doGet方法無法進行單獨測試 ,要測試,必須構造request和response對象 


Struts2 Action的execute方法非常便於單獨測試,這個方法不依賴Servlet API  


Servlet常用API對象 : HttpServletRequest、HttpSession、ServletContext (三種服務器端數據範圍)、HttpServletResponse 


1、與Servlet API 解耦合操作  使用ActionContext 
1)創建實例 ActionContext.getContext() 
2)獲得請求參數 actionContext.getParameters() 返回 Map<String,String[]> 代表請求參數Map 等價於 request.getParameterMap 
3)向request保存一個數據 actionContext.put(key,value) ; 等價於 request.setAttribute() 
4)讀取request範圍的一個數據 actionContext.get(key)  等價於 request.getAttribute() 
5)讀取Session屬性 actionContext.getSession() 返回Map  actionContext.getSession().get(key) 等價於 session.getAttribute();
actionContext.getSession().put(key,value)  等價於 session.setAttribute()
6)讀寫ServletContexnt屬性 actionContext.getApplication 返回 Map actionContext.getApplication().get(key) 等價於servletContext.getAttribute
actionContext.getApplication().put(key,value) 等級於 servletContext.setAttribute 


* 使用ActionContext 操作了 Servlet對象,但是卻沒有使用Servlet API 
* 例如:銷燬Session對象 、添加Cookie 都無法通過ActionContext 完成 


2、直接訪問ServletAPI (方案一 接口注入 )
ServletContextAware
void setServletContext(javax.servlet.ServletContext context)


ServletRequestAware
void setServletRequest(javax.servlet.http.HttpServletRequest request)


ServletResponseAware
void setServletResponse(javax.servlet.http.HttpServletResponse response)


3、直接訪問Servlet API (方案二:ServletActionContext) 
static PageContext getPageContext()
static HttpServletRequest getRequest()
static HttpServletResponse getResponse()
static ServletContext getServletContext()
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章