Struts2中,三種獲取ServletAPI的方法

tip:servletAPI?就是Servlet中的一些對象啊,主要四個域對象!

方法1:耦合方法

使用ServletActionContext獲取, 這種方法獲取的都是原生態的ServletAPI!
爲什麼說是原生態,看方法二就知道了。

HttpServletRequest request = ServletActionContext.getRequest();
HttpSession session = request.getSession();
HttpServletResponse response = ServletActionContext.getResponse();
ServletContext servletContext = ServletActionContext.getServletContext();
PageContext pageContext = ServletActionContext.getPageContext();
ActionContext context = ServletActionContext.getContext();

方法二:解耦方法

通過ActionContext得到域對象,而他獲得的就是Map的對象。
另外這裏面有一個ThreadLocal類。他指的是當前線程!
作用是在當前線程裏面保存個值。只有當前線程纔可以獲取到。

ActionContext context = ServletActionContext.getContext();
Map<String, Object> sessionMap = context.getSession();
//看源碼發現泛型Object爲Map<String,Object>
Map<String, Object> applicationMap = context.getApplication();
//request對象
Map<String, Object> requestMap =   (Map<String, Object>) context.get("request");

方法三:實現XXXAware接口

自定義類實現接口的方法ServletRequestAware,並在自定義類中定義變量。HttpServletRequest request;
但是使用前,必須注入即實現setXXX方法!
【其他同理!】

public class MyAction3 implements ServletRequestAware,ServletResponseAware,ServletContextAware {
HttpServletRequest request ;
@override
public void setServletRequest(HttpServletRequest request){
    this.request = request;
}
<然後就可以使用request對象了。>
發佈了49 篇原創文章 · 獲贊 25 · 訪問量 4萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章