summercool+mybatis框架解決方案_第1頁(yè)
summercool+mybatis框架解決方案_第2頁(yè)
summercool+mybatis框架解決方案_第3頁(yè)
summercool+mybatis框架解決方案_第4頁(yè)
summercool+mybatis框架解決方案_第5頁(yè)
已閱讀5頁(yè),還剩22頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

框架解決方案框架基于框架的的特點(diǎn)是基于實(shí)現(xiàn)的請(qǐng)求處理器,而框架將其改成為基于實(shí)現(xiàn)(好處就不多說了,大家都懂的;只是提一下,是請(qǐng)求生命周期的結(jié)束,而則不是請(qǐng)求生命周期的結(jié)點(diǎn))在一些特殊處理上處理的也不是非常的理想,定制化也不是完全可以擴(kuò)展的;如下幾點(diǎn)描述:配置文件的缺省加載如果我們要是想加載一個(gè)或多個(gè)的配置文件,那么我們要用<>來完成文件的加載在中只要將的配置文件,放在下面的""文件夾下面,應(yīng)用啟動(dòng)的時(shí)候,框架會(huì)自動(dòng)掃描下面的""文件夾中的配置文件。多個(gè)包里面""文件夾下面的配置文件,框架也會(huì)自動(dòng)加載約定勝于配置其實(shí)已經(jīng)有約定勝于配置了,但是還是不我們想要的那種理想型的>>上面才是我們的理想型的約定勝于配置的方式頁(yè)面模塊化和頁(yè)面函數(shù)自定義框架中的內(nèi)置函數(shù),寫法如下:1/27代碼<>${("")}內(nèi)容體!${("")}<>說明:上面的頁(yè)面中,我們可以看出 ${()} 函數(shù),不需要頁(yè)面的擴(kuò)展名${("")}的加載過程,>>如果不存在,則>這樣,我們就可以把一個(gè)公共頁(yè)面的處理類的邏輯,寫在里面;如:顯示登錄名稱自定義模版一個(gè)應(yīng)用中,經(jīng)常會(huì)自定義一些特別的地址,而非約定勝于配置而自動(dòng)映射的地址>上面的地址,是我們自定義的一個(gè)地址,1)我們一般的期望是上面的地址規(guī)則可以配置,并且變量可以跟據(jù)一定規(guī)則替換;2)我們還期望有一個(gè)對(duì)應(yīng)處理該地址的處理類,并且可以自動(dòng)提取出規(guī)則地址中的變量,如的自動(dòng)加密和解密實(shí)現(xiàn)基于的免登錄實(shí)現(xiàn)全局統(tǒng)一處理的權(quán)限實(shí)現(xiàn)全局統(tǒng)一處理的圖片自動(dòng)縮放處理實(shí)現(xiàn)(包括)多語(yǔ)言模版的實(shí)現(xiàn)(和自帶)多主題的實(shí)現(xiàn)(自帶)2/27請(qǐng)求處理流程圖3/27說明:相比較于多了、、和這些元素。處理流程的一個(gè)細(xì)節(jié)也調(diào)整了一下,具體如下:>>>如果在沒有這個(gè)處理類的話,會(huì)自動(dòng)返回;不會(huì)渲染2)框架改造成: > >[]>[]如果沒有這個(gè)處理類,那么會(huì)自動(dòng)查找頁(yè)面上面的這個(gè)特性非常有用,因?yàn)橛行﹦?dòng)態(tài)頁(yè)面(如幫助頁(yè)面)是不需要處理的,但是卻包括一些動(dòng)態(tài)信息框架的相關(guān)說明接口說明因?yàn)榭蚣苁腔趯?shí)現(xiàn)的,所以會(huì)過濾所有的請(qǐng)求,因?yàn)楣P者也是跟據(jù)的模式進(jìn)行調(diào)用的接口是一個(gè)順序接口,這樣可以指定一個(gè)的執(zhí)行順序這個(gè)類的主要應(yīng)用場(chǎng)景是,可以對(duì)監(jiān)控所有請(qǐng)求的執(zhí)行時(shí)間,日志打點(diǎn)和定制相關(guān)圖片壓縮功能該類的相關(guān)功能演示,詳見如下代碼:{"/";();;();();(){4/27(,1000L);();}(,,){(()){(,,);;}=();();=();{(,,);}{(()){=();=();=("" );= "當(dāng)前[" +()+ ">" ++ "]" + "當(dāng)執(zhí)行的時(shí)間為 :["+(())+ "],"+ "當(dāng)前時(shí)間內(nèi)(秒)執(zhí)行線程數(shù)為:[" ++ "],"+ "請(qǐng)求執(zhí)行的時(shí)間為 :[" +(-)+ "毫秒]";();}5/27}}(){=;}(){;}}接口說明接口會(huì)在允許處理的請(qǐng)求范圍內(nèi)繼續(xù)向下執(zhí)行(這句話的意思會(huì)在實(shí)踐篇講解)接口是一個(gè)順序接口,這樣可以指定一個(gè)的執(zhí)行順序這個(gè)類的主要應(yīng)用場(chǎng)景是權(quán)限檢查,如某個(gè)請(qǐng)求在處理過權(quán)限檢查之后,則繼續(xù)執(zhí)行;反之,則跳轉(zhuǎn)到另一個(gè)指定頁(yè)面或資源如果()函數(shù)返回為,則不會(huì)執(zhí)行()函數(shù),請(qǐng)求會(huì)繼續(xù)向下執(zhí)行,最終執(zhí)行或是渲染頁(yè)面如果()函數(shù)返回為,則會(huì)執(zhí)行()函數(shù),請(qǐng)求就不會(huì)繼續(xù)向下執(zhí)行,而是直接處理()函數(shù)返回的接口,然后終于此次請(qǐng)求該類的相關(guān)功能演示,詳見如下代碼:{;方法(){=;}(,){( ""+ "");6/27}(,){(()){;}{(()){;}{;}}}(){;}}接口說明接口,是在或是頁(yè)面渲染之前的一個(gè)處理類,可以攔截請(qǐng)求馬上要處理的相關(guān)資源此處的應(yīng)用場(chǎng)景是,如果一個(gè)人想到重定向到另一個(gè)頁(yè)面,那么我們可以查看一下是否在重定向的白名單地址列表里面而防止被“釣魚”如果()函數(shù)返回為,則不會(huì)執(zhí)行()函數(shù),請(qǐng)求會(huì)繼續(xù)向下執(zhí)行,最終執(zhí)行或是渲染頁(yè)面如果()函數(shù)返回為,則會(huì)執(zhí)行()函數(shù),請(qǐng)求就不會(huì)繼續(xù)向下執(zhí)行,而是直接處理()函數(shù)返回的接口,然后終于此次請(qǐng)求7/27()函數(shù)中的里面包含要跳轉(zhuǎn)或是要處理的資源,所以可以進(jìn)行白名單等功能的檢驗(yàn)接口說明當(dāng)或是渲染頁(yè)面的時(shí)候發(fā)生異常,會(huì)調(diào)用使用了,我們可以這樣處理:(=1)>1(=2)>2像這樣的情況,是我們可以通過一種異常類型,不同的可以自定義不同的顯示頁(yè)面在發(fā)生異常的時(shí)候,就可以通過此接口的接口來定制渲染頁(yè)面該類的相關(guān)功能演示,詳見如下代碼{=(());;(,,,){打印錯(cuò)誤信息=();記錄錯(cuò)誤信息();(){( "");}{();}}8/27(){=;}(){;}}接口說明在我們渲染一個(gè)頁(yè)面的時(shí)候,我們可以使用${("")}渲染時(shí)候的順序是:${("")}>"">""如果在渲染的時(shí)候,沒有""處理類,則直接渲染""頁(yè)面這個(gè)函數(shù)的好處是,可以為每個(gè)頁(yè)面的嵌套子頁(yè)面提供獨(dú)立的業(yè)務(wù)處理類,使子頁(yè)面的邏輯獨(dú)立相關(guān)配置文件配置配置"1.0""8"?>"""""""2.5"><><><><><><><><><><><>8<><><><><> <>9/27<>/*<><><><><><><><><><><><>/*<><><><><><><>說明::字符編碼過濾器:框架過濾器只要配置上面兩個(gè)即完成了應(yīng)用框架的啟動(dòng)配置相關(guān)配置文件加載及說明1) 框架會(huì)自動(dòng)掃描: *文件夾下面的所有的配置文件。10/27說明:上圖中的文件夾下面的配置文件全部都會(huì)自動(dòng)加載,包括依賴的項(xiàng)目或是里包括的的文夾下面的配置文件。在應(yīng)用里面,一共預(yù)先建立了下面幾個(gè)配置文件:a)b)c)d)e)f)g)h)11/27i)說明:在上面幾個(gè)配置文件中,要想要應(yīng)用跑里面,上面和這兩個(gè)配置文件是不可缺少的。1) 里面配置的是頁(yè)面模版信息和一些 框架的配置信息。里面配置的是信息是的一些請(qǐng)求映射信息等。是整個(gè)框架的核心配置文件之一;下面會(huì)詳細(xì)講解。配置文件說明"1.0""8"?>"""""""""""">"""">""><><><><><><>設(shè)置>"">"""8"/>"""20000000"/>12/27<"" "30720" /><>設(shè)置>"""">""""/>"""500"/><>>設(shè)置>""""/>"""">"0"""/>"1""${}" /><><""><"""${}" />""><><""><><><>""><><"">8<><"">#<><"">${}<><""><><""> <><"">8<><><><><""13/27""><"" "" /><>頁(yè)面層的處理類>""><><><><><></><><><"""">""""/>""""/>""";8"/>""""/><><><>說明::該配置是用來配置注入的一些變量信息。目前里面只是有的模版路徑和模版緩存時(shí)間。:如果你的中需要使用到文件上傳的功能,則需要配置這個(gè)類。默認(rèn)是不支持文件上傳的,只有配了這個(gè)類才會(huì)支持多文件上傳;否則不起到作用。具體的用法,有時(shí)間筆者會(huì)給出例子,因?yàn)槭菢?biāo)準(zhǔn)的多文件上傳,在這里不多作說明。:全局錯(cuò)誤處理器;在在系統(tǒng)發(fā)生異常的情況,會(huì)交給這個(gè)統(tǒng)一錯(cuò)誤處理類來處理。比如說,上面配置中“”屬性可以告訴如果系統(tǒng)發(fā)生異常,則要顯示的默認(rèn)處理頁(yè)面(注:支持【:】等這樣的框架中對(duì)象的語(yǔ)法)。:設(shè)置的是中頁(yè)面模版的信息。在這里做了一點(diǎn)更改,支持:下面的模版的加載,別的沒有做任何的變動(dòng)。具體的模版設(shè)置網(wǎng)上有很多的資類可以參數(shù),都在這里不多做介紹了。:這個(gè)配置比較關(guān)鍵,是配置頁(yè)面中的全局參數(shù)的一個(gè)。比如說,我想讓頁(yè)面加入一個(gè)全局變量":",則可以配置在此中。使用的時(shí)候只要在的任何14/27頁(yè)面中使用${}即可顯示。同理,如果想在中加入全局的內(nèi)置函數(shù),當(dāng)然也是通過此方法實(shí)現(xiàn)。:中真正使用的頁(yè)面處理類,具體的實(shí)現(xiàn)和使用其實(shí)全部都是通過此類完成,具體該類的細(xì)節(jié)筆者在此不做細(xì)的講解。配置文件說明"1.0""8"?>"""""" """>"""">""""/>""""/>""""/>"""/"/>""""/><>"">""><><><><><><><>說明:該配置是整個(gè)框架最核心的配置了。:框架會(huì)自動(dòng)加載此類并且分析該類加載的一些配置信息。15/27在此應(yīng)用中,有如下幾個(gè)信息是非常重要的::設(shè)置當(dāng)前應(yīng)用模塊的名稱(沒有關(guān)鍵作用,其實(shí)框架也用不到,只是標(biāo)識(shí)一下而已):該模塊包的根路徑,主要是掃描的和類。:框架掃描到該模塊的之后,生成的時(shí)的映射地址使用的擴(kuò)展名是什么。比如說:>或>這樣的對(duì)應(yīng)關(guān)系。【駝峰命名法的類,對(duì)應(yīng)使用下劃線的方式】d) :對(duì)應(yīng)該模塊的上下文。比如: ="/"> 或="">:掃描該模塊對(duì)應(yīng)的模塊目錄。=完整的該應(yīng)用模塊的招掃描路徑掃描該完整包路徑下面的:和文件夾文件夾的掃描規(guī)則是:>如果是按照上面的這個(gè)配置,則真實(shí)的規(guī)則是: > (因?yàn)?"/" )模塊配置類可以允許配置多個(gè),也就是說可以配置多個(gè)應(yīng)和模塊,只要不沖突即可。:應(yīng)用只允許有一個(gè)該配置類。該配置類主要是配置哪些過來的后綴名的請(qǐng)求會(huì)允許交給應(yīng)用處理。的和開發(fā)開發(fā)的掃描規(guī)則是:>掃描的附件條件是,被掃描加載的類,必須是實(shí)現(xiàn)的標(biāo)準(zhǔn)接口和類名必須是以結(jié)尾。函數(shù)講解首先,我們還是先看一下頁(yè)面模版文件,如下:>""><>"8"><><>16/27""",1.0">"""">"""">>"""">"">{60;40;}{:0;}<>"""">5,6-85><[9]>"55"><><![]><><>${("")}<""><""><>".*"/>"">用戶:<"""30""""""""${()!}"><>;<"">密碼:<"""30""""""""${()!}"><>;17/27()!>>"">${}<><><><""><""" 提交""">;<""""> 取消<><><><><>${("")}<><><>上面有兩個(gè)${()}的函數(shù)請(qǐng)各位注意一下:${("")}${("")}規(guī)則:${("")}先加載>/再加載>(可選,即如果沒有類,則直接加載頁(yè)面)而我們想在顯示""局部頁(yè)面的時(shí)候,我們可以將一部分顯示的業(yè)務(wù)邏輯和""局部頁(yè)面需要顯示的頁(yè)面數(shù)據(jù)通過此類加載;那么我們查看下""類,如下:{(,<,>){( "",());}18/27}說明:上面的代碼中可以看出,""頁(yè)面中會(huì)顯示登錄人的用戶名信息,那么用戶名的信息則就是通過()函數(shù)加載的,是""的頁(yè)面變量信息,如下:"">"">""><a"""""">""><>""><>""><><><a"""#">${("")}<>"">"">""><a""><><><><a""><><><><a""><><>()!""><><a""> ${()!} []<><><><><a""><><><><><><><><><>框架對(duì)封裝"1.0""8"?>"""""""19/27>"""">"""^#168729$3450^%"/>""><>"""">"""${}"/>"""-1"/>""""/>""""/>""""/><>"""">"""${}"/>"""-1"/>""""/>""""/>""""/><>"""">"""${}"/>"""-1"/>""""/>""""/>""""/><>"""">"""${}"/>"""-1"/>""""/>""""/>""""/><><><><><>20/27在上面這個(gè)配置文件中,最重要的是類配置,如下:"""">"""${}"/>"""-1"/>""""/>""""/>""""/><>說明::存放在的域名(筆者建議設(shè)置為一級(jí)域名,這樣二級(jí)域名的應(yīng)用也可以獲取和共享一級(jí)域名的):設(shè)置的有效期:服務(wù)端的名稱,因?yàn)殚_發(fā)者在使用時(shí),要知道設(shè)置了哪個(gè):相對(duì)于服務(wù)端的名稱,這個(gè)是客戶端的名稱。:是否進(jìn)行加密處理;設(shè)置了此屬性,類會(huì)自動(dòng)對(duì)該進(jìn)行加密和解密。如下應(yīng)用舉例:(,){( ){();}=()();(){();}();();();(,()());21/27{(,((), "8"));}( e){}(,());}說明:框架已經(jīng)對(duì)進(jìn)行了封裝,在配置文件配置完成后就可以直接使用了只要通過對(duì)象就可以直接設(shè)置和獲取的相關(guān)信息了。所有的用戶登錄信息最好不用要實(shí)現(xiàn),因?yàn)檫€要解決分布式的問題。建議登錄信息全部都存放在里面是非常好的,因這樣不僅可以實(shí)現(xiàn)登錄信息的保存而且大大降低了開發(fā)難度;相關(guān)于變相的實(shí)現(xiàn)了無狀態(tài)登錄??蚣軐?duì)封裝比如說我們有這樣的一個(gè)需求,所有的頁(yè)面都要通過1這樣的地址來訪問“產(chǎn)品的詳細(xì)頁(yè)面”像上面這樣的配置規(guī)則,我不需要多于的代碼編寫,可以自動(dòng)生成上面這樣風(fēng)格的或是自定義的風(fēng)格上面成生的風(fēng)格中,我們還可以提取“1”這樣的參數(shù)或是中的參數(shù)可以直接提取出來請(qǐng)看的配置:"1.0""8"?>"""""""">22/27"">""><>"*"""/>""""/><><><>""""/>"""">""><><><><><><>"""">"""1"/>"""{}"/><><><><><><>說明::可以配置*這樣的地址全部都交給地址對(duì)應(yīng)的()來處理。:可以配置以模塊為單位的地址映射規(guī)則,并加入序號(hào),如:<><><><><>"""">"""1"/>"""{}"/><><>在上面這段配置中,我們可以配置一個(gè)模塊的地址規(guī)則為: {}23/27在頁(yè)面中,如果想使用上面規(guī)則的地址,則使用內(nèi)置函數(shù):${(""("","1"))}在上面這個(gè)函數(shù)中,:代表模塊名,是的內(nèi)置函數(shù),返回為類型的數(shù)據(jù), ,1如果大家細(xì)點(diǎn)一點(diǎn),會(huì)發(fā)現(xiàn)上面有一個(gè)人的一個(gè)參數(shù),這個(gè)是干什么用的呢?因?yàn)橛袝r(shí)候,一個(gè)模塊可能會(huì)有很多的模版規(guī)則,如 {}上面這個(gè)模版的意思是,查到一個(gè)某類目下面的詳細(xì)信息,這樣的話我們可以將設(shè)置成2頁(yè)面上可以做這樣的使用: ${(""("","1"),"2")}> 其中的"2"就是的值,是讓函數(shù)調(diào)用模版的時(shí)候,只調(diào)用2的那個(gè)模版。當(dāng)然,也可以不寫(默認(rèn)會(huì)調(diào)用第一個(gè)配置的模版,即1的模版)。所以,地址規(guī)則:${(""("","1"))} >1;提取中的參數(shù),上面的例子只是提到了規(guī)則

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論