华南俳烁实业有限公司

考試首頁 | 考試用書 | 培訓課程 | 模擬考場 | 考試論壇  
全國  |             |          |          |          |          |         
  當前位置:計算機等級 > 二級考試 > Java語言程序設計 > 考試輔導 > 文章內容
  

全國計算機等級考試二級Java重點內容(49)

中華IT學院   【 】  [ 2016年11月16日 ]

1.課程回顧(理解)

  1)ValueStack結構和數(shù)據(jù)存儲狀態(tài)

   ValueStack包含3個組成

   a. OGNL引擎:負責解析OGNL表達式

   b. root對象:CompountRoot(棧結構)

       存放了當前請求的Action對象(處于棧頂位置)

   c. context對象:Map結構

       存放了其他象.

       request:Object

       session:Object

       application:Object

   2) ValueStack原理

    a.當客戶發(fā)送一個請求后,控制器會創(chuàng)建一個ValueStack對象

    b.控制器創(chuàng)建請求對應的Action對象,并壓入到ValueStack的root棧中

    c.將request,session等對象的引用,存入到ValueStack的context中

    d.將ValueStack再存入到request對象中,struts.valueStack

    e.客戶再發(fā)新請求,重復以上操作.

*2.重構列表顯示示例

3.EL表達式在Struts2中的使用(理解)

  EL為什么可以獲取Action對象的屬性?

  可以訪問pageContext,request,action,session,application范圍數(shù)據(jù)

  在原有的JavaWeb程序中,JSP如果使用${username},會調用如下方法查找.

   HttpServletRequest接口

    request.getAttribute("username")

    session.getAttribute("username")

    application.getAttribute("username")

  在Struts2中,將request對象進行了封裝,類型為StrutsRequestWapper.

   public class StrutsRequestWapper

                   extends HttpServletRequestWrapper{

      //重寫了getAttribute

      public Object getAttribute(String expression){

         //首先去原始的request中查找

         Object val = super.getAttribute(expression));

         //如果找不到,去valuestack查找

           if(val == null){

               val = ValueStack.findValue(expression);

           }

           return val;

      }

   }

   JSP使用 ${"username"} -->先去原有request中查找

    找不到調用ValueStack.findValue("username");

    觸發(fā)Ognl.getValue("username")//獲取root中棧頂action的username屬性

4. Struts2中Action組件的核心應用

   1)Action組件原理

     a.當客戶發(fā)生一個請求,控制器會創(chuàng)建一個Action對象

        不必擔心線程并發(fā),不安全問題.

     b.Action對象創(chuàng)建后會放入ValueStack中,當root對象的棧頂

     c.Action對象提供一個業(yè)務方法,默認是execute

     d.Action對象在請求處理完畢后銷毀

   2)Action如何使用request,session,application

     a.利用工具類ActionContext,ServletActionContext

     如何將HttpServletRequest,HttpSession等對象轉換成Map結構

    public class SessionMap extends AbstractMap{

           private HttpSession session;

           public SessionMap(HttpSession session){

                   this.session = session;

           }

         public void put(Object key,Object value){

                   session.setAttribute(key.toString(),value);

         }

         public Object get(Object key){

首頁 1 2 尾頁
分享到:
本文糾錯】【告訴好友】【打印此文】【返回頂部
將考試網(wǎng)添加到收藏夾 | 每次上網(wǎng)自動訪問考試網(wǎng) | 復制本頁地址,傳給QQ/MSN上的好友 | 申請鏈接 | 意見留言 TOP
關于本站  網(wǎng)站聲明  廣告服務  聯(lián)系方式  站內導航  考試論壇
Copyright © 2006-2017 中華考試網(wǎng)(Examw.com) All Rights Reserved  營業(yè)執(zhí)照
宁化县| 洪江市| 桃园市| 新余市| 蓝山县| 临高县| 巴东县| 吉首市| 延庆县| 屯留县| 普宁市| 伊通| 邓州市| 晋州市| 大邑县| 榆树市| 商水县| 深水埗区| 曲阜市| 余庆县| 平安县| 吉隆县| 通海县| 板桥市| 丹棱县| 天峻县| 泸西县| 昭觉县| 普兰县| 桐城市| 盐城市| 比如县| 昌乐县| 山西省| 黄梅县| 锡林郭勒盟| 衡阳市| 同心县| 龙陵县| 静宁县| 陇南市|