STRUTS
摘要: Struts的Token(令牌)機(jī)制能夠很好的解決表單重復(fù)提交的問(wèn)題,基本原理是:服務(wù)器端在處理到達(dá)的請(qǐng)求之前,會(huì)將請(qǐng)求中包含的令牌值與保存在當(dāng)前用戶會(huì)話中的令牌值進(jìn)行比較,看是否匹配。在處理完該請(qǐng)求后,且在答復(fù)發(fā)送給客戶端之前,將會(huì)產(chǎn)生一個(gè)新的令牌,該令牌除傳給客戶端以外,也會(huì)將用戶會(huì)話中保存的舊的令牌進(jìn)行替換。這樣如果用戶回退到剛才的提交頁(yè)面并再次提交的話,客戶端傳過(guò)來(lái)的令牌就和服務(wù)器端的令牌不一致,從而有效地防止了重復(fù)提交的發(fā)生。
閱讀全文
閱讀全文
摘要: Struts-Bean 標(biāo)簽庫(kù)
此標(biāo)簽庫(kù)和Java Bean有很強(qiáng)的關(guān)聯(lián)性,設(shè)計(jì)的本意是要在JSP 和JavaBean 之間提供一個(gè)接口。Struts 提供了一套小巧有用的標(biāo)簽庫(kù)來(lái)操縱JavaBean和相關(guān)的對(duì)象:cookie、 header、 parameter、 define、write、message、 include、page、resource、size、struts。
閱讀全文
此標(biāo)簽庫(kù)和Java Bean有很強(qiáng)的關(guān)聯(lián)性,設(shè)計(jì)的本意是要在JSP 和JavaBean 之間提供一個(gè)接口。Struts 提供了一套小巧有用的標(biāo)簽庫(kù)來(lái)操縱JavaBean和相關(guān)的對(duì)象:cookie、 header、 parameter、 define、write、message、 include、page、resource、size、struts。
閱讀全文
摘要: 用Validator(驗(yàn)證器)提供的豐富的內(nèi)置驗(yàn)證方法簡(jiǎn)化Struts的開(kāi)發(fā)過(guò)程。
Struts框架的一個(gè)主要好處是它提供了對(duì)接收到的表單數(shù)據(jù)進(jìn)行驗(yàn)證的內(nèi)置界面。如果有任何驗(yàn)證失敗,則應(yīng)用程序都會(huì)重新顯示HTML表單,這樣就可以改正無(wú)效的數(shù)據(jù)了。如果驗(yàn)證成功,則處理過(guò)程會(huì)繼續(xù)進(jìn)行。Struts框架的簡(jiǎn)單驗(yàn)證界面會(huì)減少與處理數(shù)據(jù)驗(yàn)證有關(guān)的令人頭疼的事情,這樣你就可以把精力集中到驗(yàn)證代碼上,而不是放到捕獲數(shù)據(jù)、重新顯示不完整或無(wú)效數(shù)據(jù)的技巧上。
閱讀全文
Struts框架的一個(gè)主要好處是它提供了對(duì)接收到的表單數(shù)據(jù)進(jìn)行驗(yàn)證的內(nèi)置界面。如果有任何驗(yàn)證失敗,則應(yīng)用程序都會(huì)重新顯示HTML表單,這樣就可以改正無(wú)效的數(shù)據(jù)了。如果驗(yàn)證成功,則處理過(guò)程會(huì)繼續(xù)進(jìn)行。Struts框架的簡(jiǎn)單驗(yàn)證界面會(huì)減少與處理數(shù)據(jù)驗(yàn)證有關(guān)的令人頭疼的事情,這樣你就可以把精力集中到驗(yàn)證代碼上,而不是放到捕獲數(shù)據(jù)、重新顯示不完整或無(wú)效數(shù)據(jù)的技巧上。
閱讀全文
摘要: Web層的數(shù)據(jù)表示是FormBean,數(shù)據(jù)來(lái)源于HTML Form POST
業(yè)務(wù)層的數(shù)據(jù)表示是VO
持久層的數(shù)據(jù)表示是PO,其數(shù)據(jù)來(lái)源于數(shù)據(jù)庫(kù),持久層的數(shù)據(jù)表示例如CMP
在一個(gè)規(guī)范的J2EE架構(gòu)中,不同層的數(shù)據(jù)表示應(yīng)該被限制在層內(nèi),而不應(yīng)該擴(kuò)散到其它層,這樣可以降低層間的耦合性,提高J2EE架構(gòu)整體的可維護(hù)性和可擴(kuò)展性。比如說(shuō)Web層的邏輯進(jìn)行了修改,那么只需要修改FormBean的結(jié)構(gòu),而不需要觸動(dòng)業(yè)務(wù)層和持久層的代碼修改。同樣滴,當(dāng)數(shù)據(jù)庫(kù)表進(jìn)行了小的調(diào)整,那么也只需要修改持久層數(shù)據(jù)表示,而不需要觸動(dòng)業(yè)務(wù)層代碼和Web層代碼。
閱讀全文
業(yè)務(wù)層的數(shù)據(jù)表示是VO
持久層的數(shù)據(jù)表示是PO,其數(shù)據(jù)來(lái)源于數(shù)據(jù)庫(kù),持久層的數(shù)據(jù)表示例如CMP
在一個(gè)規(guī)范的J2EE架構(gòu)中,不同層的數(shù)據(jù)表示應(yīng)該被限制在層內(nèi),而不應(yīng)該擴(kuò)散到其它層,這樣可以降低層間的耦合性,提高J2EE架構(gòu)整體的可維護(hù)性和可擴(kuò)展性。比如說(shuō)Web層的邏輯進(jìn)行了修改,那么只需要修改FormBean的結(jié)構(gòu),而不需要觸動(dòng)業(yè)務(wù)層和持久層的代碼修改。同樣滴,當(dāng)數(shù)據(jù)庫(kù)表進(jìn)行了小的調(diào)整,那么也只需要修改持久層數(shù)據(jù)表示,而不需要觸動(dòng)業(yè)務(wù)層代碼和Web層代碼。
閱讀全文
摘要: 標(biāo)簽用于生成一個(gè)HTML form。使用該標(biāo)簽時(shí)必須遵循許多規(guī)則。
首先,標(biāo)簽中必須包含一個(gè)action屬性,它是這個(gè)標(biāo)簽中唯一必需的屬性。如果不具備該屬性則JSP頁(yè)面會(huì)拋出一個(gè)異常。之后你必須給這個(gè)action屬性指定一個(gè)有效值。一個(gè)有效值是指應(yīng)用程序的Struts配置文件中元素里的任何一個(gè)子元素的訪問(wèn)路徑。而且相應(yīng)的元素中必須有一個(gè)name屬性,它的值是form bean的名稱。
閱讀全文
首先,標(biāo)簽中必須包含一個(gè)action屬性,它是這個(gè)標(biāo)簽中唯一必需的屬性。如果不具備該屬性則JSP頁(yè)面會(huì)拋出一個(gè)異常。之后你必須給這個(gè)action屬性指定一個(gè)有效值。一個(gè)有效值是指應(yīng)用程序的Struts配置文件中元素里的任何一個(gè)子元素的訪問(wèn)路徑。而且相應(yīng)的元素中必須有一個(gè)name屬性,它的值是form bean的名稱。
閱讀全文