1.1 JSP介紹
有兩種流行的編寫 servlet 的方法:命令式和聲明式。我們已經處理了第一個 - 實際上,這是一個 Servlet。第二種稱為 JSP(Java 服務器頁面),我們現在將熟悉它。
Servlet JSP 示例:
<html>
<body>
<% out.print(2*5); %>
</body>
</html>
不是很像我們習慣的經典Servlet吧?這是真實的。JSP 是一個帶有 Java 代碼插入(以綠色突出顯示)的 HTML 頁面。
你看,如果在 servlet 中有很多 Java 代碼而 HTML 代碼很少,那麼使用經典的 servlet 會更舒服。但是,如果您需要一個大型 HTML 頁面,其中只有幾行被服務器更改怎麼辦?
在這種情況下,最簡單的事情就是創建這個 HTML 頁面並以某種方式在服務器上執行 Java 代碼。
1.2 編譯 JSP
讓我們看另一個例子:
<html>
<body>
<%
double num = Math.random(); if (num > 0.95) {
%>
<h2>You are lucky, user!</h2><p>(<%= num %>)</p>
<%
}
%>
</body>
</html>
我們得到一個隨機數,如果它大於 0.95,我們打印文本“你很幸運,用戶!”
Java 代碼在這里以藍色突出顯示。正常(未突出顯示)- HTML 代碼,以及紅色 - 服務標籤,有助於理解 Java 代碼在哪里以及 HTML 在哪裡。
你注意到一些奇怪的事情嗎?右大括號"}"
在另一個"code block"
. 編寫此類代碼的正確方法是什麼?它是如何工作的?
答案將非常簡單:)
Web 服務器在找到 JSP 文件後,將其編譯成經典的 servlet。基於上面的JSP頁面,會生成這個Servlet:
public class HelloServlet extends HttpServlet {
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws Exception {
PrintWriter out = response.getWriter();
out.print("<html> ");
out.print("<body>");
double num = Math.random();
if (num > 0.95) {
out.print("<h2>You're lucky user! </h2><p>(" + num + ")</p>");
}
out.print("</body>");
out.print("</html>");
}
}
Web 容器剛剛生成了 servlet 代碼,其中 HTML 變成了文本,Java 代碼插入變成了常規的 Java 代碼!
GO TO FULL VERSION