freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

springline開發(fā)框架手冊(編輯修改稿)

2025-07-26 10:16 本頁面
 

【文章內(nèi)容簡介】 面,并建立分別響應(yīng)查詢、新增、修改、刪除、數(shù)據(jù)保存的控制器。controller:兩種常用的響應(yīng)機(jī)制 Spring的控制器體系提供兩種最常用的請求響應(yīng)機(jī)制。一種是一個控制器響應(yīng)多個Url請求,每個Url請求對應(yīng)控制器的一個函數(shù),對應(yīng)關(guān)系默認(rèn)采用Url請求的filename與函數(shù)名稱相對應(yīng)的機(jī)制,可自定義。在這里,我們可以用這樣的控制器響應(yīng)查詢和刪除請求,這樣的控制器需要從MultiActionController繼承,并建立響應(yīng)查詢和刪除請求的方法,如例中的roleList和roleDelete:另外一種常見的控制器響應(yīng)機(jī)制采用的是一個請求對應(yīng)一個控制器的機(jī)制,也就是Spring文檔中的命令控制器。這種控制器一般用于新增、修改這種需要兩次處理過程的請求,首先顯示編輯界面,如后提交保存。Spring的SimpleFormController為這種處理提供了很好支持。所以RoleEditController從SimpleFormController繼承,并重載它的refrenceData方法和Onsubmit方法。refrenceData負(fù)責(zé)為編輯界面提供所需的數(shù)據(jù)模型,在此例中,因修改、刪除時要同步進(jìn)行授權(quán),所以需讀取菜單數(shù)據(jù),如果是修改的時候,還需讀取要修改的角色信息。而onSubmit則進(jìn)行客戶提交保存時的處理。Spring負(fù)責(zé)將客戶輸入的信息綁定到一個mand對象(按input域的名稱與mand對象的屬性名稱進(jìn)行對應(yīng)),控制器所作的事情就是把mand對象交由service進(jìn)行保存處理,然后導(dǎo)航到其他的頁面。兩種導(dǎo)航機(jī)制 控制器所作的工作就是響應(yīng)客戶請求、封裝請求對象、提交應(yīng)用層處理,然后進(jìn)行頁面導(dǎo)航。Spring提供兩種導(dǎo)航機(jī)制,一種是導(dǎo)航到一個具體的頁面,此時需要由當(dāng)前控制器準(zhǔn)備這個頁面所需的數(shù)據(jù)模型,如響應(yīng)查詢請求時的處理: 另一種導(dǎo)航機(jī)制則是重定向到另外的Url,由響應(yīng)這個Url請求的控制器控制具體的頁面導(dǎo)航,此時由目標(biāo)控制器負(fù)責(zé)準(zhǔn)備頁面所需的數(shù)據(jù)模型。如新增、修改提交時的處理:注1:這種重定向機(jī)制是需要瀏覽器參與的,實質(zhì)上是服務(wù)端把重定向的Url地址傳給瀏覽器,由瀏覽向這個Url地址發(fā)送Http請求的一個過程。這種導(dǎo)航機(jī)制導(dǎo)致在響應(yīng)一個Url請求的過程中出現(xiàn)了兩次瀏覽器與服務(wù)器的交互。如何實現(xiàn)服務(wù)器端的重定向?qū)Ш?,這個有興趣可以研究一下,ASP。NET ,似乎可以參考一下。注2:一旦重定向出現(xiàn)環(huán)路,會陷入死循環(huán),客戶端只能關(guān)閉瀏覽器了。Service 定義接口、實現(xiàn)接口、調(diào)用Dao處理數(shù)據(jù)持久化。似乎沒啥好說的。新增、和修改都是根據(jù)mand生成Entity,然后調(diào)用Dao進(jìn)行保存,刪除則需判斷是否滿足允許刪除的條件,允許則調(diào)用DAO進(jìn)行刪除,否則拋出異常,查詢,因為要寫sql,那就是直接交給Dao了,service里面是不應(yīng)該存在sql的。Dao:看Spring和Hibernate為我們做了什么前面說過,spring為建立一套Data Acess Object類體系,使程序員可以以一種一致的編程模型使用JDBC、JDO、Hibernate、iBatis等各種數(shù)據(jù)訪問技術(shù)。這個模型就是為每種數(shù)據(jù)訪問技術(shù)都建立一個DaoSupport的基類,并提供一個叫Template的東西,由這個Template提供接口給具體的Dao子類調(diào)用,Tempalte負(fù)責(zé)調(diào)用具體實現(xiàn)的引擎實現(xiàn)持久化管理。對Hibernate而言,用到的就是HibernateDaoSupport和HibernateTempalte。在這樣的體系下,Dao代碼的編寫很簡單,(新增、修改)保存、刪除、對象讀取都是一行代碼的問題,只有查詢,需要寫具體查詢語句。寫完上面的控制器、service和dao,后臺的代碼就算完成了。雖然我們寫了2個控制器、2個接口、2個實現(xiàn)類,文件是不少,但是代碼量其實并不大。頁面模板:最麻煩的東西 寫好后臺,開始寫前臺頁面,我們使用的是Velocity模板引擎,所以前臺頁面采用的是HTML中嵌入Velocity語法的方式。以HTML和Javascript為主,Velocity只負(fù)責(zé)從數(shù)據(jù)模型中讀取數(shù)據(jù)進(jìn)行顯示。說簡單也簡單,說復(fù)雜也復(fù)雜,最主要的是因為缺乏可視化的開發(fā)工具。 這里不對如何寫頁面進(jìn)行描述,請大家看velocity的開發(fā)手冊。,告訴spring如何組裝前面的所寫的代碼的都是松散的,系統(tǒng)如何知道我們的控制器具體響應(yīng)什么樣的Url請求?控制器中引用的service接口(和service實現(xiàn)類型引用的Dao接口)是如何得到具體的對象來使用的?我們又是如何得到聲明式事務(wù)的支持的呢?這一切都在Spring的IOC機(jī)制。不管到底應(yīng)該是叫IOC(控制反轉(zhuǎn))還是叫DI(依賴注入),我們只需知道它的核心就是一個叫BeanFactory接口。從它名字就可以看出,它的本質(zhì)就是一個對象工廠,而對象工廠的職責(zé)就是創(chuàng)建和組裝應(yīng)用程序所需的各種對象。至于IOC或者DI的意思,在我認(rèn)為,就是由別人來告訴Spring該如何創(chuàng)建和組裝這些對象。XmlWebApplicationContext是Spring web應(yīng)用中默認(rèn)使用的IOC實現(xiàn)類,通過在Xml文件中進(jìn)行bean的定義來告訴Spring該如何創(chuàng)建和組裝這些對象。文件主要內(nèi)容如下:urlHandlerMapping部分負(fù)責(zé)定義控制器與Url請求地址之間的映射關(guān)系,告訴Spring的MVC框架將什么樣的請求交由我們的控制器來處理(具體映射機(jī)制查看Spring文檔The Web的處理器映射章節(jié))。在此,否則spring將不會為你提供處理。()從urlHandlerMapping中可以看到我們需要創(chuàng)建一個叫roleEditController的控制器對象和一個叫roleContrller的對象。所以我們需要定義如何創(chuàng)建這兩個對象。定義控制器的時候,一個重點(diǎn)就是定義它依賴的roleService,在這里我們可以看到他指向一個名字為roleServiceProxy的對象。而roleServiceProxy的target指向的才是我們的真正的service對象。之所以這樣處理,是為了引入Spring提供的聲明式事務(wù)服務(wù)。這個代理對象就是提供這個服務(wù)的東西,也就是說,我們只要在service對象的外面包上一層代理的面紗,就是可以使我們的系統(tǒng)得到很完整的事務(wù)支持策略。具體的東西請大家參考spring文檔的中間層數(shù)據(jù)訪問的事務(wù)管理章節(jié)。其他對象的創(chuàng)建就沒啥好說的了,看spring的文檔吧。最后的說明Myeclipse會自動更新發(fā)布包,無需再次發(fā)布。因此,寫完代碼后,點(diǎn)擊快捷按鈕中的Run/Stop/Restart MyEclipse ServerTomcat Start,即可運(yùn)行發(fā)布的web 應(yīng)用程序。然后在瀏覽器輸入://localhost:8080/發(fā)布包名稱/urlHandlerMapping中點(diǎn)定義的url,即可測試編寫的頁面及代碼。no no no 有這么簡單就好了,所以你的請求會被重定向到登錄頁,輸入用戶名和密碼后,再在瀏覽器輸入你的地址測試你的模塊吧(至于如何加入菜單,那是另外的問題了。)。,再運(yùn)行你的應(yīng)用。. 讓我們做得更好Dao:原來代碼可以更少 接口定義了常規(guī)的增刪改查等DAO接口,其中數(shù)據(jù)查詢只支持按單個屬性過濾數(shù)據(jù)的查詢。我們的DAO接口從ImonDao繼承,實現(xiàn)類從HibernateCommonDao繼承,即可獲得這些常規(guī)功能的支持。使我們的Dao只需要處理復(fù)雜的組合查詢和對象關(guān)聯(lián)查詢。另外HibernateCommonDao還為子類封裝了分頁查詢的功能,使子類可以方便調(diào)用父類的方法得到分頁查詢的數(shù)據(jù)模型。我們的Web分頁查詢機(jī)制我們的Dao提供的分頁查詢,是在加載查詢結(jié)果集的時候,根據(jù)頁碼和每頁的數(shù)據(jù)容量計算加載結(jié)果集的起始位置,并控制最大只加載一頁數(shù)據(jù)量結(jié)果的方式來處理。因此在換頁時,需要重新執(zhí)行數(shù)據(jù)查詢過程。這就意味著當(dāng)客戶在網(wǎng)頁上點(diǎn)擊下一頁時,我們需要有一種機(jī)制能取得上次的查詢條件,并重新提交DAO進(jìn)行查詢以獲取新頁碼的數(shù)據(jù)。為此,我們采用在Session中緩存查詢Command,并分之分配一個令牌(token),放入分頁查詢返回的Page對象中??蛻舳丝蓮腜age對象中讀取這個token,并在分頁控制時,根據(jù)token和新的頁碼從服務(wù)端獲取數(shù)據(jù)。為封裝這一機(jī)制,只要你的查詢Command從PaginationInfo繼承,查詢控制器從PaginationQueryController繼承,那么你只需實現(xiàn)selectQueryResult方法,調(diào)用service的方法獲取分頁查詢的結(jié)果集就可以實現(xiàn)服務(wù)端的分頁控制;而在Velocity頁面層,我們也提供相應(yīng)的宏以封裝頁面的處理。使用token緩存查詢條件的方式,并不僅僅用于分頁查詢。在查詢視圖輸入查詢條件得到結(jié)果后,點(diǎn)擊編輯轉(zhuǎn)入編輯視圖,并返回時,可以利用token返回到客戶輸入條件后的查詢視圖。此時,這個token值需要從查詢視圖傳送到編輯控制器,再由控制器傳送到編輯界面,這樣一直傳送到回到查詢控制器為止。 組合查詢:別再自己拼湊SQL語句在處理組合查詢時,常規(guī)的處理過程就是控制器使用QueryCommand封裝客戶輸入的查詢條件,然后在Dao中根據(jù)這些條件組合sql語句進(jìn)行這樣的兩個步驟。根據(jù)頁面封裝QueryCommand這一塊Spring提供了很好的封裝機(jī)制,因此我們只需關(guān)心Dao中sql語句的組合處理。為簡化這一塊的工作,我們用IQueryStringUtil接口封裝從查詢Command生成Sql語句的接口,并由SimpleQueryMethod提供了一種支持精確查詢、多關(guān)鍵字模糊查詢及區(qū)間查詢?nèi)N查詢方式,并以“and”方式進(jìn)行多條件組合的簡單查詢機(jī)制實現(xiàn)。為使用這個查詢工具,告訴它查詢的Entity對象及查詢的策略,一個策略包括三部分:結(jié)果集的屬性名、對應(yīng)查詢Command的屬性名、查詢的方式(Like模糊查詢,EQU精確查詢,GT大于,GT_EQU大于等于,LESS小于,LESS_EQU小于等于)。 定義好查詢工具后,Dao中通過IqueryStringUtil引用這個對象,調(diào)用接口函數(shù),傳遞Command對象即可獲得所需的查詢語句。 更多復(fù)雜應(yīng)用,以后慢慢挖掘。以空間換時間:把數(shù)據(jù)字典緩存起來 因數(shù)據(jù)字典有數(shù)據(jù)相對穩(wěn)定,不常變動的特點(diǎn),我們可以一套字典緩存與刷新機(jī)制,將字典緩沖在web應(yīng)用的Context中,以提高讀取數(shù)據(jù)字典時的效率。DictionaryLoader就是這樣的一個東西,它提供一個register接口,由各個service調(diào)用注冊自己想緩存的內(nèi)容,并根據(jù)誰管理誰刷新的機(jī)制,提供refresh接口給service在數(shù)據(jù)變動后調(diào)用以刷新緩存中的數(shù)據(jù)。 往后可能會擴(kuò)展要求這些管理字典的service實現(xiàn)一個統(tǒng)一的數(shù)據(jù)刷新接口,以實現(xiàn)通過外部通知來刷新數(shù)據(jù)的機(jī)制。(用于維護(hù)人員直接修改數(shù)據(jù)庫的數(shù)據(jù),或者集群環(huán)境下的處理。)具體的處理機(jī)制還沒想清楚,下一步再說吧。 DictionaryLoader支持任意類型的數(shù)據(jù)緩存。只是對于簡單的字典數(shù)據(jù),我們希望能采用一種統(tǒng)一的數(shù)據(jù)結(jié)構(gòu)進(jìn)行管理,這種結(jié)構(gòu)將有益于簡化網(wǎng)頁代碼的處理,使我們通過一個簡單的宏調(diào)用就能在網(wǎng)頁中使用這些字典。DictionaryUtils提供了兩個進(jìn)行這種結(jié)構(gòu)轉(zhuǎn)換的方法,將字典數(shù)據(jù)存放到一個Map對象中。 對于一些由常量定義組成,不需再數(shù)據(jù)庫存儲的字典,我們也提供了一個SystemDictionaryInstance來使用上述的字典管理機(jī)制。,就可以在其他地方(主要是界面
點(diǎn)擊復(fù)制文檔內(nèi)容
環(huán)評公示相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖片鄂ICP備17016276號-1