関連するナレッジ ポイントと JSP+EL 式のユース ケースを要約します。
目次
JSPとは
JSPとは
-
JSP は Java プログラムです。(JSP は本質的にサーブレットです)
-
JSPとは:JavaServer Pagesの略。(Java 言語に基づいて実装されたサーバー側のページ。)
-
サーブレットは JavaEE の 13 のサブ仕様の 1 つであるため、JSP も JavaEE の 13 のサブ仕様の 1 つです。
-
JSP は一連の仕様です。すべての Web コンテナー/Web サーバーは、この一連の仕様に従っており、この一連の仕様に従って「変換」します。各 Web コンテナー/Web サーバーには、組み込みの JSP 変換エンジンがあります。
JSPとサーブレットの関係
Web ディレクトリに index.jsp を記述し、ブラウザで index.jsp にアクセスすると、index.jsp が index_jsp.java を自動的に変換して生成し、index_jsp.class を自動的にコンパイルして生成することがわかります。 index_jsp を取得できるクラスです。
次に、index_jsp クラスが HttpJspBase を継承し、HttpJspBase クラスが HttpServlet を継承していることがわかります。したがって、index_jsp クラスはサーブレット クラスであると結論付けることができます。
次に、JSP は本質的にサーブレットであることがわかり、質問があります。
JSPとサーブレットの違いは何ですか?
さまざまな責任:
- サーブレットの役割は何ですか: データを収集すること。(サーブレットの強みは、ロジック処理、業務処理、そしてデータベースと連携してデータを取得・収集することです。)
- JSP の役割: 表示データ。(JSPの強みはデータ表示)
JSPの役割
JSPの役割は効果を表示することですが、どのように表示しますか? HTMLページのデータをサーブレットのプログラムに置き換えて返すというものですが、どういう意味ですか? つまり、作成したサーブレット プログラムにデータ テーブルへの追加、削除、変更、およびクエリをいくつか記述し、対応するサーブレットを実行してデータを取得するので、取得したデータをどのように作成するかを取得し、 HTMLで表示?? 現時点では、JSP テクノロジが必要です。
JSP 構文形式
-
JSPで普通の文字列を直接書く
-
サービスメソッドの out.write("here") に変換
-
-
<%%>
-
サービスメソッドの本体に翻訳すると、Java ステートメントが 1 つずつあります。
-
-
<%! %>
-
サービスメソッドの外に翻訳されます。
-
-
<%= %>
-
サービス メソッドの本体に変換すると、翻訳は次のようになります。 out.print();
-
-
<%@page contentType="text/html;charset=UTF-8"%>
-
page ディレクティブは、contentType 属性を介して応答のコンテンツ タイプを設定するために使用されます。
-
jspファイルにテキストを直接書き込んだ場合、どこで自動翻訳されるのでしょうか?
-
これは、サーブレット クラスのサービス メソッドの out.write("Translate to here") に変換され、直接ダブル クォーテーション マークに変換され、Java プログラムによって通常の文字列としてブラウザに出力されます。
HTML CSS JS コードから JSP への変換とは?
- これらのコードは、JSP にとっては単なる通常の文字列です。しかし、JSP がこの通常の文字列をブラウザーに出力すると、ブラウザーは HTML CSS JS を解釈して実行します。効果を示します。
JSP ディレクティブ
-
命令の役割: JSP 変換エンジンの作業方法をガイドする (現在の JSP 変換エンジンに JSP ファイルの変換方法をガイドする)。
-
指示は何ですか?
- 命令を含める: 命令を含めます。JSP に完全に静的に含めます。ほとんど使用されません。(ここではありません)
- taglib 命令: タグ ライブラリをインポートするための命令。JJSTL タグ ライブラリにアクセスするときに、このことを学んでください。今のところ気にしないでください。
- ページ コマンド: 現在、ページ コマンドの学習に重点を置いています。
-
ディレクティブを使用するための構文は何ですか?
- <%@コマンド名 属性名=属性値 属性名=属性値 属性名=属性値....%>
場合:
<%@page contentType="text/html; charset=UTF-8" %>
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
JSP ページ命令の共通使用法と共通命令
JSP ページ命令の一般的な使用方法: 応答の中国語文字化けの問題を解決: ページ命令で応答のコンテンツ タイプを設定し、コンテンツ タイプの最後に追加: charset=UTF-8
<%@page contentType="text/html;charset=UTF-8"%>
-
<%@page contentType="text/html;charset=UTF-8"%> は、応答のコンテンツ タイプが text/html であり、使用される文字セットが UTF-8 であることを示します。
JSP の page ディレクティブの一般的な使用法: import ステートメント、ガイド パッケージ。
<%@page import="java.util.List, java.util.Date, java.util.ArrayList" %>
<%@page import="java.util.*" %>
では、JSPでJavaプログラムを書く方法
-
<% Java ステートメント; %>
-
この記号で書かれているものはJavaプログラムとみなされ、Servletクラスのサービスメソッドに変換されます。
-
ここで注意しなければならないのは、Java コードを <% %> 記号で記述する場合は、「メソッド本体」にコードを記述していること、メソッド本体に記述できることを常に覚えておく必要があることです。いいえ あなたは何を書くことができますか、あなたはそれをあなたの心の中で理解していますか?
-
サービス メソッドに記述されたコードはシーケンシャルであり、メソッド本体のコードは上から順に 1 行ずつ実行する必要があります。
-
サービス メソッドでは、静的コード ブロックやメソッドを記述したり、メンバー変数を定義したりすることはできません。. . . . .
-
<%%> 記号は、同じ JSP 内で複数回使用できます。
-
-
<%! %>
-
この記号で記述された Java プログラムは、サービス メソッドの外側で自動的に変換されます。
-
この構文はめったに使用されません。なぜですか? JSP はサーブレットであり、サーブレットはシングルトンであるため、静的変数とインスタンス変数をサービス メソッドの外側に記述すると、スレッド セーフの問題が発生するため、使用はお勧めしません。およびインスタンス変数が変更されると、必然的にスレッド セーフの問題が発生します。
-
java変数をブラウザに出力する方法。
<% String name = “jack”; out.write("name = " + name); %>
-
注: 上記のコードの out は、JSP の 9 つの組み込みオブジェクトの 1 つです。直接使用できます。もちろん、サービス メソッド内でのみ使用する必要があります。
-
例えば、ブラウザに出力するコンテンツに「javaコード」がない場合、出力文字列は固定文字列で、ここで<%%>に書かずに直接jspで記述できます。
-
出力に「Java コード」が含まれている場合、現時点では次の構文形式を使用できます。
-
<%= %> 注: =の後に出力する内容を記述します。
-
<%= %> 記号はどこで翻訳されますか? 結局何に訳されたの?
-
この Java コードに変換されます: out.print();
-
サービスメソッドに変換されます。
-
-
<%=%> 出力をいつ使用するか? 出力コンテンツには Java 変数が含まれており、出力コンテンツは動的コンテンツであり、無効な文字列ではありません。出力が固定文字列の場合は、JSP ファイルに直接書き込むことができます。
-
JSP で JSP の専門的なコメントを記述する方法
-
<% -- JSP プロフェッショナル コメントは、Java ソース コードに変換されません。--%>
-
<!-- この種のコメントは HTML コメントに属し、このコメント情報は引き続き Java ソース コードに変換されますが、これはお勧めできません。-->
JSP の 9 つの組み込みオブジェクト
- jakarta.servlet.jsp.PageContext pageContext ページ スコープ
- jakarta.servlet.http.HttpServletRequest リクエスト リクエスト スコープ
- jakarta.servlet.http.HttpSession セッション セッション スコープ
- jakarta.servlet.ServletContext アプリケーション アプリケーション スコープ
上記の 4 つはすべてドメイン オブジェクトであり、スコープは小さいものから大きいものまであります: pageContext < request < session < application
上記の 4 つのスコープには、setAttribute、getAttribute、removeAttribute メソッドがあります。
上記のスコープを使用する原則: できるだけ小さなドメインを使用します。
- java.lang.Throwable 例外
- jakarta.servlet.ServletConfig 構成
- java.lang.Object ページ (実際にはこれ、現在のサーブレット オブジェクト)
- jakarta.servlet.jsp.JspWriter out (出力担当)
- jakarta.servlet.http.HttpServletResponse レスポンス(レスポンス担当)