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