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

正文內(nèi)容

struts2的工作機(jī)制原理分析及實(shí)例(文件)

 

【正文】 Struts框架并且處理所有的請(qǐng)求。在通常的應(yīng)用開發(fā)中,這樣也利于管理和維護(hù)。屬性文件可以放在任何一個(gè)包含在classpath中的路徑上,但是通常我們都把它放在/WEBINF/classes目錄下面。+/提示,默認(rèn)的提示為Ctrl+Space,而它會(huì)與我們的輸入法切換沖突,使提示失效。import 。 } else { return loginFailure。主要代碼如下:?xml version= encoding=UTF8 ?!DOCTYPE struts PUBLIC //Apache Software Foundation//DTD Struts Configuration struts package name=myFirst namespace=/ extends=strutsdefault action name=login class= result name=loginSuccess//result result name=loginFailure//result /action /package/struts說明:package后面會(huì)有詳細(xì)說明。完成核心監(jiān)聽器注冊(cè)。簡(jiǎn)要分析執(zhí)行流程:,并結(jié)合namespace查找名為login的action,查找到此action便交給其處理,LoginAction內(nèi)部會(huì)執(zhí)行execute方法,并返回結(jié)果result()。其它一些常量:! 指定WEB應(yīng)用的編碼集,如果使用了velocity或freemarker,它也用于指定輸出的編碼格式 constant name= value=UTF8 / ! ,指定多個(gè)請(qǐng)求后綴用逗號(hào)分隔 constant name= value=action / !設(shè)置瀏覽器是否緩存靜態(tài)內(nèi)容,建議:開發(fā)階段關(guān)閉,運(yùn)行時(shí)開啟 constant name= value=false / !,系統(tǒng)是否重新加載該文件,開發(fā)階段打開此功能 constant name= value=true / ! 開發(fā)提示:出錯(cuò)時(shí)打印更詳細(xì)的信息 constant name= value=true /! constant name= value=do,action /注意::,原因是此版本在獲取請(qǐng)求參數(shù)后才調(diào)用了setCharacterEncoding()方法進(jìn)行編碼設(shè)置。作如下修改:在LoginAction中有兩個(gè)字段:username,password。 后話:假如此此User對(duì)象并不能和Model層的相應(yīng)對(duì)象完全對(duì)應(yīng),我們還應(yīng)借助此User對(duì)象在Action中構(gòu)建出Model層的相應(yīng)對(duì)象,這樣,在exectue方法中便能通過構(gòu)建的Model對(duì)象作為參數(shù)與Model層交互。import 。 } else { return loginFailure。說明:此方式一般不會(huì)使用,在此略作了解。(4)提供了同種表現(xiàn)層技術(shù)支持,如JSP、freeMarker、velocity等(5)可以對(duì)指定的方法進(jìn)行校驗(yàn),可以輕松地實(shí)現(xiàn)表單校驗(yàn)功能(6)提供了全局范圍、包范圍和action范圍的國(guó)際化資源文件管理實(shí)現(xiàn)。,。 補(bǔ)充:通常情況下,action元素的name是屬性值是不能出現(xiàn)“/”的,所以希望通過action中name屬性來實(shí)現(xiàn)多級(jí)映射,: constant name= value=true/ 這樣配置后就可以再action的name元素中使用“/”了。另外,namespace也可以配置成namespace=/。如果不使用namespace,多個(gè)人所寫的action中可能出現(xiàn)重名的現(xiàn)象,這樣當(dāng)項(xiàng)目合并時(shí)就會(huì)出現(xiàn)沖突。String basePath = ()+://+()+:+()+path+/。鏈接:a href=%=path %/jack/test4/a 。步驟一,:?xml version=39。?tomcatusers role rolename=manager/ role rolename=admin/ user username=jack password=jack roles=admin,manager/ user username=tom password=tom roles=manager//tomcatusers步驟二,:securityconstraint webresourcecollection webresourcenamejack/webresourcename urlpattern/jack/*/urlpattern methodPOST/method methodGET/method /webresourcecollection authconstraint rolenameadmin/rolename /authconstraint /securityconstraint securityrole rolenameadmin/rolename /securityrole loginconfig authmethodBASIC/authmethod realmnameinput authentication message/realmname /loginconfig這樣配置完成后,當(dāng)我們?cè)L問.../jack中的任何內(nèi)容都會(huì)要求輸入密碼認(rèn)證信息,(這里就只有jack用戶名可以訪問)攔截器能在action被調(diào)用之前和被調(diào)用之后執(zhí)行一些“代碼”。其實(shí)在extends所繼承的strutsdefault中就包含了很多攔截器,也包括我們這里所用的攔截器,但如果在此action中不使用params攔截器,將會(huì)報(bào)空指針錯(cuò),因?yàn)閜arams攔截器的作用是傳遞表單參數(shù),如果不使用此攔截器就不能在action中得到表單參數(shù),所以引用時(shí)會(huì)報(bào)空指針錯(cuò)。其實(shí)我們使用strtusdefault中的interceptorref name=defaultStack/也是使用interceptorstack方式。import 。 } public String query() { return success。 } public String del() { return success。我們以crud操作為例,把crud集中到一個(gè)Action中。補(bǔ)充:由于上面的package繼承于strutsdefault,而我們這里所用到的timer和params都是在strutsdefalut中定義過,所以即使我們?cè)趇nterceptors中沒有定義過這兩個(gè)攔截器,也可以直接在action中引用。每一個(gè)攔截器都是獨(dú)立裝載的(pluggable),我們可以根據(jù)實(shí)際的需要為每一個(gè)action配置它所需要的攔截器。 encoding=39。比如jack開發(fā)的東西所關(guān)聯(lián)到的頁(yè)面需要權(quán)限才能被訪問。還可以參head下的base href=%=basePath% 來完成絕對(duì)路徑的書寫。namespace引發(fā)的鏈接問題:當(dāng)我們?yōu)閍ction配置了namespace時(shí),訪問此action的形式總會(huì)是如下形式:.../webappname/xxx/yyy/ 而當(dāng)此action成功執(zhí)行跳轉(zhuǎn)到某個(gè)jsp頁(yè)面時(shí),如想在此jsp頁(yè)面寫鏈接,一定要寫絕對(duì)路徑,因?yàn)橄鄬?duì)路徑是相對(duì).../webappname/xxx/yyy/,而如果以后我們修改了action的namespace時(shí),相對(duì)路徑又要變,所以鏈接不能寫成相對(duì)路徑。 總結(jié)action的名稱探索順序:完全對(duì)應(yīng)、逐步追溯到上級(jí)目錄查找、/下查找、默認(rèn)namespace下查找。它的意思是:如果action不能進(jìn)行完整路徑匹配,則會(huì)來此namespace下進(jìn)行匹配,比如:.../test/test/,如果參照namespace及action的name不能找到也之完全對(duì)應(yīng)的action,它會(huì)再到依次追溯到上級(jí)目錄中查找,即是說它會(huì)以…/test/。下面重點(diǎn)來看這個(gè)package元素的namespace屬性及action的name屬性,它們共同定義了action所映射到的實(shí)質(zhì)文件。=UTF8的配置為例進(jìn)行說明:: constant name= value=gbk/constant:=UTF8:filterfilternamestruts2/filtername filterclass /filterclass initparam paramname/paramname paramvalueUTF8/paramvalue /initparam/filter說明:官方聲稱配置了此常量可以解決中文亂碼問題,但實(shí)事上并不能達(dá)到目的,在前面的三個(gè)項(xiàng)目中,如果我們?cè)诒韱沃休斎胫形?,其結(jié)果是會(huì)出現(xiàn)亂碼。(2)struts2提供了攔截器,利用攔截器可以進(jìn)行AOP編程,實(shí)現(xiàn)權(quán)限攔截等功能。 }}說明:它實(shí)現(xiàn)了ModelDriven接口,并使用了泛性機(jī)制(必須)。public class LoginAction implements Action, ModelDrivenUser { private User user = new User()。重點(diǎn)是修改LoginAction,修改后的主要內(nèi)容如下:package 。:戶名:input type=text name=br密碼:input type=password name=br關(guān)鍵就是改掉name屬性值。 。在以前的開發(fā)中,當(dāng)修改一些配置時(shí)總是不能及時(shí)地更新到服務(wù)器,我們總會(huì)重新部署或重啟來更新改變的內(nèi)容,在struts2中可以通過一個(gè)常量來達(dá)到此目的。并以javabean形式存放在內(nèi)存中,以后struts2對(duì)用戶的每次請(qǐng)求將使用內(nèi)存中數(shù)據(jù)。form action=...屬性值就會(huì)參照此name屬性。步驟三。 private String password。步驟一,新建myStruts2項(xiàng)目,并導(dǎo)入struts2的六個(gè)基本jar包。(5)其它配置文件,發(fā)現(xiàn)eclipse并不會(huì)給出幫助提示,那是因?yàn)镸yEclipse默認(rèn)并不支持struts2,所以我們需要手工導(dǎo)入dtd以支持提示。(3).() 在Struts框架使用了很多屬性,我們可以通過改變這些屬性來滿足我們的需求。除了StrutsPrepareAndExecuteFilter外,Struts還提供了一個(gè)ActionContexCleanUp類,它的主要任務(wù)是當(dāng)有其它一些過濾器要訪問一個(gè)初始化好了的struts框架的時(shí)候,負(fù)責(zé)處理一些特殊的清除任務(wù)。Src 目錄:源文件存放地 :開發(fā)的核心類庫(kù) :struts2的UI標(biāo)簽的模板使用freemarker編寫 :日志包 :對(duì)象圖導(dǎo)航語言,通過它來讀寫對(duì)象屬性 :xwork類庫(kù),struts2在其上進(jìn)行構(gòu)建:文件上傳組件。讀者可以到Struts官方網(wǎng)站下載幫助文檔,慢慢閱讀和理解,相信會(huì)受益頗豐。本章目的就是希望能幫助讀者理清一條思路,在必要的地方作出簡(jiǎn)單的解釋,達(dá)到事半功倍的效果。 總體來講,但我們不得不佩服Struts和WebWork開發(fā)小組的功底,代碼如此優(yōu)雅,甚至能夠感受看到兩個(gè)開發(fā)小組心神相通的默契。 最后,通過Result完成頁(yè)面的跳轉(zhuǎn)。 } } catch (ConfigurationException e) {} else { (())。 Result result = ()。 // If there was a previous value stack, then create a new copy and pass it in to be used
點(diǎn)擊復(fù)制文檔內(nèi)容
公司管理相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1