1、Servlet 與 JSP
Servlet 一般使用字符串拼接的方式動態生成 html,大量的 html 內容使代碼難以維護、可讀性差。因而大佬們想,既然能在 Java 中寫 html,能不能在 html 中寫 Java 呢?javascript
JSP(JavaServer Pages) 誕生了。css
JSP 是基於 Servlet API 的,因此擁有 Servlet 擁有的一系列好處,能夠實現各類功能,同時能夠很方便地編寫或修改網頁,不用面對大量的 println 語句,可是,什麼事情都要把握一個度,在 html 中混入大量、複雜的業務邏輯也是不可取的。html
一種雙劍合璧、揚長避短的方法是把 Servlet 當成 Controller 層,用於處理瀏覽器請求,並調用核心業務邏輯(Model)。而 JSP 則用做 View 層,負責動態地把處理結果輸出到 html 中去。java
Model、View、Controller,沒錯,這就是咱們所說的 MVC 模式啦!這裏先不贅述,之後會有一篇文章專門介紹 MVC 。程序員
2、JSP 簡介
先動手來個實踐。web
本部份內容來自 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,能夠看到運行結果app
1 代碼分析
Page 指令
<%@page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" import="java.util.*"%>
<%@page ... %>是 JSP 的 Page 指令,爲瀏覽器提供當前頁面的使用說明,與 html 的頭對應。等價的 XML 格式爲webapp
<jsp:directive.page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" import="java.util.*"/>
JSP 表達式
JSP 表達式的語法格式爲:<%= 表達式 %> ,JSP表達式會先被轉化爲 String,而後插入到表達式出現的地方。
<%=new Date().toLocaleString()%>
本行代碼輸出當前的時間。
表達式能夠出如今文本行中,而不必定是 html 標籤。可使用任何符合 Java 語言規範的表達式。
JSP 執行過程
test.jsp 的執行過程爲:
- test.jsp 被轉譯爲 test_jsp.java(該類繼承自 HttpJspBase,而 HttpJspBase 繼承自 HttpServlet)
- test_jsp.java 被編譯成 hello_jsp.class
- 執行 hello_jsp.class,生成 html
- 經過 HTTP 協議把 html 響應返回給瀏覽器
2 頁面元素
除了上面提到的指令和表達式,JSP 還有如下幾種頁面元素:
靜態內容
即 html/css/javascript 等內容
Scriptlet
在 <% %> 之間,能夠寫任何 Java 代碼
聲明
在 <% ! %> 之間能夠聲明字段或方法,可是不建議這麼作。
動做
<jsp:include page="Filename"> 在 JSP 頁面中包含另外一個頁面。
註釋
<%-- jsp代碼 --%>
3 其它細節
其它細節方面的內容感興趣的小夥伴能夠自行去了解,仍是那句話,編程最重要的是動手去作,不擼個幾百萬行代碼怎麼好意思說本身室程序員呢?
給你們推薦兩個教程,都是很良心的,能夠在學習 Java 的過程當中時常參考:
【2】 菜鳥教程:JSP 教程
這個系列的文章我會逐步更新,主要是但願幫助你們對 Java Web 開發創建一個大概的認識,感興趣的小夥伴能夠戳下面的鏈接——
JavaEE 從入門到放棄(二):一文讀懂 Servlet JavaEE 從入門到放棄(三):爲何要用 JSP? JavaEE 從入門到放棄(四):MVC 模式 JavaEE 從入門到放棄(五):如何理解 Spring
歡迎關注Evan 的博客