struct2利用相关的Aware接口
Struts 2提供了Aware接口。Aware為"感知"的意思,實現了相關Aware接口的Action能夠感知相應的資源。Struts在實例化一個Action實例時,如果發現它實現了相應的Aware接口,會把相應的資源通過Aware接口方法注射進去。這種方式也可以叫做注射方式(IoC方式)。
Servlet API中常用對象application、request、response、Session對應的Aware接口分別為ServletContextAware、ServletRequestAware、ServletResponseAware、SessionAware。例如,下面的Action實現了這4種接口,能夠感知到這些對象。
package com.helloweenvsfei.struts2.action; import org.apache.struts2.interceptor.ServletRequestAware; import org.apache.struts2.interceptor.ServletResponseAware; import org.apache.struts2.interceptor.SessionAware; import org.apache.struts2.util.ServletContextAware; public class ServletAwareAction extends ActionSupport implements ServletRequestAware, ServletResponseAware, SessionAware, Servlet ContextAware { private ServletContext application; // Servlet上下文 private HttpServletRequest request; // request對象 private HttpServletResponse response; // response對象 private Map session; // session對象 public void setServletRequest(HttpServletRequest request) { // request的setter方法 this.request = request; } public void setServletResponse(HttpServletResponse response) { // request的setter方法 this.response = response; } public void setSession(Map sessionValues) { // session的setter方法 this.session = sessionValues; } public void setServletContext(ServletContext application) { // servletContext的setter方法 this.application = application; } public String execute() { // 主方法 String upload = application.getRealPath("upload"); // 使用application request.getRemoteAddr(); // 使用request response.getContentType(); // 使用response session.get("account"); // 使用Session return Action.SUCCESS; }}
?實現了ServletRequestAware接口便會有一個setServletRequest()方法獲取request對象。實現了ServletResponseAware接口便會有一個setServletResponse()方法獲取response對象。不同的是SessionAware接口的setter方法是setSession()方法的參數是Map類型。該Map代表Session內存儲的各種數據。
Aware接口其實是一種攔截器,攔截器代碼會在執行Action之前執行,將相關的Servlet對象設置進來
轉載于:https://www.cnblogs.com/ydymz/p/8330190.html
與50位技術專家面對面20年技術見證,附贈技術全景圖總結
以上是生活随笔為你收集整理的struct2利用相关的Aware接口的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Virtual DOM的简单实现
- 下一篇: 7.12固定信息认证