<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 耦合。  回復  更多評論
      

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


    網站導航:
     
    主站蜘蛛池模板: 久久不见久久见免费影院| 91高清免费国产自产拍2021| 国产无遮挡裸体免费视频| 亚洲一区AV无码少妇电影| 最近最新的免费中文字幕 | 亚洲成人免费在线| 一个人免费日韩不卡视频| 亚洲va无码va在线va天堂| 99国产精品视频免费观看| 亚洲成人免费电影| 成人毛片18岁女人毛片免费看| 欧洲 亚洲 国产图片综合| 成人永久免费福利视频网站| 亚洲1区2区3区精华液| 亚洲国产精品第一区二区三区| 中国好声音第二季免费播放| 久久久久亚洲精品成人网小说| 在线观看免费av网站| 亚洲欧美aⅴ在线资源| 亚洲?V无码成人精品区日韩| 中文字幕乱码一区二区免费| 亚洲国产午夜电影在线入口| 日本无吗免费一二区| 成在线人免费无码高潮喷水| 亚洲成a人片7777| 免费大香伊蕉在人线国产| 东北美女野外bbwbbw免费| 亚洲福利视频一区二区三区| 在线观看免费精品国产| 成人无码精品1区2区3区免费看| 97亚洲熟妇自偷自拍另类图片| 大地资源免费更新在线播放| 一级毛片在线完整免费观看| 亚洲精品自产拍在线观看动漫| 女人毛片a级大学毛片免费| 九九免费精品视频在这里| 亚洲日本国产精华液| 亚洲AV无码一区二区三区在线观看 | 免费视频中文字幕| 国产又黄又爽又大的免费视频| 亚洲国产成人精品无码区在线秒播 |