[TIL] JSP : EL & JSTL


表示言語(EL)
Expression language略語で見ると、Java構文を減らすために設計された構文です.
きほんけいじょう
${...}
耐食性を$と{}で表します.
デフォルトでは、内部には算術、関係(比較サイズ)、条件(3つの条件式)、論理(&,|...)が含まれます.などを使用できます.空という特殊な演算子があり、適用するオブジェクトの値が空の場合はtrueを返します.
例)${空の変数}
JAvaコードの変数はJSTLで単独で使用する必要があります.
例:
<%
	String input = null;
%>
上記java変数をjspファイルに宣言すると、
下のコード
${empty input}
利用可能ではありません.
JSTLの使用
<c:set var="input" value="<%input%>"/>
一度に変数として表すことができます.
式でrequestに送信されるパラメータを受信
簡単に手に入る.
${param.인자}

또는

${param["인자"]}
前述したように、パラメータに格納されているデータを受信してインポートできます.
同じパラメータの名義でリクエストを複数回提出すると、順番に受け入れられます.
${paramValues.인자}
としては、通常JSTLの繰り返し文アクションタグとともに使用される.
<c:forEach items="${paramValues.인자}" var="변수">
${변수}
</c:forEach>
Javabinをリクエストにコミットするときの情報の取得
リクエストパラメータを受信したときと同じ
${자바빈즈를 담아준 속성 이름.프로퍼티이름(멤버변수이름)}

또는

${자바빈즈를 담아준 속성 이름["프로퍼티이름(멤버변수이름)"]}
使用
JSTL
デフォルトでは、アクションラベルはユーザー専用で、単独で作成して使用できますが、標準がないため、ラベルに雨後のタケノコが多すぎて分岐現象が発生し、jsp開発者が標準となるアクションラベルを作成しました.
それがJSTLです.
JSTL機能別タグ付け
  • 基本機能=c
  • 形式化=fmt
  • データベース操作=sql
  • XML処理=x
  • 関数処理=fn
  • JSTLライブラリの読み込み
    まずGoogleでJSTLを検索し、対応する圧縮ファイルを取得して分解し、jarファイルをプロジェクトのWEB-INFのlibフォルダに入れて適用します.
    その後、jspファイルにロードして使用すると、
    <%@ taglib uri="경로주소값" prefix="uri값에 맞는 태그값"%>
    上のコードは上に書いておけば使えます.
    エディタを使用する場合、uri=を入力するとアドレス値のリスト形式が自動的に完了するので、必要なJSTLを選択できます.
    JSTLC(core)タグの動作タグタイプ
    タグ
    変数に値を格納するタグ.
    <c:set var="변수명" value="${표현식내용}">
    上記のように、式を使用してデータをバインドします.
    タグ
    宣言変数のタグを削除します.逆も同様です.
    <c:remove var="변수명">
    タグ
    条件式を作成できるタグ
    <c:if test="${조건식}">
    	조건이 참일때 실행값
    </c:if>
    タグ
    Javaのswitch文のタグを置換
    <c:choose>
        <c:when test="조건1"> 조건에 만족할때 값 </c:when>
        <c:when test="조건2"> 조건에 만족할때 값 </c:when>
        <c:otherwise> 위 조건에 아무것도 만족하지 않을때 값</c:otherwise>
    </c:choose>
    タグ
    繰り返し実行されるタグで、主にアレイ処理に使用されます.
    <c:forEach var="변수" items="${배열변수명}">
        ${변수}
        //배열의 크기만큼 반복적 수행하며 원소 한개 출력
    </c:forEach>
    varStatusプロパティ
    forEachアクションラベルで使用可能なプロパティは、配列のインデックス値または繰返し回数を知ることができます.
    <c:forEach var="movie" items="${movieList}" varStatus="status">
    	<tr>
    		<td> ${status.index }</td>
    		<td> ${status.count }</td>
    		<td> ${movie }</td>
    	</tr>
    </c:forEach>
    例に示すように、プロパティをvarStatus=「status」に設定します.
    ${status.index}を使用して配列のインデックス値を取得します.
    ${status.cont}を使用して配列の繰返し回数を取得します.
    first,lastプロパティ
    varStatusで使用可能な属性名と同じです
    firstは配列の最初のものを選択します.
    Lastは配列の最後の1つを選択します.
    主に最初の文または最後の文で使用され、条件を与えたい場合に使用されます.
    <c:forEach var="movie" items="${movieList}" varStatus="status">
    	<c:if test="${status.first}">시작</c:if>
    	${movie}
    	<c:if test="${not status.last}">, </c:if>
    </c:forEach>
    begin、endプロパティ
    varStatusが提供するプロパティ.
    繰り返し回数を指定できます.
    <c:forEach var="movie" begin="1" end="10" items="${movieList}" varStatus="status">
    	${movie}<c:if test="${not status.last}">, </c:if>
    </c:forEach>
    beginは繰り返し使用する最初のプロジェクトのindexです
    endは繰り返し使用する最後のプロジェクトのindexです
    最初のindexから最後のindexまでのみ繰り返します.
    Stepプロパティ
    begin、endプロパティを使用して増分を指定できます.
    <c:forEach var="movie" begin="1" end="10" step="2" items="${movieList}" varStatus="status">
    	${movie}<c:if test="${not status.last}">, </c:if>
    </c:forEach>
    Stepを与えると、指定した値に従って開始インデックスからより高いインデックス番号にジャンプし、繰り返しを実行します.
    タグ
    文字列を区切り値で区切り、配列のアクションタグを返します.
    <c:forTokens var="토큰을 저장할 변수" items="토큰으로 나눌 문자열" delims="구분자">
    	실행내용
    </c:forTokens>
    タグ
    jspのincludeラベルのように、他のページの内容を含むために使用されます.ただし、importラベルは、このページを変数に含めることができます.
    []는 생략가능 속성
    <c:import url="주소값" [var="변수이름"] [scope="영역"] [charEncoding="charEncoding"]>
    </c:import>
    タグ
    繰り返し使用するurl値を変数に格納するタグ
    []는 생략가능 속성
    <c:url value="주소값" [var="변수이름"] [scope="영역"]>
    </c:url>
    タグ
    response.sendRedirect()メソッドと同じ機能を持つタグ.
    指定したページに移動
    []는 생략가능 속성
    <c:redirect url="주소값" [context="경로명"]>
    ラベル
    出力されたアクションラベル
    []는 생략가능 속성
    <c:out value="" [default="기본값"]>
    タグ
    例外処理フラグ
    <c:catch var="변수명">
    	예외가 발생할 수 있는 코드
    </c:catch>
    JSTL fmtタグの動作タグタイプ
    いろいろなマークがありますが、一番役に立つのはfotmateDateです.
    <c:set var="now" value="<%= new java.util.Date()%>">
    <fmt:formatDate value="${now}" pattern="yyyy년 MM월 dd일 hh시 mm분 ss초"/>
    現在の時間はモードで指定された形式で出力されます.