JSTL


JSTLでは、条件文、重複文などをタグ形式で使用できます.ELと一緒に使うと、より強力になります.JSTLについて知ります.
JSTLとは?
  • JSP Standard Tag Library
  • JSPページでは、htmlタグで条件文処理、重複文処理などを記述できます.

  • JSTLが提供するタグタイプ
  • 最も重要なのはコアラベル機能
  • JSTL優先パラメータ
  • http://tomcat.apache.org/download-taglibs.cgi
  • 上のサイトから3つのjarファイルをダウンロードし、WEB-INF/lib/フォルダにコピーします.
  • 認識できない場合は、cmd + ;にライブラリを追加します.
  • コアラベル
  • 接頭辞c:です.
  • 論理フローのタグ付けに役立ちます.
  • URLコンテンツの読み取りと出力機能.
  • 変数サポートラベル-set,remove
  • scope格納/削除値.

  • 実習
  • JSTL.
    <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
  • <%@ page contentType="text/html;charset=UTF-8" language="java" %>
    <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
    <c:set var="value1" scope="request" value="kang"></c:set>
    <html>
    <head>
        <title>Title</title>
    </head>
    <body>: ${requestScope.value1} <br>
    <c:remove var="value1" scope="request"/> <!--단일태그 가능-->: ${requestScope.value1} <br>
    </body>
    </html>
    : kang
    성 :
  • removeは値を提供しません.
  • 変数サポートラベル-構成、マッピングの処理
  • Propertyって何?
  • getter setterメソッドは、オブジェクトの値または取得値を変更するために使用されます.
  • setタグは、パラメータを特定の方法に渡すこともできる.
  • 上記のラベルにより、以下の方法が実行される.
  • フロー制御ラベル-if
  • <c:if 조건>

  • 実習
    <%@ page contentType="text/html;charset=UTF-8" language="java" %>
    <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
    
    <%--<%--%>
    <%--    request.setAttribute("n", 10);--%>
    <%--%>--%>
    <c:set var="n" scope="request" value="10"/>
    <!-- 위에 둘 다 같은 코드이다-->
    
    <html>
    <head>
        <title>Title</title>
    </head>
    <body>
    <c:if test="${n == 0}">
        n과 0은 같습니다.
    </c:if>
    <c:if test="${n == 10}">
        n과 10은 같습니다.
    </c:if>
    </body>
    </html>
    n과 10은 같습니다.
  • 満たされた条件文のみを実行します.
  • フロー制御ラベル-choose
  • if-else構文に類似しています.
  • 実習
    <%@ page contentType="text/html;charset=UTF-8" language="java" %>
    <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
    
    <%
        request.setAttribute("score", 83);
    %>
    <html>
    <head>
        <title>Title</title>
    </head>
    <body>
    <c:choose>
        <c:when test="${90 <= score}">
            A학점입니다.
        </c:when>
        <c:when test="${80 <= score}">
            B학점입니다.
        </c:when>
        <c:when test="${70 <= score}">
            C학점입니다.
        </c:when>
        <c:when test="${60 <= score}">
            D학점입니다.
        </c:when>
        <c:otherwise>
            F학점입니다.
        </c:otherwise>
    
    </c:choose>
    </body>
    </html>
    B학점입니다
    フロー制御ラベル-forEach
  • 配列および集合に格納された要素を順番に抽出することができる.
  • for文は開始と終了を繰り返すことができる
  • itemsは[beginからend]の周りに変数varを入れます.
  • []-省略可能
  • 実習
    <%@ page contentType="text/html;charset=UTF-8" language="java" %>
    <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
    
    <%
        List<String> list = new ArrayList<>();
        list.add("hello");
        list.add("world");
        list.add("!!!!");
    
        request.setAttribute("list", list);
    %>
    <html>
    <head>
        <title>Title</title>
    </head>
    <body>
    <c:forEach items="${list}" begin="1" var="item">
        ${item}<br>
    </c:forEach>
    </body>
    </html>
    フロー制御ラベル-import
  • 特定のURLページの結果を取得し、変数に保存します.
  • タグは、URLの後ろにクエリー文を付けます.
  • 実習
    <%@ page contentType="text/html;charset=UTF-8" language="java" %>
    <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
    
    <c:import url="http://localhost:8080/firstweb_war/jstlValue.jsp" var="urlValue" scope="request"/>
    <c:import url="https://google.co.kr" var="google" scope="request"/>
    <html>
    <head>
        <title>Title</title>
    </head>
    <body>
    ${urlValue}
    ${google}
    </body>
    </html>
    フロー制御ラベル-redirect

    実習
    <%@ page contentType="text/html;charset=UTF-8" language="java" %>
    <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
    
    <c:redirect url="http://localhost:8080/firstweb_war/jstl05.jsp"/>
  • 表示ページをリフレッシュします.
  • その他のラベル-out
  • 特定の文字列を出力できます.
  • value:実際のライタに出力する値(文字列)
  • escapeXml:デフォルトtrue
  • default:valueが存在しない場合にデフォルトを指定
  • <%@ page contentType="text/html;charset=UTF-8" language="java" %>
    <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
    
    <html>
    <head>
        <title>Title</title>
    </head>
    <body>
    <c:set var="t" value="<script type='text/javascript'>alert(1);</script>"/>
    
    <c:out value="${t}" escapeXml="true"/> //자바스크립트 해석하지 않고 그냥 문자열로 뜬다.
    ${t} //팝업으로 뜬다
    </body>
    </html>