2.1 JSP ディレクティブ

JSP ファイルは通常のサーブレットに変換されることがわかったので、その中に通常の Java コードを記述することができます。この Java コードでは、さまざまなクラス (例の Math) を使用できます。これはさらにいいですね!ただし、すべてのコードがサーブレット メソッドに移動されていることがわかりますdoGet()。そして、これによりすぐにいくつかの疑問が生じます。

  • コードをメソッドに移動するにはどうすればよいですかdoPost()?
  • 独自のコードをメソッドに追加するにはどうすればよいですかinit()?
  • 結局、クラスのインポートを登録するにはどうすればよいでしょうか?

素晴らしい質問ですが、もちろん、JSP ディレクティブという答えがあります。JSP 内のすべての非 HTML コードは、特殊な括弧 と で囲む必要があり<%ます%>。すべての JSP ディレクティブはテンプレートによって指定されます。

<%@ directive %>

最も一般的なページ ディレクティブ属性のリストを次に示します。

説明
1 輸入 <%@ page import="java.util.Date" %> クラスをインポートします
2 コンテンツタイプ <%@ page contentType=text/html %> contentType を設定します
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> ");
    }
}

動作します。素晴らしい!