ELのフルネームは式言語(式言語)です。これは、JSP2.0の最も重要な機能の1つです。 EL式を使用して、アプリケーション内のデータにアクセスして、JSPページのJavaスクリプトを排除できます。
EL式の構文
たとえば、x+yは{x+y}として書くことができます
ELのキーワード
以下はELのキーワードであり、識別子として使用できません。
そして、eq、gt、true、instanceof、または、le、false、empty、not、lt、ge、null、div、mod
1。EL式の紹介
エルのフルネームは表現言語です。エルの主な機能:
1.データを取得します
EL式は、主にJSPページのスクリプト式を置き換えて、Javaオブジェクトを取得し、さまざまなタイプのWebドメインからデータを取得するために使用されます。 (特定のWebドメインのオブジェクト、アクセスJavabeanプロパティ、アクセスリストコレクション、アクセスマップコレクション、アクセス配列)
2。操作を実行します
EL式を使用して、JSPページでいくつかの基本的なリレーショナル操作、論理操作、算術演算を実行して、JSPページで簡単な論理操作を完了できます。 $ {user == null}
3. Web開発のための一般的なオブジェクトを取得します
EL式は、いくつかの暗黙のオブジェクトを定義します。これらの暗黙のオブジェクトを使用して、Web開発者は一般的に使用されるWebオブジェクトへの参照を簡単に取得でき、これらのオブジェクトのデータを取得できます。
4。Javaメソッドを呼び出します
EL式を使用すると、ユーザーはJSPページのEL表現を介してJavaクラスのメソッドを呼び出すためにカスタムEL関数を開発できます。
1.1。データを取得します
EL式を使用してデータ構文を取得します: "$ {識別子}"
EL Expressionステートメントが実行されると、pageContext.findattributeメソッドが呼び出され、識別子をキーワードとして使用して、ページ、リクエスト、セッション、およびアプリケーションの4つのフィールドから対応するオブジェクトを見つけます。見つかった場合、対応するオブジェクトを返します。発見されていない場合は、「」を返します(nullではなく、空の文字列であることに注意してください)。
EL式は、Javabeanプロパティを簡単に取得したり、配列、コレクション、マップタイプのデータを取得したりできます。
データを取得するためのEL式の例:
<%@ページ言語= "java" import = "java.util。*" pageencoding = "utf-"%> <%@aglib uri = "http://java.sun.com/jsp/jstl/core" freix = "c"%> <%@ページインポート= "me.gacl.domain.domain"%> <%@page import = "me.gacl.domain.address"%> <!doctype html> <html> <head> <title> el expression gets data </title> </head> <body> <%request.setattribute( "name"、 "Lonely Wolf");%> <%{name}はemplibutiontを使用します。データ:$ {name} <hr> <! - jsp pageで、el式を使用して豆の属性を取得します - > <%person p = new person(); p.setage(); request.setattribute( "person"、p);%> eL式を使用して豆の属性を取得します:$ {person.age。 。 。 。 。 。 。 。 。属性 - > <%person person = new person(); address address = new address(); person.setAddress(address.setattribute( "person"、person);%> $ {person.address.name} <hr> <! - jspページで、EL式を使用して、指定された人物のデータを取得します。 canglang "); person p = new person(); p.setname(" white tiger god emperor "); list <surnaylist <person>(); list.add(p); list.add(p); request.setattribute(" list "、list"、list "、list);%collect of list collect-fid <] var = "person" items = "$ {list}"> $ {person.name} </c:foreach> <hr> <! - jspページで、EL式を使用してマップコレクションのデータを取得します - > <%マップ<文字列、文字列>マップ= new = new linkedhashmap <string、string>(); map.put( "a"、 "aaaaxxx"); map.put( "b"、 "bbbb"); map.put( "c"、 "cccc"); map.put( "" "、" aaaa "); request.setattribute(" map "、mapの基に基づいたマップ! - > $ {map.c} $ {map [""]} <hr> <! - iterate map collection-> <c:foreach var = "me" items = "$ {me.key} = $ {me.value} <br/> </c:foreach> <hr> </html>操作効果は次のとおりです。
1.2。操作を実行します
構文:$ {操作式}、EL式は次の演算子をサポートします。
1。リレーショナル演算子
2。論理演算子:
3。空の演算子:オブジェクトがnull(空)であるかどうかを確認します
4。バイナリ式:$ {user!= null?user.name: ""}
5。[] and。オペレーター
EL式を使用した操作を実行する例:
<%@page Language = "Java" Import = "Java.util。*" PageEncoding = "utf-"%> <%@aglib uri = "http://java.sun.com/jsp/jstl/core" freix = "c"%> <%@ページインポート= "me.gacl.domain" html> <html> <head> <title> el expression演算子</title> </head> <body> <hh expressionは4つの操作を実行します:</h>追加操作:$ {+} <br/>縮小操作:$ { - } <br/>複数操作:$ {*} <br/>操作:</h> <% - $ {user == null}および$ {user eq null}; Equivalent-%> $ {user == null} <br/> $ {user eq null} <br/> $ {user eq null} <br/> el expressionは空の演算子を使用して、オブジェクトがnull(empty)</h> <%list <string> list = new ArrayList <String>(); list.add( "gacl"); list.add( "xdp"); request.setattribute( "list"、list);%> <% - オブジェクトがnull(空)かどうかを確認するために空の演算子を使用します - %> <c:test = "$ {$ {$ {list)}"項目= "$ {list}"> $ $ {str} <br/> </c:foreach> </c:if> <br />%list <string> emattylist = null;%> <% - 空のオペレーターを使用して、オブジェクトがnull(空)かどうかを確認します - %> <c:test = "$ {emattyrist)}" </c:if> <br/> <h>バイナリ式がEL式で使用されています</h> <%session.setattribute( "user"、new user( "Lonely Ganglang"));%> $ {user == null? 「申し訳ありませんが、ログインしていません」:user.username} <br/> <h> el expression data echo </h> <%user user = new user(); user.setgender( "male"); // data echo request.setattribute( "user"、user "、user";%> <inputタイプ= "ラジオ" $ {user.gender == 'male'? 'checked': ''}> male <input type = "radio" name "value =" femaly "$ {user.gender = 'female'? 'checked'}> </body> </html>操作結果は次のとおりです。
1.3。 Web開発のための一般的なオブジェクトを取得します
EL式言語は、11の暗黙的なオブジェクトを定義します。これらの暗黙的なオブジェクトを使用すると、Web開発でいくつかの一般的なオブジェクトを簡単に取得し、これらのオブジェクトのデータを読み取ることができます。
構文:$ {暗黙のオブジェクト名}:オブジェクトへの参照を取得します
EL式で11の暗黙のオブジェクトをテストします:
<%@ page Language = "Java" Import = "Java.util。*" PageEncoding = "utf - "%> <!doctype html> <html> <head> <title> el Implicit object</title></head><body><br/>--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- //map%>${pageScope.name}<br/>--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- //map%>${sessionScope.user}<br/>------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------この式は、データエコーでよく使用されます - > <form action = "$ {pagecontext.contextpath}/servlet/registerservlet" methed = "apt"> <input type = "text" name = "username" value = "$ {param.username}"> <入力タイプ= " value="register"></form><br/>---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- http:// localhost:/javaweb_el_study_/eldemo.jsp?like = aaa&like = bb - > $ {paramvalues.like []} $ {paramvalues.like []} <br/>---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- , for例のaccept-encoding、 headerValues["Accept-Encoding"]--%>${header["Accept-Encoding"]}<br/>-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------すべてのHTTP要求ヘッダーフィールドを保存するマップオブジェクト。要求パラメーターの場合、文字列[]配列を返します。例:headervalues.acceptは文字列[]配列を返します。 headervalues.accept []は、配列の最初の値を取り出します - %> $ {headervalues.accept []} <br/> <% - $ {headervalues.accept-encoding}この方法を書くと、ヘッドサービスをテストするときにエラーが報告されます。ヘッダーに「 - 」がある場合、Accept-Encoding、headervalues ["Accept-Encoding"] headervalues ["Accept-Encoding"] [] [] string []配列を返します。 headervalues ["Accept-Encoding"] [] []は、最初の値を取り出します array--%>${headerValues["Accept-Encoding"][]}<br/>------------------------------------------------------------------------------------------------------------------------------------------------------------- ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- - > $ {cookie.jsessionid.value} //すべてのマップを保存します cookies<br/>------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- web.xmlファイルで初期化パラメーターを構成します - > <context-param> <param-name> xxx </param-name> <param-value> yyyy </param-value> </context-param> <context-param> root-name> root> <param-value>/javaweb_el_study _ </param-balue> </culttunt-parm-parm-> <%> <%パラメーター - %> $ {initparam.xxx} <br/> $ {initparam.root} </body> </html> RegisterServletのコードは次のとおりです。
ge.gacl.web.controller; import java.io.ioexception; Import javax.servlet.servletexception; Import javax.servlet.http.httpservlet; Import.servlet.servlet.http.httpservletrequest; httpservlet {/**ユーザー登録を処理するための方法*/public void doget(httpservletrequest request、httpservletresponse応答)servletexception、ioexception {//、parameter string username = request.getparameter( "username"); request.setAttribute( "username"、username)request object*にユーザー名を保存するには、eldemo.jspページで、$ {param.username}を使用して、リクエストオブジェクトでユーザー名パラメーターの値を取得できます。 dopost(httpservletrequest request、httpservletresponse応答)servletexception、ioexception {doget(request、response);}}}テスト結果は次のとおりです。
知らせ:
ヘッダーとヘッドアーバルをテストするとき、ヘッダーに「 - 」がある場合、Accept-Encoding、Header ["Accept-Encoding"]およびHeadervalues ["Accept-Encoding"]など。
たとえば、Cookieをテストするとき、$ {cookie.key}はCookieオブジェクトを取ります。 Cookieの名前と値にアクセスする場合、$ {cookie.key.name}または$ {cookie.key.value}が必要です。
1.4。 ELを使用してJavaメソッドを呼び出します
EL Expression Syntaxを使用すると、開発者はJavaクラスのメソッドを呼び出すカスタム関数を開発できます。構文:$ {prefix:method(params)}
EL式で呼び出すことができる唯一のものは、Javaクラスの静的方法です。このJavaクラスの静的方法は、EL式で呼び出す前に、TLDファイルで説明する必要があります。
ELカスタム関数は、EL式の関数を拡張するために使用され、EL式が通常のJavaプログラムコードが完了できる機能を完了できるようにします。
1.5。 EL関数開発手順
一般的に言えば、ELカスタム関数の開発とアプリケーションには、次の3つのステップが含まれます。
1。Javaクラスの静的方法を書きます
2。タグライブラリ記述子(TLD)ファイルを書き込み、TLDファイルにカスタム関数を説明します。
3. JSPページでカスタム関数をインポートおよび使用します
例:HTMLタグをエスケープするためのEL関数の開発
1. HTMLエスケープ処理ツールのクラスを作成し、ツールクラスのHTMLタグをエスケープするための静的処理方法を追加します。
packeme.gacl.util;/*** @classname:htmlfilter* @description:html Escape Processing Tool class* @author:lonely canglang* @date: - morning ::*/public class htmlfilter {/*** @method:filter* @description:static Escapiant procession ** @Anthed ** @Antly Escape* @return Content After Escape*/ public Static String Filter(String Message){if(message == null)return(null); char content [] = new char [message.length()]; message.getChars(、message.length()、content、); stringbuffer result = new Stringbuffer(content.length+); '<':result.Append( "<"); break; case '>':result.append( ">"); break; case '&':result.append( "&"); case '"':result.append(" "); break; break:result.Append(content [i]);}} return(result(result [i]);}} return(result);}}}}}2。Web-INFディレクトリにタグライブラリ記述子(TLD)ファイルを書き込み、TLDファイルにカスタム関数を説明します。
elfunction.tldのコードは次のとおりです。
<?xmlバージョン= "。" encoding = "utf-"?> <taglib version = "。" xmlns = "http://java.sun.com/xml/ns/jee" xmlns:xsi = "http://www.w.org//xmlschema-instance web-jsptaglibrary __。xsd "> <tlib-version> - > <uri>/elfunction </uri> <! - <function>要素はELカスタム関数を説明するために使用されます - > <function> <説明> HTMLタグエスケープ処理方法</description> < - > <function-class> me.gacl.util.htmlfilter </function-class> <! - <function-signature>子要素は、Javaクラスの静的メソッドの署名を指定するために使用されます。メソッドの署名は、メソッドの返品値タイプと各パラメーターのタイプを示す必要があり、各パラメーターはコンマによって分離されます。 - > <function-signature> java.lang.stringフィルター(java.lang.string)</function-signature> </function> </taglib>
3. JSPページでカスタム関数をインポートおよび使用します
<%@ページ言語= "java" import = "java.util。*" pageencoding = "utf-"%> <% - ELカスタム機能ライブラリの紹介 - %> <%@@ elfunction "プレフィックス=" El-%> $ {fn:filter( "<a href = ''> diand </a>")} </body> </html>を使用した方法操作結果は次のとおりです。
1.6。 EL機能を開発するときに注意すべきこと
タグライブラリの説明ファイルを記述した後、<Webアプリケーション>/Web-INFディレクトリまたはWeb-INFディレクトリのクラスとLIBディレクトリ以外のサブディレクトリに配置する必要があります。
TLDファイルの<URI>要素は、TLDファイルを指定するURIを使用します。このURIは、JSPファイルにタグライブラリの説明ファイルを導入するために使用する必要があります。
<function>要素は、ELカスタム関数を説明するために使用されます。ここで
<name> child要素は、ELカスタム関数の名前を指定するために使用されます。
<function-class>子要素は、完全なJavaクラス名を指定するために使用されます。
<function-signature>子要素は、Javaクラスで静的メソッドの署名を指定するために使用されます。メソッドの署名は、メソッドの返品値タイプと各パラメーターのタイプを示す必要があり、各パラメーターはコンマによって分離されます。
1.7。 El Presecutions
EL式は、JSP 2.0仕様の手法です。したがって、EL式を正しく解析する場合は、Servlet2.4/JSP2.0テクノロジーをサポートするWebサーバーを使用する必要があります。
注:一部のTomcatサーバーでは、EL式を使用できません
(1)Tomcat6へのアップグレード
(2)<%@ page iselignored = "false"%>をJSPに追加します
1.8。 EL式はキーワードを保持します
いわゆる予約された単語は、変数を命名する場合、プログラムのコンピレーション中のエラーを回避するために上記の名前を避ける必要があることを意味します。 EL表現の内容については、非常に多くの要約があります。
上記のコンテンツは、例を介してJavaweb Elの表現に関する関連する知識の詳細な紹介を提供します。それがあなたに役立つことを願っています。同時に、wulin.comのウェブサイトへのご支援に感謝します!