JSPの表現言語(EL)を覚えていますか?

3281 ワード

1.式言語の構文
EL式は${で始まり、}で終わる.EL式の構造は以下の通りである:${expression}例えば、式x+yは、${x+y}と書くことができ、2つの式を接続するためにもよく用いられる.一連の式の場合、それらの値は左から右に行われ、計算結果のタイプはStringであり、接続されます.a+bの添加は8に等しく、c+dは10に等しく、この2つの式の計算結果は810:${a+b}${c+d}式${a+b}and${c+d}の値の結果は8 and 10になる.(2)[]と.演算子EL式は、任意のタイプの値を返すことができる.EL式の結果が属性を持つオブジェクトである場合、[]または.演算子を使用して属性にアクセスします.「[]」と「.」演算子は似ています:「[]」は比較仕様の形式で、「.」演算子は比較的速いです.オブジェクトのプロパティにアクセスするには、${object[[propertyName]}${object.propertyName}のいずれかの形式を使用します.ただし、propertyNameが有効なJava変数名でない場合は[]演算子のみが使用できます.たとえば、以下のEL式は、暗黙的オブジェクトタイトルのHTTPタイトルhost:${header["host"]}${header.host}にアクセスするために使用できますが、accept-languageタイトルにアクセスするには[]演算子しか使用できません.accept-languageは合法的なJava変数名ではないからです.「.」を使うと演算子がアクセスすると、例外が発生します.オブジェクトのプロパティがたまたまプロパティを持つ別のオブジェクトを返す場合は、[]、または[.]を使用できます.演算子は、2番目のオブジェクトのプロパティにアクセスします.(3)JavaBean利用にアクセスする"."または[]演算子は、beanのプロパティにアクセスできます.たとえば、myBeanのsecretプロパティにアクセスするには、${myBean.secret}プロパティがプロパティ付きオブジェクトである場合にも使用できます.または[]演算子を使用して、2番目のオブジェクトのプロパティにアクセスします.属性がMap、Listまたはarrayの場合、Map値またはListメンバーまたはarray要素にアクセスするのと同じルールを使用できます.
2.EL暗黙オブジェクト
JSPページでは、JSPスクリプトを使用してJSP暗黙オブジェクトにアクセスできます.ただし、スクリプトフリーのJSPページでは、これらの暗黙的なオブジェクトにアクセスすることはできません.ELでは、独自の暗黙的なオブジェクトのセットを使用して、異なるオブジェクトにアクセスできます.(1)pageContext pageContextオブジェクトは、現在のJSPページのjavaxを表す.servlet.jsp.PageContext.他のすべてのJSP暗黙オブジェクトが含まれています.request、response、Out、session、アプリケーション、config、PageContext、page、exceptionなどです.たとえば、現在のサーブレットリクエスト:$[pageContext.request]$[pageContext[[request](2)initParam暗黙オブジェクトinitParamコンテキストパラメータの値を取得するには、任意の式を使用します.たとえば、passwordというコンテキストパラメータ値を取得するには、要求パラメータ値を取得するために${initParam.password}または${initParam["password"}(3)param暗黙オブジェクトparamを使用します.このオブジェクトは、すべての要求パラメータを含むMapを表します.たとえば、userNameパラメータを取得するには、${param.userName}${param["userName"}(4)paramValues暗黙オブジェクトparamValuesを使用して、要求パラメータの複数の値を取得できます.このオブジェクトは、すべての要求パラメータを含み、パラメータ名をkeyとするMapを表します.各keyの値は、指定したパラメータ名のすべての値を含む文字列配列です.パラメータに値が1つしかない場合でも、要素が1つある配列を返します.たとえば、selectedOptionsパラメータの最初の値と2番目の値を取得するには、$[paramValues.selectedOptions[0]}${paramValues.selectedOptions[1]}(5)cookie暗黙オブジェクトcookieを使用してcookieを取得できます.このオブジェクトは、現在のHttpServertRequestのすべてのクッキーの値を表します.たとえば、jsessionidという名前のクッキー値を取得するには、${cookie.jsessionid.value}jessionidクッキーのパス値を取得するには、${cookie.jsessionid.path}(6)header暗黙オブジェクトheaderを使用して、すべてのリクエストタイトルを含むMapを表します.ヘッダ値を取得するには、ヘッダ名をkeyとして使用します.たとえば、accept-languageというヘッダ値を取得するには、${header["accept-language"]}暗黙オブジェクトheaderValuesは、すべてのリクエストヘッダを含み、ヘッダ名をkeyとするMapを表す式を使用します.ただし、headとは異なり、暗黙オブジェクトheaderValuesが返すMapは文字列配列を返します.たとえば、タイトルaccept-languageの最初の値を取得するには、次の式を使用します.
${headerValues["accept-language" ][0]}

(7)アプリケーションスコープ、sessionScope、requestScope、pageScope暗黙オブジェクトアプリケーションスコープの値を取得する.アプリケーション範囲レベルの変数myVarを追加すると、${アプリケーションスコープ.myVar}という式を使用してこの属性を取得できます.servlet/JSPプログラミングでは、PageContext、サーブレットRequest、HttpSession、またはサーブレットContextのようなオブジェクトが境界オブジェクトとして使用されます.暗黙オブジェクトsessionScope、requestScope、pageScopeはアプリケーションScopeと似ています.ただし、その範囲はsession、request、pageである.