JSP 與 HTML 的關係 原

我發現不少初學者不能很好理解 JSP 與 HTML 的關係,不少的視頻教程也沒有強調兩者間的關係,或者只是說得很簡略。

先來看一張圖:

image

這裏很好概括了兩者的關係,簡單講就是 JSP 是 HTML 的模板,用於生成 HTML。

請求一個比如 index.jsp,並不是爲了獲取這個 jsp 本身的內容,而是獲取這個 JSP 所生成的 HTML(可以包括 Javascript 及 CSS 等)。

這個生成過程在服務器端完成,在這個過程中,所有的 JSP 的 tag,各種表達式(jstl,el 等)以及各種腳本被處理以生成最終的 HTML。

最終得到的 HTML 被髮送到瀏覽器端,內容中也不再包含 JSP 的各種 tag 等,因爲瀏覽器實際上也不認識這些東西。

一個單純的 HTML 頁面中如果包含這些則是非法的。

當然,這個生成過程可以是動態的,可以邊生成,邊往瀏覽器端發送,可以完全是一種流式的(事實上也是如此),服務器端不需要真正生成一個 HTML 文件。

另外這個過程是在服務器端完成的。這點要跟一些客服端模板技術區別開,比如一些 js 的框架,如 Angular,vue 之類的。

JSP 屬於後端模板,數據在後臺與 tag 及 el 表達式等作用生成最終的 HTML,處理過程由 tomcat 等 servlet 容器完成。

Angular 等屬於前端模板,數據與 HTML 頁面一起發送到瀏覽器端,或者單獨再通過另一次 ajax 請求到達前臺(通常爲 json 格式),然後由 javascript 引擎處理模板得到最終的 HTML,這個處理過程在前臺由瀏覽器完成。

注意:JSP 也可以在後端生成一個前端模板,然後交給前臺。事實上,http 是一個文本協議,JSP 在後端可以生成什麼文本由程序員自己決定。

我們說 JSP 是 HTML 的模板,但如果你要用 JSP 生成 XML,那也未嘗不可。

如果對 JSP 頁面的結果有疑問,可以在瀏覽器端用開發人員工具查看最終發送過去的 HTML,看看是哪個環節的生成結果有誤。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章