我認為JSP有問題(上)
2020-06-01 23:25:59
供稿:網友
(作者:小龍亭主Blueski編譯 2000年12月22日 14:22)
?。ň幷撸哼@篇文章的原文首次在國外出現時,JSP還只是一種剛剛嶄露頭角的技術,并沒有像現在這樣如日中天?,F在看來這篇文章的某些觀點可能會有一定的局限性,但我不得不承認這是一篇很大氣的作品,其中涉及很多JSP的內在原理。因此,我想還是有必要把這篇文章介紹給大家,以便各位從另一個側面更深入的了解JSP技術。)
如今每一個使用servlets的開發者都知道JSP,一種建構在servlet技術之上的由Sun公司發明并花費大量精力加以推行的web技術。JSP將servlet中的html代碼脫離了出來,從而可以加速web應用開發和頁面維護。實際上,由Sun發布的官方 "應用開發模型"文檔上說得更遠:"JSP技術應該被視為標準,而servlets在多數情況下可視為一種補充。"
本文將比較JSP和另一項基于servlets的技術:template engines(模板引擎)。
直接使用Servlets的問題
當Servlets被發明時,整個世界都看到了它的優越性?;赟ervlet的動態網頁可以被快速執行,可以在多個服務器之間輕易轉移, 并且可以和后臺數據庫完美地集成,因此Servlets被廣泛接受成為一種web服務器端的首選平臺。
但是,通常通過簡單方式即可實現的html代碼現在卻要讓程序員通過 out.println()調用每一行HTML行,這在實際的 Servlet應用中變成一個嚴重問題。HTML內容不得不通過代碼來實現, 這對于大的HTML頁來說不啻是一項繁重費時的工作。另外,負責網頁內容的人員不得不請開發人員來進行所有的更新。為此,人們尋求這一種更好的解決方式。
JSP誕生
JSP 0.90誕生了。在這種技術中你可以將Java代碼嵌入到HTML文件,服務器將自動為頁面創建一個Servlet。JSP被認為是一種寫Servlet的簡易方式。所有HTML可以直接得到而不必通過out.println()調用,而負責頁面內容的人員可以直接修改HTML而不必冒破壞Java代碼的風險。
但是,讓頁面美術設計師和開發人員在同一文件上工作并不理想,讓Java嵌入HTML被證明是就象將HTML嵌入Java一樣令人尷尬。讀取一堆很亂的代碼仍然是一件困難的事情。
于是,人們在使用jsp方面變得成熟,更多地使用了JavaBeans。Beans包含了jsp所需的業務邏緝代碼。JSP中的大多數代碼都可以取出來放到bean中去,而只留下極少的標記用于調用bean。
最近,人們開始認為這種方式下的JSP頁面真的很象是視圖(view)。它們成為一個用于顯示客戶端請求結果的組件。于是人們會想,為什么不直接對view發送請求呢?目標view如果對該請求不合適又將如何?說到底,很多的請求有多種可能來取得結果view視圖。例如,同一請求可能產生成功的頁面、數據庫例外出錯報告,或者是缺少參數的出錯報告。同一請求可能產生一個英文頁面也可能是西班牙文頁面,這取決于客戶端的locale。為什么客戶端必須直接將請求發送給view?為什么客戶端不應該將請求發送給一些通用的服務器組件并讓服務器來決定JSP view的返回?