剛剛寫了一個(gè)小例子,可是發(fā)現(xiàn)頁面的屬性值都是通過setter getter方法賦值的,(這里感覺有些類似一些面向組建的框架如:tapestry,同樣使用了功能強(qiáng)大的ognl表達(dá)式)如果我們想要通過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類。我們可以通過它的靜態(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的寫入和讀取操作而不用去直接操作HttpSession對(duì)象

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

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

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



          2、IoC方式(這種方式在tapestry中也是這樣實(shí)現(xiàn)的)
               要使用IoC方式,我們首先要告訴IoC容器(Container)想取得某個(gè)對(duì)象的意愿,通過實(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 閱讀(4231) 評(píng)論(3)  編輯  收藏 所屬分類: Javastruts
          Comments
          • # re: 告訴你如何獲得request response session 對(duì)象[未登錄]
            bluesky
            Posted @ 2007-12-12 08:31
            (這里感覺有些類似一些面向組建的框架如: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)行開發(fā) 所以感覺struts2中的一些東西似乎在tapestry中找到了影子,tapestry是面向組建的框架,把頁面的一些組建通過setter getter方法賦值的  回復(fù)  更多評(píng)論   
          • # re: 告訴你如何獲得request response session 對(duì)象
            說法
            Posted @ 2008-04-20 17:17
            @LifeNote
            @LifeNote
            @LifeNote
              回復(fù)  更多評(píng)論   
           
          主站蜘蛛池模板: 民乐县| 宁安市| 崇文区| 隆化县| 宣恩县| 兴安盟| 民和| 双城市| 南川市| 贡嘎县| 东台市| 闽侯县| 台南市| 温州市| 龙海市| 定日县| 汉中市| 阜康市| 九寨沟县| 龙游县| 浙江省| 长春市| 长子县| 油尖旺区| 孝义市| 外汇| 太保市| 马山县| 广德县| 同仁县| 枝江市| 永济市| 昭觉县| 永和县| 沾化县| 驻马店市| 木里| 壶关县| 三门县| 株洲县| 保靖县|