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對象了。>