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

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

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

    隨筆-295  評(píng)論-26  文章-1  trackbacks-0
    spring中dispatcherservlet的運(yùn)行機(jī)制

    dispatcherservlet是spring的web框架(以下簡(jiǎn)稱springweb)中的核心servlet."spring的web框架——象其它web框架一樣——是一個(gè)請(qǐng)求驅(qū)動(dòng)的web框架,其設(shè)計(jì)圍繞一個(gè)能將請(qǐng)求分發(fā)到控制器的servlet,它也提供其它功能幫助web應(yīng)用開發(fā)。"----《spring framework 開發(fā)參考手冊(cè)(中文版)》而在springweb框架中這個(gè)servlet就是org.springframework.web.servlet.dispatcherservlet。這個(gè)servlet的繼承關(guān)系如下圖所示:springweb首先將傳統(tǒng)的httpservlet抽象類包裝成了bean;frameworkservlet抽象出了web框架中的servlets的一些基本行為,比如對(duì)application context的訪問;dispatcherservlet的主要工作就是將一個(gè)request分發(fā)到一個(gè)合適的處理器上,并將處理返回的modelandview繪制出來返回給客戶端。

    dispatcherservlet作為一個(gè)servlet那他一定有兩個(gè)主要的方法:init()和doservice()。

    一 init()初始化。dispatcherservlet繼承體系中init()方法的實(shí)現(xiàn)位于httpservletbean中,httpservletbean首先調(diào)用initbeanwrapper(),初始化beanwrapper,然后調(diào)用抽象方法initservletbean(),這個(gè)方法的實(shí)現(xiàn)位于他的子類frameworkservlet中;framewordservlet中的initservletbean()方法將調(diào)用initwebapplicationcontext(),初始化webapplicationcontext,然后同樣調(diào)用他的抽象方法initframeworkservlet(),而這個(gè)抽象方法的實(shí)現(xiàn)位于最終的dispatcherservlet中;dispatcherservlet中的initframeworkservet()將依次初始化multipar(用作文件上傳)解析器、本地化信息解析器、主題解析器處理器映射等等內(nèi)容。所以dispatcherservlet的初始化順序?yàn)閕nit();initbeanwrapper();

    initservletbeaninitwebapplicationcontext()

    initframework();initmultipartresolver();initlocaleresolver();initthemeresolver();inithandlermappings();inithandleradapters();inithandlerexceptionresolvers();initviewresolvers();

    二 doservice()處理請(qǐng)求。dispatcherservlet中無論是通過post方式還是get方式提交的request,最終都會(huì)交由doservice()處理。doservice()中的處理邏輯大致分以下六個(gè)步驟:1.if(request是multipart,即文件上傳) 則將request解析并包裝成multiparthttpservletrequest2.mappedhandler = gethandler(request)根據(jù)request得到相應(yīng)的處理器3.調(diào)用注冊(cè)的所有攔截器的prehandle方法4.調(diào)用處理器??? handleradapter ha = new gethandleradapter(mappedhandler.gethandler());??? modelandview mv = ha.handle(req, res, mappedhandler.gethandler())//這里使用了adapter模式5.調(diào)用注冊(cè)的所有攔截器的posthandle方法6.繪制mv

    也許spring不像struts、hibernate那樣是使用最為廣泛的,但他是全面的、輕量級(jí)的、足夠靈活的、容易替換、容易擴(kuò)展的。springweb是springframework中的一個(gè)部分,而dispatcherservlet又是springweb中的一小部分,要弄懂spring以及他背后的設(shè)計(jì)思想,對(duì)我等菜鳥而言,還是有很長(zhǎng)一段路要走的。但愿在新的一條路出現(xiàn)之前,我們已經(jīng)走遍了這條路。路漫漫其修遠(yuǎn)兮,吾將上下而求索。繼續(xù)研究ing...to be continue...



    大盤預(yù)測(cè) 國富論
    posted on 2007-08-29 12:25 華夢(mèng)行 閱讀(695) 評(píng)論(0)  編輯  收藏 所屬分類: Spring
    主站蜘蛛池模板: 国产日韩一区二区三免费高清| 亚洲精品456在线播放| 亚洲AV香蕉一区区二区三区| 免费观看激色视频网站(性色)| 亚洲国产一区二区三区青草影视 | 亚洲精品免费观看| 亚洲AV日韩AV天堂一区二区三区| 嫩草在线视频www免费看| 亚洲av鲁丝一区二区三区| 久久99热精品免费观看牛牛| 久久久无码精品亚洲日韩蜜臀浪潮 | 免费看黄的成人APP| 亚洲中文久久精品无码| 光棍天堂免费手机观看在线观看| 国产亚洲综合网曝门系列| 久久国产精品萌白酱免费| 亚洲高清日韩精品第一区| 国产精品视频免费一区二区| 国产亚洲精品91| 亚洲精品无码Av人在线观看国产| 日日麻批免费40分钟无码| 亚洲人xxx日本人18| 国产免费观看青青草原网站| 岛国岛国免费V片在线观看| 中文字幕亚洲色图| 热99re久久免费视精品频软件| 香蕉97碰碰视频免费| 久久精品亚洲综合一品| 成年女性特黄午夜视频免费看| 高潮毛片无遮挡高清免费| 亚洲AV无码专区在线播放中文| 无码国产精品一区二区免费式影视 | 67194熟妇在线永久免费观看| 亚洲爆乳成av人在线视菜奈实| 久久久久久久亚洲精品| 亚洲免费观看网站| 免费的黄色网页在线免费观看| 久久青青草原亚洲AV无码麻豆 | 亚洲欧洲尹人香蕉综合| 日本xxwwxxww在线视频免费| 大地资源在线资源免费观看|