2.1 JSP指令

既然我們發現JSP文件被轉換成了一個普通的servlet,那你就可以在裡面寫正常的Java代碼了。在此 Java 代碼中,您可以使用各種類(示例中的數學)。這更好!但是我們可以看到所有的代碼都被移到了一個doGet()servlet 方法中。這立即引發了幾個問題:

  • 如何使代碼移動到方法中doPost()
  • 如何將自己的代碼添加到方法中init()
  • 到底如何註冊類導入?

很好的問題,當然,他們有答案 - JSP 指令。JSP 中的所有非 HTML 代碼都必須用特殊的方括號<%%>. 所有 JSP 指令都由一個模板給出:

<%@ directive %>

以下是最流行的頁面指令屬性列表:

例子 描述
1個 進口 <%@ page import="java.util.Date" %> 導入一個類
2個 內容類型 <%@ page contentType=text/html %> 設置內容類型
3個 延伸 <%@ page extends="Object" %> 您可以設置基類
4個 信息 <%@ page info="Author: Peter Ivanovich; version:1.0" %> 為 getServletInfo() 設置數據
5個 緩衝 <%@ page buffer="16kb" %> 設置響應緩衝區的大小
6個 語言 <%@ page language="java" %> 指定語言,默認為Java
7 被忽略 <%@ page isELIgnored="true" %> 允許您禁用 EL 腳本
8個 是線程安全的 <%@ page isThreadSafe="false" %> 指向線程安全
9 自動沖洗 <%@ page autoFlush="false" %> 管理緩衝區寫入
10 會議 <%@ page session="false" %> 您可以禁用該頁面的會話
十一 頁面編碼 <%@ page pageEncoding="UTF-8"%> 可以設置頁面編碼
12 錯誤頁面 <%@ page errorPage="errorpage.jsp" %> 你可以設置一個錯誤頁面

2.2 進口

為了好玩,讓我們向 JSP 文件添加一些導入並定義一個基類。

JSP 文件示例:


    <%@ page import="java.util.Date" %> 
    <%@ page import="java.lang.Math" %> 
    <%@ page extends="com.codegym.MyHttpServlet" %> 
 
    <html> 
    <body> 
    <%
        double num = Math.random();
        if (num > 0.95) {
     %>
         <h2>You are lucky, user!</h2><p>(<%= num %>)</p>
    <%
    }
    %> 
  </body> 
   </html> 

這就是它的結果:

import java.util.Date;
import java.lang.Math;

public class HelloServlet extends com.codegym.MyHttpServlet {
    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> ");
    }
}

作品。偉大的!