。整個jsp/jsp bean展示層應當儘可能的瘦和簡單化。
。牢記大多數的JSP都應當是唯讀視圖,而由頁面bean來提供模型。
。應當一起設計JSP和JSP bean
。在儘可能合理的情況下,把商務邏輯從JSP中移走。具體於HTTP的邏輯(如,對Cookie的處理)屬於bean或支援類中,而不是JSP中。
。盡量把條件邏輯放在控制器中而不是放在視圖中。
。為JSP、包含的檔案、JSP Bean和實現擴充標記的類使用遵循標準的命名慣例。如:
jsp控制器 xxxxController.jsp
被包含的: jsp _descriptiveNameOfFragment.jsp
jsp頁面模型bean: <pagename>Bean 如loginBena.java
jsp會話bena: xxxxSessionBean
標記類 : xxxxTag,xxxxTagExtraInfo
。應當在JSP中避免使用頁面引入指令。import指令會促使類的實列化而不是jsp bean的執行個體化:
不用:<%@ page import = "com.java.util.*" %>
而用:<% java.util.List l = new java.util.LinkedList(); %>
。jsp不應該直接去訪問請求參數。bean應當執行這樣的處理過程並且輸出所處理的模型資料。
。jsp不應當訪問屬性檔案,或者使用JNDI。bean可以訪問屬性。
。如果jsp bean具有的所有的屬性不能夠從頁面請求中被映射到,就要儘力在<jsp:useBean>標記中設定屬性。
。應當避免設計既顯示表單又處理結果的頁面。
。在jsp中避免代碼重複。把要重複的功能放在一個包含的jsp、bean或標記延伸中,使得它能夠被重用。
。jsp bean應當永遠不要去產生HTML
。在jsp中應該避免使用out.println()發放來產生頁面內容。
。jsp層不應該直接存取資料,這包括JDBC資料庫訪問和EJB訪問。
。在長度上,scriptlests的代碼最好不要超過5行。
。除了jsp bean之外,jsp不應當去執行個體化複雜的可讀寫的對象。如果這樣的話,就有可能在jsp中去執行不適當的商務邏輯。
。jsp bean中不應當包含大量的資料。
。如果使用了<jsp:forward>和<jsp:include標記>,並且必須使用簡單類型的值來與外部頁面進行通訊的話,就應當使用一個或多個<jsp:param>元素
。定製標記應當用在適當把邏輯從jsp中移走的地方。
。應當謹慎地使用<jsp:forward>標記,在jsp中它是一個等價的goto。
。應當使用隱藏的注釋來阻止輸出的HTML過大。
。在jsp中避免進行異常處理
。每個jsp檔案中都應當使用一個錯誤頁面來處理不能夠從中恢複的異常。
。在jsp錯誤頁面中,使用HTML注釋來顯示傳遞到該頁面中的異常跟蹤資訊。
。只有在能夠獲得效能上的好處時,才使用jspInin()方法和jspDestroy()方法。擷取和放棄資源是jsp beans和標記處理器的事,而不是由jsp來負責的。
。如果沒有充分的理由,就不要在jsp中定義方法和內部內。