<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    posts - 70,comments - 408,trackbacks - 0

    Struts控制器組件負責接收用戶的請求,更新模型.以及選擇合適的視圖組件返回給客戶端.控制器組件有助于將模型和視圖分離,有了這種分離可以在同一個模型的基礎上得心應手的開發多種模型的視圖.主要是ActionServlet框架中央控制器,RequestProcessor每個子應用的模塊處理器,Action負責處理具體的業務的組件.Struts采用ActionServlet和RequestProcessor組件進行集中控制,并且采用Action組件來完成具體的業務單項處理.控制器組件的控制機制:主要認識是接受用戶請求,根據用戶的請求調用合適的模型來執行業務邏輯,獲取業務邏輯的結果,根據當前狀態以及業務邏輯執行結果選擇合適的視圖組件返回給客戶端.

    ActionServlet類:是Struts框架的核心控制器組件,所有的用戶請求都先由它來處理,然后再由它把請求轉發給其他組件.容器啟動的時候或者用戶首次請求ActionServlet的時候加載ActionServlet類在這兩種情況下,容器都會在ActionServlet被加載后立即執行它的init()方法,這可以保證當ActionServlet處理用戶請求的時候已經被初始化.至于具體的初始化方法我們不用去管,下面研究一下ActinServlet的process()方法.當主控制器實例接收到Http請求后,在doGet()或者doPost()方法中都會調用process()方法來處理請求.在這個方法中首先調用selectModule()方法,這個方法選擇負責處理用于請求的子應用模塊.然后把子應用模塊相關的ModuleConfig和MessageResources對象存儲到request范圍內,這使得框架的其余組件可以方便地從request范圍內讀取這些對象.從而獲取應用配置信息和消息資源.ActionServlet是可以派生子類的但是感覺沒什么意義了,多數的功能都被移動到了RequestProcessor類中,以便減輕ActionServlet的負擔.

    RequestProcessor類:對于應用模塊,每個子應用模塊都由各自的RequestProcessor實例.在ActionServlet的process()方法中一旦選擇了正確的子應用模塊,就會調用子應用的模塊的RequestProcessor類,每個子應用模塊都可以擁有單純的RequestProcessor類.開發人員可以很方便的創建客戶化的RequestProcessor類.

    Action類:是用戶請求和業務邏輯之間的橋梁,每個Action充當客戶的一項業務代理.在RequestProcessor類預處理請求的時候.在創建了Action的實例后,就調用自身的processActionPerForm()方法,該方法調用Action的execute()方法.為了確保線程安全thread-safe,在一個應用的生命周期中.Struts框架只會為每個Action類創建一個Action實例.所有的客戶請求共享同一個Action實例.并且所有的請求線程可以執行它的execute方法.Action類的execute()方法返回一個ActionForward對象,代表了Web資源的邏輯對象,這里的Web資源可以是JSP頁面,JAVA servlet或者Action.從execute()方法返回的對象有兩種方法:創建一個動態的ActionForward實例和在配置文件的action元素里的子元素<forward>元素.在execute()方法只需要調用mapping實例參數的findForward()方法,來獲得特定的ActionForward對象.<action>元素的roles屬性是指定這個Action的用戶必須具備的安全角色.多個角色之間以逗號隔開.

    利用Token解決重復提交:在某些情況下,如果用戶對同一個HTML表單多次提交,Web應用必須能夠判斷用戶的重復提交的行為,以做出相應的處理.可以利用同步令牌Token機制來解決Web應用重復提交的問題.Struts給出了一個參考實例.Action類中提供了一系列和Token相關的方法判斷存儲在當前用戶會話中的令牌值和請求參數中的令牌是否匹配,如果匹配返回true.否則返回false.方法是protected boolean isTokenValid(request).

    實用類:RequestUtils類:org.apache.struts.util.RequestUtlis為Struts框架提供了一些處理請求的通用的方法.ModuleUtils類:org.apache.strtus.taglib.ModuleUtils類提供了處理子應用應用模塊的實用方法.Globals類:org.apache.struts.Globals類提供了一組公共類型的靜態常量.

    控制器組件的核心技術可以說就是Servlet,控制器也是Struts的靈魂也是MVC模式的核心,所以如果想學好Struts就必須徹底的了解控制器的運行原理.(網友們的支持,是我繼續寫技術文章的動力!)

     

    posted on 2005-10-24 14:45 我心依舊 閱讀(1432) 評論(2)  編輯  收藏

    FeedBack:
    # re: Struts控制器組件(原創)
    2005-10-24 23:12 | tufanshu
    蠻好的,簡單明了,STRUTS幾個主要的咚咚都描述了:)  回復  更多評論
      
    # re: Struts控制器組件(原創)
    2005-10-25 13:02 | connection
    簡單直白,挺好的,Up  回復  更多評論
      

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


    網站導航:
     
    主站蜘蛛池模板: 久青草国产免费观看| 亚洲AV成人精品日韩一区18p| 一级毛片完整版免费播放一区| 亚洲美女人黄网成人女| 中文字幕亚洲日韩无线码| 日本高清免费不卡在线| aa级一级天堂片免费观看| 你懂的免费在线观看网站| 成年网站免费入口在线观看| 老司机亚洲精品影院在线观看| 亚洲国产精品线观看不卡| 亚洲精品国产成人专区| 亚洲中文字幕久久精品无码喷水 | 亚洲国产一成久久精品国产成人综合| 久久国产免费福利永久| 免费的全黄一级录像带| 中文字幕在线视频免费观看| 免费一级做a爰片久久毛片潮| 亚洲A∨精品一区二区三区下载| 亚洲人成综合网站7777香蕉| 亚洲人成网站在线观看播放动漫| 亚洲αv久久久噜噜噜噜噜| 久久亚洲国产精品五月天婷| 亚洲精品国产成人影院| 无码欧精品亚洲日韩一区夜夜嗨| 国产精品免费看香蕉| 日本午夜免费福利视频| 性做久久久久免费看| 国产美女做a免费视频软件| 日韩a级毛片免费观看| 麻豆国产入口在线观看免费| 成人毛片18岁女人毛片免费看| 免费a级毛片无码a∨蜜芽试看| 免费影院未满十八勿进网站| 成人免费一级毛片在线播放视频| 97视频免费在线| 久久久久亚洲AV片无码| 情人伊人久久综合亚洲| 亚洲精品成人av在线| 亚洲国产精品久久久久秋霞影院 | 四虎免费影院ww4164h|