サーブレットノート-JSP、EL式、JSTLタグ

JSP

JavaServerページ


サーバー側で実行されているHTML + javaコードに相当する特別なページは、実際にはページではありません。Tomcatで、url-patternを* .jspとして処理するように要求されます。対応するjspファイルが見つかります。jspファイルはサーブレットクラスに変換されます。、このサーブレットでデータを処理し、データとhtmlのアセンブリを完了し、最後にアセンブルされた静的HTMLページをブラウザに返します。

書き込みを簡素化するために使用

JSPスクリプト

  1. <%code%>:サーブレットのserviceメソッドに最終的に表示されます。serviceメソッドで実行できるコード、ここに記述できるコード
  2. <%!code%>:サーブレットで最後にメンバー変数が定義される位置
  3. <%= code%>:outputステートメントと同等で、コード内の式をページに出力します

JSP組み込みオブジェクト(合計9)

変数名 実数型 効果
pageContext PageContext 現在のページでデータを共有すると、他に8つのオブジェクトを取得できます
リクエスト HttpServletRequest リクエスト
セッション HttpSession セッションのセッション
応用 ServletContext 現在のWebアプリケーションのコンテキスト
応答 HttpServletResponse リクエストの応答
ページ Object(this) 現在のサーブレットオブジェクト
アウト JspWriter 出力ストリームオブジェクト
例外 スロー可能 異常な

out:ページを出力できる文字出力ストリーム。response.getWriter()に似ています

  1. response.getWriter()は、定義されている場所に関係なく、outの前に出力します。これは、tomcatが最初に応答バッファーを検索し、次にjsp組み込みオブジェクトのoutバッファーを検索するためです。したがって、応答バッファ内のデータは常に出力される前に出力されます
  2. したがって、JSPページでは、可能な限り使用し、一貫して出力します

JSP命令

<%@ 指令名称 属性1=值1 属性2=值2 ...%>

3種類あります

  1. ページ:JSPページの構成に使用されます
    1. contentType:response.setContentTypeと同等
    2. インポート:Javaパッケージをインポートします
    3. errorPage:Javaコードの現在のjsp実行が異常になった後にジャンプするページ
    4. isErrorPage:現在のjspページがエラーページであるかどうかを識別します
      1. true:組み込みオブジェクトの例外を使用できます
      2. false:デフォルト値。組み込みオブジェクトの例外は使用できません。
  2. include:他のjspページを含めるために使用されます
  3. taglib:JSTLタグライブラリおよびその他のリソースをインポートします

EL式

  1. 定義:表現言語

  2. 役割:JSPページでのJavaコードの記述を置き換えて簡素化します

  3. 文法:${EL表达式}

  4. 注意

    1. JSPはデフォルトでEL式をサポートします

    2. EL式を解析したくない場合は、JSPファイルのヘッダーに追加できます。

      <%@ page isELIgnored="true" %>
      

      このようにして、ページ全体のEL式が文字列として表示されます

      EL式の前に円記号を追加して、単一のEL式を無視することもできます。

      \${4 > 3}
      
  5. EL式の使用

    1. 計算を行う

      1. 算術演算子:+ - * / mod

      2. 比較演算子: > < >= <= == !=

      3. 論理演算子:&& || !またはand or not

      4. ヌル演算子: empty

        null演算子。主に、文字列、コレクション、配列がnullで、長さが0かどうかを判断するために使用されます。

        ${empty list} 判定ドメインのlistという名前のプロパティがnullまたはそのサイズが0の場合、式はtrueです。

        ${not empty list} nullでないか、長さが0より大きいかを判別します

      1. EL式はドメインオブジェクトからのみ値を取得できます(JSPの組み込みオブジェクトでは、4つのオブジェクトのみがドメインオブジェクトです)

      2. 文法

        1. ${域名称.键名} 指定されたドメインオブジェクトからキー値を取得します

          1. ドメイン名

            1. pageScope-> pageContext
            2. requestScope->リクエスト
            3. sessionScope->セッション
            4. applicationScope-> application
          2. 例:name = zhangsanはリクエストフィールドに保存されます

            その後${requestScope.name}、zhangsanを取得できます。EL式が値を取得しない場合、それは空の文字列になります

        2. ${键名} :デフォルトでは、範囲が最小のドメインオブジェクトで、キーに対応する値が見つかるまで順番に検索されます。

          異なるドメインオブジェクトに保存されているキー名が異なる場合は、ドメイン名を指定せずに記述を簡略化できます

      3. オブジェクトのプロパティ値を取得します

        ${域名称.键名.属性名} ->基本的にオブジェクトの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}
        
      4. リストの値を取得します

        ${域名称.键名[索引]}

      5. マップで値を取得します

        ${域名称.键名.key名称}

        ${域名称.键名.["key名称"]}

    2. EL式の暗黙のオブジェクト

      JSPの組み込みオブジェクトと同様に、合計11個、学習するだけです1

      1. pageContext

        JSPのpageContextと同様に、JSPの他の8つのオブジェクトを直接取得できます。

        ${pageContext.request.contextPath}プロジェクトの仮想ディレクトリを取得できます。仮想ディレクトリを動的に取得します。

        リダイレクトとは、クライアントがリクエストを再開できるようにすることなので、仮想ディレクトリを追加することを忘れないでください。転送はサーバー側で実行され、すでにプロジェクトのコンテキスト内にあり、現在のディレクトリはすでに仮想ディレクトリであるため、仮想ディレクトリを設定する必要はありません。

JSTL

  1. コンセプト:JavaServerPageタグライブラリJSP標準タグライブラリ

    • これは、apache組織によって提供されるオープンソースの無料のjspタグです。
  2. 役割:jspページのJavaコードを簡略化および置換するために使用されます

  3. 使用手順:

    1. JSTL関連のjarパッケージをインポートする

    2. タグライブラリの導入:taglib命令を使用する

      <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
      
    3. ラベルを使用する

  4. 一般的に使用されるJSTLタグ

    1. if:javaifステートメントと同等

      属性:

      • テスト:必須属性、ブール式の受信(通常はEL式と組み合わせて)

        式がtrueの場合、タグ本体の内容を表示します

        <c:if test="${not empty list}">
            开始遍历...
        </c:if>
        

        タグがelseに対応していない場合、elseを実装する場合は、別のifを記述する必要があることに注意してください。

    2. 選択:Javaのswitchステートメントと同等

      選択

      いつ

      そうでなければ

    3. foreach:javaforループと同等

      属性

      • 開始値を開始
      • 終了終了値
      • var一時変数
      • ステップ
      • varStatus status、現在の反復位置を取得できます

おすすめ

転載: blog.csdn.net/vcj1009784814/article/details/106084589