Java EE 極簡教程(三):為什么要用 JSP胯努?

一牢裳、Servlet 與 JSP

Servlet 通常使用字符串拼接的方式動態(tài)生成 html术瓮,大量的 html 內容使代碼難以維護、可讀性差贰健。

感受一下胞四,簡單地加一個 table 得醬寫:



都快看不出來是 Java 代碼了。

后來伶椿,大佬們想辜伟,既然能在 Java 中寫 html,能不能在 html 中寫 Java 呢脊另?

于是 JSP(JavaServer Pages) 誕生了导狡。

JSP 是基于 Servlet API 的,所以擁有 Servlet 擁有的一系列好處偎痛,可以實現各種功能旱捧,同時可以很方便地編寫或修改網頁,不用面對大量的 println 語句踩麦,但是枚赡,什么事情都要把握一個度,在 html 中混入大量谓谦、復雜的業(yè)務邏輯也是不可取的贫橙。

一種雙劍合璧、揚長避短的方法是把 Servlet 當成 Controller 層反粥,用于處理瀏覽器請求卢肃,并調用核心業(yè)務邏輯(Model)。而 JSP 則用作 View 層才顿,負責動態(tài)地把處理結果輸出到 html 中去莫湘。

Model、View郑气、Controller幅垮,沒錯,這就是我們所說的 MVC 模式啦竣贪!這里先不贅述军洼,以后會有一篇文章專門介紹 MVC 。

二演怎、JSP 簡介

JSP 是如何實現這種功能的呢匕争?

通過分析源碼,我們發(fā)現爷耀,JSP 被服務器 “轉譯” 成了 Servlet甘桑。

我們知道,在服務器中部署 Servlet,需要先把 Servlet 編譯成 .class 文件跑杭,所以添加或修改 Servlet 需要重啟服務器才能生效铆帽。而 JSP 的轉譯與編譯均由服務完成,服務器如果設置了 JSP 監(jiān)視德谅,則不需重啟就可以應用新增或修改的 JSP爹橱。

下面動手來個實踐。

本部分內容來自 How2J 的 JSP 教程

test.jsp

在 web 目錄下新建一個文件 test.jsp
(Tomcat 的 web 根目錄為 /webapps/ROOT)

<%@page contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8" import="java.util.*"%>
 
hello,jsp
 
<br>
 
<%=new Date().toLocaleString()%>

訪問 localhost/test.jsp窄做,可以看到運行結果


1 代碼分析

Page 指令

<%@page contentType="text/html; charset=UTF-8"  pageEncoding="UTF-8" import="java.util.*"%>

<%@page ... %> 是 JSP 的 Page 指令愧驱,為瀏覽器提供當前頁面的使用說明,與 html 的頭對應椭盏。等價的 XML 格式為

<jsp:directive.page contentType="text/html; charset=UTF-8"  pageEncoding="UTF-8" import="java.util.*"/>

JSP 表達式

JSP 表達式的語法格式為:<%= 表達式 %>组砚,JSP表達式會先被轉化為 String,然后插入到表達式出現的地方掏颊。

<%=new Date().toLocaleString()%>

本行代碼輸出當前的時間糟红。

表達式可以出現在文本行中,而不一定是 html 標簽乌叶∨璩ィ可以使用任何符合 Java 語言規(guī)范的表達式。

JSP 執(zhí)行過程

test.jsp 的執(zhí)行過程為:

  1. test.jsp 被轉譯為 test_jsp.java(該類繼承自 HttpJspBase枉昏,而 HttpJspBase 繼承自 HttpServlet)
  2. test_jsp.java 被編譯成 hello_jsp.class
  3. 執(zhí)行 hello_jsp.class陈肛,生成 html
  4. 通過 HTTP 協(xié)議把 html 響應返回給瀏覽器

2 頁面元素

除了上面提到的指令表達式,JSP 還有以下幾種頁面元素:

靜態(tài)內容

即 html/css/javascript 等內容

Scriptlet

<% %> 之間兄裂,可以寫任何 Java 代碼

聲明

<% ! %> 之間可以聲明字段或方法,但是不建議這么做阳藻。

動作

<jsp:include page="Filename"> 在 JSP 頁面中包含另一個頁面晰奖。

注釋

<%-- jsp代碼 --%>

3 其它細節(jié)

其它細節(jié)方面的內容感興趣的小伙伴可以自行去了解,還是那句話腥泥,編程最重要的是動手去做匾南,不擼個幾百萬行代碼怎么好意思說自己室程序員呢?

Servlet 和 JSP 實際上是各有千秋蛔外,我們應該如何揚長避短呢蛆楞?且聽下回分解——

「Java EE 極簡教程(四):MVC 模式」

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市夹厌,隨后出現的幾起案子豹爹,更是在濱河造成了極大的恐慌,老刑警劉巖矛纹,帶你破解...
    沈念sama閱讀 217,406評論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件臂聋,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機孩等,發(fā)現死者居然都...
    沈念sama閱讀 92,732評論 3 393
  • 文/潘曉璐 我一進店門艾君,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人肄方,你說我怎么就攤上這事冰垄。” “怎么了权她?”我有些...
    開封第一講書人閱讀 163,711評論 0 353
  • 文/不壞的土叔 我叫張陵虹茶,是天一觀的道長。 經常有香客問我伴奥,道長写烤,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,380評論 1 293
  • 正文 為了忘掉前任拾徙,我火速辦了婚禮洲炊,結果婚禮上,老公的妹妹穿的比我還像新娘尼啡。我一直安慰自己暂衡,他們只是感情好,可當我...
    茶點故事閱讀 67,432評論 6 392
  • 文/花漫 我一把揭開白布崖瞭。 她就那樣靜靜地躺著狂巢,像睡著了一般。 火紅的嫁衣襯著肌膚如雪书聚。 梳的紋絲不亂的頭發(fā)上唧领,一...
    開封第一講書人閱讀 51,301評論 1 301
  • 那天,我揣著相機與錄音雌续,去河邊找鬼斩个。 笑死,一個胖子當著我的面吹牛驯杜,可吹牛的內容都是我干的受啥。 我是一名探鬼主播,決...
    沈念sama閱讀 40,145評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼鸽心,長吁一口氣:“原來是場噩夢啊……” “哼滚局!你這毒婦竟也來了?” 一聲冷哼從身側響起顽频,我...
    開封第一講書人閱讀 39,008評論 0 276
  • 序言:老撾萬榮一對情侶失蹤藤肢,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后冲九,有當地人在樹林里發(fā)現了一具尸體谤草,經...
    沈念sama閱讀 45,443評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡跟束,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 37,649評論 3 334
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現自己被綠了丑孩。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片冀宴。...
    茶點故事閱讀 39,795評論 1 347
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖温学,靈堂內的尸體忽然破棺而出略贮,到底是詐尸還是另有隱情,我是刑警寧澤仗岖,帶...
    沈念sama閱讀 35,501評論 5 345
  • 正文 年R本政府宣布逃延,位于F島的核電站,受9級特大地震影響轧拄,放射性物質發(fā)生泄漏揽祥。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,119評論 3 328
  • 文/蒙蒙 一檩电、第九天 我趴在偏房一處隱蔽的房頂上張望拄丰。 院中可真熱鬧,春花似錦俐末、人聲如沸料按。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,731評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽载矿。三九已至,卻和暖如春烹卒,著一層夾襖步出監(jiān)牢的瞬間闷盔,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,865評論 1 269
  • 我被黑心中介騙來泰國打工旅急, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留馁筐,地道東北人。 一個月前我還...
    沈念sama閱讀 47,899評論 2 370
  • 正文 我出身青樓坠非,卻偏偏與公主長得像,于是被迫代替她去往敵國和親果正。 傳聞我的和親對象是個殘疾皇子炎码,可洞房花燭夜當晚...
    茶點故事閱讀 44,724評論 2 354

推薦閱讀更多精彩內容

  • 1. Java基礎部分 基礎部分的順序:基本語法,類相關的語法秋泳,內部類的語法潦闲,繼承相關的語法,異常的語法迫皱,線程的語...
    子非魚_t_閱讀 31,630評論 18 399
  • 一歉闰、JSP基礎 1.1什么是JSP JSP(Java ServerPage)是Java服務器端動態(tài)頁面技術辖众。是su...
    晨星資源閱讀 1,148評論 0 6
  • JSP總結(經典) day1 JSP 定義: 1)Java Server Page, Java EE 組件,本...
    java日記閱讀 3,442評論 0 13
  • 域名是方便網絡計算機地址識記的一種技術機制和敬,簡單地說就相當于是記錄在DNS服務器上的IP與域名的對應表凹炸。一般網絡管...
    iLester閱讀 3,374評論 0 3
  • 不經意眼間舱痘,你來到我們身邊已經有365天变骡。日歷已經撕掉了滿滿的一本,歡樂也記載了滿滿的一年芭逝。馬上你就要滿周...
    寂寞江湖閱讀 1,568評論 0 6