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()
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()
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.