剛剛寫了一個小例子,可是發現頁面的屬性值都是通過setter getter方法賦值的,(這里感覺有些類似一些面向組建的框架如:tapestry,同樣使用了功能強大的ognl表達式)如果我們想要通過request 得到某個值 那么struts2中是如何得到的呢
                  眾所周知在struts1中
          public ActionForward execute(ActionMapping mapping, ActionForm form,
               HttpServletRequest request, HttpServletResponse response) { } 
          就有request ,respongse對象

          那么在struts2中有兩種方式可以得到這些對象

          1、非IoC方式

          要獲得上述對象,關鍵Struts 2中com.opensymphony.xwork2.ActionContext類。我們可以通過它的靜態方法getContext()獲取當前Action的上下文對象。有了這個對象我們想獲得其他幾個對象就好辦了

          ActionContext ctx = ActionContext.getContext();
                  Map session 
          = ctx.getSession();

          細心的朋友可以發現這里的session是個map對象在Struts2中底層的session都被封裝成了Map類型我們可以直接操作這個map 進行對session的寫入和讀取操作而不用去直接操作HttpSession對象

          另外,org.apache.struts2.ServletActionContext作為輔助類(Helper Class),可以幫助您快捷地獲得這幾個對象。

          HttpServletRequest request = ServletActionContext.getRequest(); 
          HttpServletResponse response 
          = ServletActionContext.getResponse(); 
          HttpSession session 
          = request.getSession();

           如果你只是想訪問session的屬性(Attribute),你也可以通過ActionContext.getContext().getSession()獲取或添加session范圍(Scoped)的對象。



          2、IoC方式(這種方式在tapestry中也是這樣實現的)
               要使用IoC方式,我們首先要告訴IoC容器(Container)想取得某個對象的意愿,通過實現相應的接口做到這點。具體實現

          publicclass IoCServlet extends ActionSupport implements SessionAware, ServletRequestAware, ServletResponseAware {
              
          private String message;
              
          private Map att;
              
          private HttpServletRequest request;
              
          private HttpServletResponse response;    
              
              
          public String getMessage() {
                  
          return message;        
              }
              
              publicvoid setSession(Map att) {
                  
          this.att = att;
              }
              
              publicvoid setServletRequest(HttpServletRequest request) {
                  
          this.request = request;
              }
              
              publicvoid setServletResponse(HttpServletResponse response) {
                  
          this.response = response;
              }
              
              @Override
              
          public String execute() {        
                  att.put(
          "msg""Hello World from Session!");
                  
                  HttpSession session 
          = request.getSession();
                  
                  StringBuffer sb 
          =new StringBuffer("Message from request: ");
                  sb.append(request.getParameter(
          "msg"));
                  sb.append(
          "<br>Response Buffer Size: ");
                  sb.append(response.getBufferSize());
                  sb.append(
          "<br>Session ID: ");
                  sb.append(session.getId());
                  
                  message 
          = sb.toString();
                  
          return SUCCESS;
              }
          }

           


           

          posted on 2007-12-11 14:24 LifeNote 閱讀(4219) 評論(3)  編輯  收藏 所屬分類: Javastruts
          Comments
          • # re: 告訴你如何獲得request response session 對象[未登錄]
            bluesky
            Posted @ 2007-12-12 08:31
            (這里感覺有些類似一些面向組建的框架如:tapestry,同樣使用了功能強大的ognl表達式)


            setter getter 是javabean的特性
            ognl表達式正是使用javabean的這特性  回復  更多評論   
          • # re: 告訴你如何獲得request response session 對象
            LifeNote
            Posted @ 2007-12-12 09:10
            由于剛到的公司使用的正是tapestry進行開發 所以感覺struts2中的一些東西似乎在tapestry中找到了影子,tapestry是面向組建的框架,把頁面的一些組建通過setter getter方法賦值的  回復  更多評論   
          • # re: 告訴你如何獲得request response session 對象
            說法
            Posted @ 2008-04-20 17:17
            @LifeNote
            @LifeNote
            @LifeNote
              回復  更多評論   
           
          主站蜘蛛池模板: 资兴市| 岑巩县| 永平县| 茶陵县| 武夷山市| 兴仁县| 左权县| 清徐县| 伊宁县| 湟中县| 老河口市| 揭阳市| 许昌县| 昔阳县| 黔江区| 泰州市| 宜兰市| 石首市| 丰原市| 商城县| 斗六市| 蒙城县| 子长县| 张家口市| 蒙山县| 碌曲县| 鸡西市| 忻城县| 高台县| 盐山县| 承德市| 星子县| 高唐县| 奉节县| 枣阳市| 遂昌县| 本溪| 米易县| 荣昌县| 蒙城县| 托克逊县|