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

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

          1、非IoC方式

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

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

          細(xì)心的朋友可以發(fā)現(xiàn)這里的session是個(gè)map對(duì)象在Struts2中底層的session都被封裝成了Map類型我們可以直接操作這個(gè)map 進(jìn)行對(duì)session的寫(xiě)入和讀取操作而不用去直接操作HttpSession對(duì)象

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

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

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



          2、IoC方式(這種方式在tapestry中也是這樣實(shí)現(xiàn)的)
               要使用IoC方式,我們首先要告訴IoC容器(Container)想取得某個(gè)對(duì)象的意愿,通過(guò)實(shí)現(xiàn)相應(yīng)的接口做到這點(diǎn)。具體實(shí)現(xiàn)

          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) 評(píng)論(3)  編輯  收藏 所屬分類: Javastruts
          Comments
          • # re: 告訴你如何獲得request response session 對(duì)象[未登錄](méi)
            bluesky
            Posted @ 2007-12-12 08:31
            (這里感覺(jué)有些類似一些面向組建的框架如:tapestry,同樣使用了功能強(qiáng)大的ognl表達(dá)式)


            setter getter 是javabean的特性
            ognl表達(dá)式正是使用javabean的這特性  回復(fù)  更多評(píng)論   
          • # re: 告訴你如何獲得request response session 對(duì)象
            LifeNote
            Posted @ 2007-12-12 09:10
            由于剛到的公司使用的正是tapestry進(jìn)行開(kāi)發(fā) 所以感覺(jué)struts2中的一些東西似乎在tapestry中找到了影子,tapestry是面向組建的框架,把頁(yè)面的一些組建通過(guò)setter getter方法賦值的  回復(fù)  更多評(píng)論   
          • # re: 告訴你如何獲得request response session 對(duì)象
            說(shuō)法
            Posted @ 2008-04-20 17:17
            @LifeNote
            @LifeNote
            @LifeNote
              回復(fù)  更多評(píng)論   
           
          主站蜘蛛池模板: 腾冲县| 惠水县| 柯坪县| 酒泉市| 中牟县| 昌乐县| 年辖:市辖区| 梨树县| 安化县| 丹东市| 民勤县| 荔波县| 原阳县| 宜兰市| 合江县| 阜平县| 丰顺县| 岳普湖县| 灵山县| 九台市| 台山市| 鹿泉市| 通州市| 泗水县| 潜江市| 澳门| 鄂托克前旗| 出国| 全南县| 阳西县| 赫章县| 麦盖提县| 浦北县| 英德市| 柯坪县| 天全县| 兰溪市| 扬州市| 故城县| 道孚县| 乌拉特中旗|