Struts 2之Servlet API
Struts 2對Servlet API進行了封裝,是業務層更加獨立,如果需要調用Request、Response等Servlet API有兩種途徑
利用ServletActinContext的靜態方法
Struts 2利用ServletActinContext來維護Servlet對象,ServletActinContext利用ThreadLocal來維護不同 線程的Servlet對象,因此可以使用ServletActinContext來獲得Servlet的各種對象
import org.apache.struts2. ServletActinContext
public class LoginActin extends ActionSupport{public String login(){ HttpServletRequest request = ServletActinContext.getRequest(); HttpServletResponse response = ServletActinContext.getResponse(); HttpServletContext context = ServletActinContext.getServletContext(); HttpSession session = request.getSession(); …… } } </pre> <br />
利用相關的Aware接口
Struts 2在實例化一個Action實例時,如果發現它實現了相關的Aware接口,會把相應的資源通過Aware接口方法注射進去,Aware接口其實是一種攔截器
Servlet API常用對象application、request、response、session對應的Aware接口分別為 ServletContextAware、ServletRequestAware、ServletResponseAware、 SessionAware
public class ServletAwareAction extends ActionSupport implementsServletContextAware,ServletRequestAware,ServletResponseAware,SessionAware{private HttpServletRequest request ; private HttpServletResponse response; private HttpServletContext application; private HttpSession session ; //相應的setter方法 public void setServletRequest(HttpServletRequest request ){ this.request = request; } public void setServletResponse(HttpServletResponse response ){ this.reponse = reponse; } public void setServletContext(HttpServletContext application ){ this. application = application; } public void setSession(Map sessionValues){ this.session = sessionValues; } //然后可以在Action中直接使用這些對象 public String execute(){ request.getRemoteAddr(); response.getContentType() session.get(“account”); return SUCCESS; } } </pre> <br />
本文由用戶 n672 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!