EL式
EL式のフルネームは次のとおりです。式言語
。表現言語です。
EL式の機能は何ですか。EL式は主にjspページの式スクリプトを置き換えて、jspページにデータを出力します。
EL式は、データを出力するときにjsp式スクリプトよりもはるかに簡潔であるためです。
EL式の形式は次のとおりです。$ {expression}
EL式がnull値を出力する場合、出力は空の文字列になります。jsp式スクリプトがnull値を出力する場合、出力はnull文字列になります。
<body>
<%
request.setAttribute("key1","value1");
%>
表达式脚本输出key的值是:<%=request.getAttribute("key")==null?"":request.getAttribute("key1")%>
<br/>
EL表达式输出Key的值是:${key}
</body>
ページの結果:
ドメインデータのEL式検索順序
EL式は、主にjspページにデータを出力するためのものです。
主にドメインオブジェクト(アプリケーション、セッション、リクエスト、ページコンテンツ)のデータを出力します。
4つのフィールドが同じキーデータを持っている場合、EL式は4つのフィールドの順に小さいものから大きいものへと検索し、見つかったときに出力します。
<body>
<%-- 往四个对象域中都保存了相同的key的数据--%>
<% application.setAttribute("key", "application");%>
<% session.setAttribute("key", "session");%>
<% pageContext.setAttribute("key", "pageContext");%>
<% request.setAttribute("key", "request");%>
${key}
</body>
ページのスクリーンショット:
EL式は、Beanの共通属性と配列属性を出力します。リストセット
結合された属性、マップコレクション属性
要件-Personクラスの通常の属性と配列属性を出力します。コレクション属性とマップコレクション属性を一覧表示します。
個人クラス:
public class Person {
private String name;
private String[] phones;
private List<String> cities;
private Map<String, Object> map;
@Override
public String toString() {
return "Person{" +
"name='" + name + '\'' +
", phones=" + Arrays.toString(phones) +
", cities=" + cities +
", map=" + map +
'}';
}
public void setPhones(String[] phones) {
this.phones = phones;
}
public void setCities(List<String> cities) {
this.cities = cities;
}
public void setMap(Map<String, Object> map) {
this.map = map;
}
public void setName(String name) {
this.name = name;
}
public String getName() {
return name;
}
public String[] getPhones() {
return phones;
}
public List<String> getCities() {
return cities;
}
public Map<String, Object> getMap() {
return map;
}
}
jspコード
<body>
<%Person person=new Person();
person.setName("joy");
person.setPhones(new String[]{"18302000211","123212312341"});
List<String> cities = new ArrayList<>();
cities.add("北京");
cities.add("上海");
cities.add("南京");
person.setCities(cities);
Map<String,Object> maps=new HashMap<>();
maps.put("key1","value1");
maps.put("key2","value2");
maps.put("key3","value3");
person.setMap(maps);
pageContext.setAttribute("p",person);
%>
输出Person: ${ p}<br/>
输出Person的name属性:${p.name}<br/>
输出Person的phone数值属性值:${ p.phones[0]}<br/>
输出Person的cities集合中的元素值:${p.cities.get(0)}<br/>
输出Person的map集合中的元素值:${p.map.get("key1")}<br/>
输出Person的map集合中的元素值:${p.map.key2}<br/>
</body>
</html>
演算結果:
EL式-操作
構文:$ {演算式}、EL式は次の演算子をサポートします。
関係演算
関係演算子 | 説明 | 例 | 結果 |
---|---|---|---|
==またはeq | 等しい | $ {5 == 5} | true |
!=またはne | 等しくない | $ {5!= 5} | false |
<またはIt | 未満 | $ {3 <5} | true |
>またはgt | 以上 | $ {2> 10} | false |
<=またはle | 以下 | $ {5 <= 12} | true |
> =またはge | 以上以上 | $ {3> = 5} | false |
論理演算
算術演算
空の操作空の操作は、データが空であるかどうかを判断できます。データが空の場合はtrueを出力し、空でない場合はfalseを出力します。
次の状況は空です
。1。値がnull値の場合は空です
。2。値が空の文字列の場合は空です。3
。長さがゼロの場合は値はオブジェクト型配列です
。4。リストコレクション、要素数ゼロ
5.マップコレクション、要素数ゼロ
三項演算
式1?式2:式3
式1の値がtrueの場合、式2の値を返します。式1の値がfalseの場合、式3の値を返します。
「。」ドット演算と[]角かっこ演算子
。ポイント操作では、Beanオブジェクトの属性の値を出力できます。
[]ブラケット操作は、順序集合内の要素の値を出力できます。
また、[]ブラケット操作では、マップセットのキーに特殊文字を含むキーの値を出力することもできます。
EL式の11の隠されたオブジェクト
EL式の11個の暗黙オブジェクトは、EL式でそれ自体で定義され、直接使用できます。
変数 | の種類 | 効果 |
---|---|---|
pageContext | PageContextImpl | jspで9つの組み込みオブジェクトを取得できます |
pageScope | Map <String、Object> | pageContextドメインのデータを取得できます |
requestScope | Map <String、Object> | リクエストフィールドのデータを取得できます |
sessionScope | Map <String、Object> | セッションフィールドのデータを取得できます |
applicationScope | Map <String、Object> | ServletContextドメインのデータを取得できます |
パラメータ | Map <String、String> | リクエストパラメータの値を取得できます |
paramValues | Map <String、String []> | また、リクエストパラメータの値を取得して、複数の値を取得するときに使用することもできます。 |
ヘッダ | Map <String、String> | リクエストヘッダーの情報を取得できます |
headerValues | Map <String、String []> | リクエストヘッダーの情報を取得でき、複数の値を取得できます |
クッキー | Map <String、Cookie> | 現在のリクエストのCookie情報を取得できます |
initParam | Map <String、String> | web.xmlで設定されたコンテキストパラメータを取得できます |
ELは4つの特定のドメインで属性を取得します
pageScope ———— "pageContext domain
requestScope ————" Request domain
sessionScope ———— "Session domain
applicationScope ————" ServletContext domain
Codeスクリーンショット:
実行スクリーンショット:
pageContextオブジェクトの使用
1. Webページで使用されるプロトコルを
取得します。2。サーバーIPを取得します。3。
サーバーポートを取得します
。4。プロジェクトパスを
取得します。5。リクエストメソッドを
取得します。6。クライアントIPアドレスを取得します
。セッションのID番号:
## ### EL式の他の暗黙的なオブジェクトの使用
paramMap
<String、String>
リクエストパラメータの値を取得できます
paramValues
Map <String、String []>
値も取得できます複数の値を取得する場合は、リクエストパラメータのを使用します。
paramValues
Map <String、String []>
複数の値を取得するときに使用されるリクエストパラメータの値を取得することもできます。
ヘッダー
Map <String、String>
リクエストヘッダーの情報を取得できます
headerValues
Map <String、String []>
リクエストヘッダーの情報を取得でき、複数の値を取得できます
リクエストアドレス:
http:// localhost:8080 / _EL_JSTL / other_el_obj.jsp?name = joy&password = 123456&hobby = java&hobby = python
initParam
Map <String、String> web.xmlで
構成されたコンテキストパラメーター
web.xmlの構成を取得できます
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
version="4.0">
<context-param>
<param-name>username</param-name>
<param-value>root</param-value>
</context-param>
<context-param>
<param-name>password</param-name>
<param-value>123456</param-value>
</context-param>
</web-app>
JSTLタグライブラリー(2番目に重要なポイント****)
JSTLタグライブラリのフルネームは、JSP標準タグライブラリを指し
ます。これは、絶えず改善されているオープンソースのJSP
ラベルライブラリです。
EL式は主にjspの式スクリプトを置き換えるためのものであり、タグライブラリはコードスクリプトを置き換えるためのものです。これにより、jspページ全体が
より良く簡潔になり
ます。jspタグライブラリのtaglib命令を使用して、タグライブラリ
COREタグライブラリを導入します
<%@ taglib prefix =“ c” uri =“ http://java.sun.com/ jsp / jstl / core "%>
XMLタグライブラリ
<%@ taglib prefix =" x "uri =" http://java.sun.com/jsp/jstl/xml "%>
FMTタグライブラリ
<%@ taglib prefix = "fmt" uri = "http://java.sun.com/jsp/jstl/fmt"%>
SQLタグライブラリ
<%@ taglib prefix = "sql" uri = "http://java.sun.com/jsp / jstl / sql”%>
FUNCTIONSタグライブラリ
<%@ taglib prefix =“ fn” uri =“ http://java.sun.com/jsp/jstl/functions”%>
JSTLタグライブラリを使用する手順
1.まず、jstlタグライブラリのjarパッケージをインポートします。
2. 2番目のステップでは、taglib命令を使用してタグライブラリを導入します。
コアコアライブラリの使用
。<c:set />(めったに使用されません)
役割:setタグはデータをフィールドに保存できます
<c:if />
ifタグはif判定を行うために使用され
ます。<c:choose> <c:when> <c:otherwise>タグ
機能:多方向判定。switch…case…defaultに非常に近いです。
選択ラベルの選択を開始して
、ラベルが各ケースを示す時期を決定します。test
属性は現在のケースの値を示します。
それ以外の場合、ラベルは残りのケースを示します。
<c:choose> <c:when> <c:otherwise>タグを使用する際の注意点:
1。HTMLアノテーションはタグで使用できませんが、jspアノテーションを使用する必要があります。2。whenタグ
の親タグはchooseタグである必要があります。
<c:forEach />
機能:出力の使用をトラバースします。
2.オブジェクト配列をトラバースします
- マップコレクションをトラバースします
リストコレクションをトラバースする
forEachのプロパティ
varStatusクラスのメソッド:
サンプルコード:
出力結果: