設(shè)置JSP頁面指令
1、始終把會(huì)話頁面指令設(shè)置為False,除非希望在JSP頁面中使用會(huì)話信息,F(xiàn)alse設(shè)置不會(huì)刪除現(xiàn)有的會(huì)話,但是true設(shè)置將創(chuàng)建一個(gè)會(huì)話,但也許不是有意的。了解使用request.getSession(true)時(shí)警告,為了避免這種調(diào)用帶來的安全問題,應(yīng)該確保限制了帶有頁面指令sesion = true的JSP頁面的使用。
2、設(shè)置頁面指令
“防彈的”應(yīng)用程序使用頁面指令重寫Session和errorPage的默認(rèn)值。應(yīng)始終把會(huì)話頁面指令設(shè)為False,除非希望在JSP頁面中使用會(huì)話的信息。False設(shè)置不會(huì)刪除任何現(xiàn)有的會(huì)話,但是true設(shè)置會(huì)創(chuàng)建一個(gè)會(huì)話(或許是無心的)。為了避免request.getSession(true)調(diào)用引入的安全問題,應(yīng)確保使用頁面指令Session="true"限制了JSP頁面的使用。只有在確認(rèn)會(huì)話后,對(duì)這些受限制的頁面的直接請(qǐng)求才確實(shí)存在。可以限制對(duì)JSP的訪問,具體做法是把它們放在web應(yīng)用程序的web-inf目錄中。可以在web-inf目錄中包含或轉(zhuǎn)發(fā)資源,但是外部用戶無法直接訪問這些資源。此外,我們無法知道應(yīng)用程序何時(shí)會(huì)拋出異常。使用errorPage頁面指令把這些失敗的請(qǐng)求重定向到一個(gè)用戶友好的錯(cuò)誤頁面。
3、基于模板進(jìn)行開發(fā)
沒有理由重頭開始編寫應(yīng)用程序組件。更好的辦法是采用一個(gè)與計(jì)劃開發(fā)的應(yīng)用程序相近的應(yīng)用程序,對(duì)它進(jìn)行修改,直到滿足需要為止。設(shè)計(jì) WebAuction應(yīng)用程序的目的就是如此,此外,sun公司發(fā)行的j2ee Blueprints為應(yīng)用程序開發(fā)提供了一個(gè)極好的起點(diǎn)。
4、注意大寫和空格
xml編碼格式的j2ee部署文件的出現(xiàn)意味著需要注意大寫和空格。開發(fā)人員可能花費(fèi)了大量時(shí)間來調(diào)試一個(gè)應(yīng)用程序,最后卻發(fā)現(xiàn),原來是一個(gè)錯(cuò)誤使用空格或括號(hào)導(dǎo)致了錯(cuò)誤。
5、使用正確的包含機(jī)制
使用包含指令模塊化頁面。如果站點(diǎn)定期重用組件,比如橫跨web站點(diǎn)頂部的導(dǎo)航欄或標(biāo)題,考慮把用于生成這些組件的代碼放入單獨(dú)的JSP頁面中。接著,使用JSP包含指令把上述代碼包含到每個(gè)頁面中。包含指令是一種高效的操作。如果又特殊的需要,想動(dòng)態(tài)選擇被包含的資源,或者需要對(duì)字符編碼進(jìn)行高級(jí)控制,就開一個(gè)使用包含動(dòng)作。
6、在JSP中盡量少使用Java
混合使用JSP和Java代碼很可能導(dǎo)致二者都顯示的晦澀。應(yīng)利用JavaBean和定制標(biāo)簽庫的優(yōu)點(diǎn),盡可能地少自傲JSP頁面中使用Java代碼,最理想的情況是完全不使用Java代碼。
7、把業(yè)務(wù)邏輯放在JavaBean中
JSP設(shè)計(jì)的一個(gè)好處是能夠避免把敏感的代碼放在web頁面中,業(yè)務(wù)邏輯可以在web應(yīng)用程序、服務(wù)器操作和Java客戶端應(yīng)用程序中應(yīng)用程序??梢栽谡麄€(gè)J2EE平臺(tái)上廣泛使用JavaBean,所以JavaBean是定義應(yīng)用程序業(yè)務(wù)邏輯的好地方。
8、標(biāo)簽庫中的表示邏輯
定制標(biāo)簽庫提供了一種方式,允許使用JSP標(biāo)簽來替換表示層邏輯。然而,標(biāo)簽庫處理程序類與JSP緊密相關(guān),不能在其他上下文中被重用。同樣,定制標(biāo)簽是定義表示邏輯的好地方,但是不適合定義業(yè)務(wù)邏輯。
9、使用現(xiàn)有的標(biāo)簽庫
沒有必要重復(fù)發(fā)明輪子。又大量多種用途的標(biāo)簽庫已經(jīng)存在。如jstl
【編輯推薦】