JSP
JavaServerページ
サーバー側で実行されているHTML + javaコードに相当する特別なページは、実際にはページではありません。Tomcatで、url-patternを* .jspとして処理するように要求されます。対応するjspファイルが見つかります。jspファイルはサーブレットクラスに変換されます。、このサーブレットでデータを処理し、データとhtmlのアセンブリを完了し、最後にアセンブルされた静的HTMLページをブラウザに返します。
書き込みを簡素化するために使用
JSPスクリプト
- <%code%>:サーブレットのserviceメソッドに最終的に表示されます。serviceメソッドで実行できるコード、ここに記述できるコード
- <%!code%>:サーブレットで最後にメンバー変数が定義される位置
- <%= code%>:outputステートメントと同等で、コード内の式をページに出力します
JSP組み込みオブジェクト(合計9)
変数名 | 実数型 | 効果 |
---|---|---|
pageContext | PageContext | 現在のページでデータを共有すると、他に8つのオブジェクトを取得できます |
リクエスト | HttpServletRequest | リクエスト |
セッション | HttpSession | セッションのセッション |
応用 | ServletContext | 現在のWebアプリケーションのコンテキスト |
応答 | HttpServletResponse | リクエストの応答 |
ページ | Object(this) | 現在のサーブレットオブジェクト |
アウト | JspWriter | 出力ストリームオブジェクト |
例外 | スロー可能 | 異常な |
out:ページを出力できる文字出力ストリーム。response.getWriter()に似ています
- response.getWriter()は、定義されている場所に関係なく、outの前に出力します。これは、tomcatが最初に応答バッファーを検索し、次にjsp組み込みオブジェクトのoutバッファーを検索するためです。したがって、応答バッファ内のデータは常に出力される前に出力されます
- したがって、JSPページでは、可能な限り使用し、一貫して出力します
JSP命令
<%@ 指令名称 属性1=值1 属性2=值2 ...%>
3種類あります
- ページ:JSPページの構成に使用されます
- contentType:response.setContentTypeと同等
- インポート:Javaパッケージをインポートします
- errorPage:Javaコードの現在のjsp実行が異常になった後にジャンプするページ
- isErrorPage:現在のjspページがエラーページであるかどうかを識別します
- true:組み込みオブジェクトの例外を使用できます
- false:デフォルト値。組み込みオブジェクトの例外は使用できません。
- include:他のjspページを含めるために使用されます
- taglib:JSTLタグライブラリおよびその他のリソースをインポートします
EL式
-
定義:表現言語
-
役割:JSPページでのJavaコードの記述を置き換えて簡素化します
-
文法:
${EL表达式}
-
注意
-
JSPはデフォルトでEL式をサポートします
-
EL式を解析したくない場合は、JSPファイルのヘッダーに追加できます。
<%@ page isELIgnored="true" %>
このようにして、ページ全体のEL式が文字列として表示されます
EL式の前に円記号を追加して、単一のEL式を無視することもできます。
\${4 > 3}
-
-
EL式の使用
-
計算を行う
-
算術演算子:
+ - * / mod
-
比較演算子:
> < >= <= == !=
-
論理演算子:
&& || !
またはand or not
-
ヌル演算子:
empty
null演算子。主に、文字列、コレクション、配列がnullで、長さが0かどうかを判断するために使用されます。
${empty list}
判定ドメインのlistという名前のプロパティがnullまたはそのサイズが0の場合、式はtrueです。${not empty list}
nullでないか、長さが0より大きいかを判別します
-
-
値
-
EL式はドメインオブジェクトからのみ値を取得できます(JSPの組み込みオブジェクトでは、4つのオブジェクトのみがドメインオブジェクトです)
-
文法
-
${域名称.键名}
指定されたドメインオブジェクトからキー値を取得します-
ドメイン名
- pageScope-> pageContext
- requestScope->リクエスト
- sessionScope->セッション
- applicationScope-> application
-
例:name = zhangsanはリクエストフィールドに保存されます
その後
${requestScope.name}
、zhangsanを取得できます。EL式が値を取得しない場合、それは空の文字列になります
-
-
${键名}
:デフォルトでは、範囲が最小のドメインオブジェクトで、キーに対応する値が見つかるまで順番に検索されます。異なるドメインオブジェクトに保存されているキー名が異なる場合は、ドメイン名を指定せずに記述を簡略化できます
-
-
オブジェクトのプロパティ値を取得します
${域名称.键名.属性名}
->基本的にオブジェクトのgetterメソッドを呼び出す<% User user = new User(); user.setName("yogurt"); user.setAge(23); user.setBirthday(new Date()); request.setAttribute("user",user); %> <h3> 获取对象中的属性值 <!-- 同归对象的属性来获取 getter方法,去掉get,将剩余部分首字母变小写,就可以,类似于BeanUtils对类设置属性时的机制,它找的是set/get方法 --> </h3> ${user.name} ${user.age}
-
リストの値を取得します
${域名称.键名[索引]}
-
マップで値を取得します
${域名称.键名.key名称}
${域名称.键名.["key名称"]}
-
-
EL式の暗黙のオブジェクト
JSPの組み込みオブジェクトと同様に、合計11個、学習するだけです1
-
pageContext
JSPのpageContextと同様に、JSPの他の8つのオブジェクトを直接取得できます。
${pageContext.request.contextPath}
プロジェクトの仮想ディレクトリを取得できます。仮想ディレクトリを動的に取得します。リダイレクトとは、クライアントがリクエストを再開できるようにすることなので、仮想ディレクトリを追加することを忘れないでください。転送はサーバー側で実行され、すでにプロジェクトのコンテキスト内にあり、現在のディレクトリはすでに仮想ディレクトリであるため、仮想ディレクトリを設定する必要はありません。
-
-
JSTL
-
コンセプト:JavaServerPageタグライブラリJSP標準タグライブラリ
- これは、apache組織によって提供されるオープンソースの無料のjspタグです。
-
役割:jspページのJavaコードを簡略化および置換するために使用されます
-
使用手順:
-
JSTL関連のjarパッケージをインポートする
-
タグライブラリの導入:taglib命令を使用する
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
-
ラベルを使用する
-
-
一般的に使用されるJSTLタグ
-
if:javaifステートメントと同等
属性:
-
テスト:必須属性、ブール式の受信(通常はEL式と組み合わせて)
式がtrueの場合、タグ本体の内容を表示します
<c:if test="${not empty list}"> 开始遍历... </c:if>
タグがelseに対応していない場合、elseを実装する場合は、別のifを記述する必要があることに注意してください。
-
-
選択:Javaのswitchステートメントと同等
選択
いつ
そうでなければ
-
foreach:javaforループと同等
属性
- 開始値を開始
- 終了終了値
- var一時変数
- ステップ
- varStatus status、現在の反復位置を取得できます
-