2014-02-24 43 views
2

我想知道使用scriplet的全部內容。爲什麼在編寫JSP(s)時不推薦使用它。每次我詢問scriptlet的編碼時,他們都指出我不要使用它,而是使用JSTL。使用scriptlet的缺點?

謝謝你給你這方面的知識。

+0

閱讀:http://www.udel.edu/CIS/474/pconrad/05S/lect/notes/04.28/TextbookExcerpt_NoScripletMemo_JSPElementMagnets.pdf –

回答

1

網絡中有幾種比較scrptlets和JSTL(我想你用Google搜索一些第一),其中大部分會告訴你同樣的

  • JSTL更容易測試,維護和閱讀幾篇文章
  • JSTL可重複使用
  • JSTL可以商業邏輯從表現
  • JSTL可以直接破產,也不會破壞整個頁面
分離

另一方面

  • JSTL是難度比小腳本開發(至少也有不同的學習曲線)
  • 要解決在生產小腳本,它只是一個改變JSP(有時是錯誤的事更明顯)
0
  • 你似乎只有小腳本的呈現和流控制 部分集中於如在使用如果,和switch語句和 的out.print( )的東西。

  • 您似乎比較scriptlet 1:1與JSTL。這是錯誤的。我是 不是隻談論流量控制部分(這實際上是由JSTL取代 ),而是關於在 一般的JSP文件中編寫原始Java代碼。

  • 即,收集請求參數,驗證和轉換值, 與數據庫和其他Java類/方法等交互。所有 您通常(間接)在Servlet或過濾器中執行的操作。

您不應在JSP中使用scriptlet代碼。我建議使用100%JSTL和零腳本代碼。

  1. JSP應該是純粹的介紹。這就是 僅使用JSTL編寫JSP的隱藏好處,因爲它們在其他位置獲取所有動態數據。讓服務層擁有業務邏輯並確定JSP需要什麼數據。

  2. 這也回答你的單元測試問題。您不應該有 單元測試JSP;那些將會是像Selenium一樣的UI測試。如果邏輯 位於服務層中,則很明顯如何對其進行測試。

  3. JSP不應該被繼承。您當然可以使用類似SiteMesh的方式將它們組合爲 ,但繼承在您的JSP中沒有 部分。一旦它們從Servlet繼承,鏈接應該是 結束。

  4. 此外,這是一個錯誤的選擇。兩者都不需要重用,繼承或單元測試。但這並不意味着沒有一個明確的贏家:它是JSTL。沒有人應該在JSP中使用scriptlet, 除非常罕見的單行程序。 Scriptlets乞求麻煩。

  5. 現在我更喜歡Velocity作爲我的Web UI模板解決方案 Java,遠遠超過JSP。只是我的觀點。