CodeGym /Adesua ahorow /All lectures for TW purposes /JSP:定義 servlet 的聲明方式

JSP:定義 servlet 的聲明方式

All lectures for TW purposes
等級 1 , 課堂 1004
開放

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 代碼!

留言
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION