<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    隨筆-126  評論-247  文章-5  trackbacks-0

    Action 訪問 Servlet API 的方式

    這里只針對 Servlet 中常用的,如 HttpServletRequest、HttpServletResponse 和 HttpSession 來展開。
    一般來說,在 Struts2 中訪問 Servlet API 的方式有2種:
    (1)  直接訪問 Servlet API。這將會使得你的 Action 類與 Servlet API 耦合在一起。
    (2)  通過 Struts2 API 來訪問 Servlet API,這樣 Action 類就不會再跟 Servlet API 耦合。

    通過 ServletActionContext 來訪問 Servlet API ( 耦合 )

    package fan.tutorial.action;

    import com.opensymphony.xwork2.Action;
    import javax.servlet.http.HttpSession;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    import org.apache.struts2.ServletActionContext;

    public class ServletApiAction implements Action {

        private HttpSession session;
        private HttpServletRequest request;
        private HttpServletResponse response;

        public String execute() throws Exception {
            request = ServletActionContext.getRequest();
            session = request.getSession();
            response = ServletActionContext.getResponse();
            request.setAttribute("requestScopeParam", "fan");
            session.setAttribute("sessionScopeParam", "tutorial");
            response.setHeader("expires", "-1");
            response.setHeader("Pragma", "no-cache");
            response.setHeader("Cache-Control", "no-cache");
            return SUCCESS;
        }

    }

    通過 ServletRequestAware、ServletResponseAware 接口來訪問 Servlet API ( 耦合 )

    package fan.tutorial.action;

    import javax.servlet.http.HttpSession;
    import com.opensymphony.xwork2.Action;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    import org.apache.struts2.interceptor.ServletRequestAware;
    import org.apache.struts2.interceptor.ServletResponseAware;

    public class IServletApiAction implements Action, ServletRequestAware, ServletResponseAware {
        
        private HttpSession session;
        private HttpServletRequest request;
        private HttpServletResponse response;

        public String execute() throws Exception {
            request.setAttribute("requestScopeParam", "fan");
            session.setAttribute("sessionScopeParam", "tutorial");
            response.setHeader("expires", "-1");
            response.setHeader("Pragma", "no-cache");
            response.setHeader("Cache-Control", "no-cache");
            return SUCCESS;
        }

        public void setServletRequest(HttpServletRequest request) {
            this.request = request;
            this.session = request.getSession();
        }

        public void setServletResponse(HttpServletResponse response) {
            this.response = response;
        }
    }

    通過 ActionContext 來訪問 Servlet API ( 解耦 )

    package fan.tutorial.action;

    import java.util.Map;
    import com.opensymphony.xwork2.Action;
    import com.opensymphony.xwork2.ActionContext;

    public class StrutsServletApiAction implements Action {

        private Map<String, Object> session;
        private Map<String, Object> request;
        private ActionContext context = ActionContext.getContext();
        
        public String execute() throws Exception {
            session = context.getSession();
            request = (Map<String, Object>)context.get("request");
            request.put("requestScopeParam", "fan");
            session.put("sessionScopeParam", "tutorial");
            return SUCCESS;
        }

    }

    通過 RequestAware、SessionAware 接口來訪問 Servlet API ( 解耦 )

    package fan.tutorial.action;

    import java.util.Map;
    import com.opensymphony.xwork2.Action;
    import org.apache.struts2.interceptor.RequestAware;
    import org.apache.struts2.interceptor.SessionAware;

    public class IStrutsServletApiAction implements Action, RequestAware, SessionAware {

        private Map<String, Object> session;
        private Map<String, Object> request;
        
        public String execute() throws Exception {
            request.put("requestScopeParam", "fan");
            session.put("sessionScopeParam", "tutorial");
            return SUCCESS;
        }

        public void setRequest(Map<String, Object> request) {
            this.request = request;
        }
        
        public void setSession(Map<String, Object> session) {
            this.session = session;
        }

    }
    Struts2 對 HttpServletRequest 和 HttpSession 做了一層封裝,使用 Map<String, Object> 來替換掉這2種對象,這樣可避免 Action 類與 Servlet API 耦合在一起。

    文章示例源碼下載

    struts-servlet.zip




      
    posted on 2014-03-17 19:58 fancydeepin 閱讀(2045) 評論(2)  編輯  收藏

    評論:
    # re: Struts2 訪問 Servlet API 的方式 2014-03-20 13:41 | 中山婚紗攝影
    很好,  回復  更多評論
      
    # re: Struts2 訪問 Servlet API 的方式 2014-04-16 17:13 | 鋁板
    通過 Struts2 API 來訪問 Servlet API,這樣 Action 類就不會再跟 Servlet API 耦合。  回復  更多評論
      

    只有注冊用戶登錄后才能發表評論。


    網站導航:
     
    主站蜘蛛池模板: 亚洲免费人成视频观看| 亚洲综合日韩中文字幕v在线| 亚洲综合久久一本伊伊区| 99久久免费看国产精品| 亚洲av永久无码精品漫画 | 在线毛片片免费观看| 亚洲日本一区二区三区在线| 中文精品人人永久免费| 久久精品国产69国产精品亚洲 | 99精品免费观看| 亚洲欧洲日产专区| 一个人免费观看www视频在线| 亚洲精品天堂在线观看| 性色av免费观看| 人妻仑刮八A级毛片免费看| 国产精品亚洲美女久久久| 香蕉免费看一区二区三区| 亚洲成AV人片在| 国产成人yy免费视频| 亚洲精品国产国语| 亚洲人成无码网WWW| 在线观看免费黄网站| 亚洲无线电影官网| 在线视频免费观看高清| 亚洲AV成人无码网站| 亚洲日韩欧洲无码av夜夜摸| 香港a毛片免费观看| 亚洲色欲啪啪久久WWW综合网| 免费国产一级特黄久久| 3344在线看片免费| 亚洲一级毛片在线观| 好爽好紧好大的免费视频国产| 一级白嫩美女毛片免费| 在线电影你懂的亚洲| 四虎成人免费网站在线| 四虎国产精品免费永久在线| 亚洲伦理一二三四| 国产亚洲精品国看不卡| 四虎永久在线精品免费观看视频 | 男女作爱在线播放免费网站| 亚洲成av人片不卡无码|