(七)Action訪問Servlet API
阿新 • • 發佈:2018-08-09
private except ring code urn session esp 一個 clas
第一種方式:
Struts2提供了一個ServletActionContext對象可以訪問ServletAPI。 例如 HttpServletRequest request=ServletActionContext.getRequest(); HttpServletResponse response=ServletActionContext.getResponse(); ServletContext context=ServletActionContext.getServletContext(); HttpSession session=request.getSession();
第二種方式,實現ServletContextAware,ServletRequestAware,ServletResponseAware三個接口
public class VcodeAction extends ActionSupport implements ServletContextAware,ServletRequestAware,ServletResponseAware { //定義三個參數 private HttpServletRequest request; private HttpServletResponse response; private ServletContext context; public String execute() throws Exception { return null; } //實現接口中設置參數的方法 @Override public void setServletResponse(HttpServletResponse response) { this.response=response; } @Override public void setServletRequest(HttpServletRequest request) { this.request=request; } @Override public void setServletContext(ServletContext context) { this.context=context; } } 執行流程是什麽,誰調用了set方法? struts的內建攔截器有一個ServletConfig的攔截器。 它會先得到我們的動作類的引用, 然後通過instanceof方法判斷我們動作類是否屬於ServletContextAware,ServletRequestAware,ServletResponseAware類型 因為我們實現了這個接口,當然屬於這個類型 然後獲取request,response等 然後調用我們動作類實現的接口方法 setServletResponse,setServletRequest,setServletContext等為我們的request,response賦值。
(七)Action訪問Servlet API