JAVA

[JAVA] JSTL 문법정리

오래오래 늘 함께 2018. 12. 13. 11:28

■ JSTL 표준 태그 라이브러리

    : JSP페이지를 작성할때 유용하게 사용할 수 있는 여러 가지 커스텀 액션과 함수과 포함되어 있는 라이브러리

파일설치>> WEB-INF/lib 폴더 내에 jstl.jar(스펙라이브러리), standard.jar(구현라이브러리) 파일 추가


 JSTL 문법

 ==

 eq

 !=

 ne

 <

 lt 

 >

 gt

 <=

 le

 >=

 ge



▶ <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>

Core : 일반 프로그래밍 언어에서 제공하는 것과 유사한 변수 선언
   실행 흐름의 제어기능 제공 / 다른 JSP페이지로 제어를 이동하는 기능 제공


 <c:set> 속성 변수를 선언하고 초기값을 대입

 <c:out>

 데이터 출력할때

 <c:if>

 IF문 

 <c:chooose> 

 Switch문

 <c:forEach>

 For문


      1. <c:set>
        1.  int num =100;
<c:set var="num" value="100"/>


        2. <c:set var="num" value="${num1+num2}"/>

  3. <c:set>액션을 이용하여 선언한 변수는 기본적으로 page테이터 영역의 속성으로 바인딩 된다.

  4. 내장객체 지정가능
Page / request / session / application 중 한 값을 지정

<c:set var="price" value="15000" scope="request"/>
<span>상품가격: ${price}</span>

※ <c:out>

   <c:out value="${변수}" escapeXml="true", (default="NULL") />

escapeXml="true" -> 기본값이며 생략가능 < > & ' " 자동변환 (HTML문자를 자동변환해줌으로써 크로스사이트스크립팅을 피할수 있다)

B. <c:if>

if( num1 > num2) { 실행문 };

<c:if test="${num1>num2}"/> 실행문 </c:if>

C. <c:choose> 

<c:choose>
<c:when test="${param.NUM==0}">
실행문
</c:when>
<c:otherwise>
실행문
</c:otherwise>
</c:choose>

D. <c:forEach>

<c:forEach var="i" begin="0" end="100" step="1">  //step: 기본값 1
${i} <br/>
</c:forEach>

*item 속성
Collection / Iterator / Enumeration / Map 객체 / 콤마(,)로 구분된 항목들을 포함한 문자열를 순서대로 출력

String arr[ ] = {ㄱ, ㄴ, ㄷ};
request.setAttribute{"List", arr);

<c:forEach var="str" items="${List}"> items만큼 루프돌려서 출력한다.
<p>${str}</p>
</c:forEach>


▶ <%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions"%>

문자열을 처리하는 함수 제공

 List형태일 경우

 ${fn:length(변수명) eq 0} 

 값 형태일 경우

 ${empty 변수명}  / ${not empty 변수명}

 ${fn:substring(문자열, 시작위치, 끝위치)}


▷ 그외
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt"%> 
숫자, 날짜 시간을 변환하는 기능 / 국제화, 다국어 지원기능
<%@ taglib prefix="sql" uri="http://java.sun.com/jsp/jstl/sql"%> 
데이터베이스의 데이터를 입력.수정.삭제.조회하는 기능 제공 
<%@ taglib prefix="x" uri="http://java.sun.com/jsp/jstl/xml"%> 
xml 문서를 처리 할 때 필요한 기능 제공


▶ <%@ taglib prefix="web" uri="webUtility" %> 

사용자 정의 태그 (커스텀 태그)
-> webUtilty.tld 파일 생성

webUtilty.tld 파일 구조

<tlib-version>0.1</tlib-verson>
<short-name>webUtility</short-name>
<uri>webUtility</uri>

<tag>
<name> </name>       태그이름
<tag-class> </tag-class>   태그가 수행할 클래스명(경로지정)
<body-content> </body-content>    태그가 body가 있는지 여부 결정 
   empty: body없음 / scriptless: body있음(기본값) 
<attribute>
<name> </name>   해당 태그의 속성 이름
<required> true </required>   속성 필수 여부 (기본값 false)
<rtexprvalue> true </rtexprvalue>   표현식 사용여부 (기본값 true / false : 사용불가)
</attribute>
</tag>

<web:service methodName="getHtmlContent" var="info" className="menu_SCV">

webUtility.tld> 태그 이름: service -> 태그 클래스: tcms/webUtility/Service (Service.java)
   속성 이름: methodName / ClassName

Service.java안에 getHtmlContent / menu_SCV값이 들어가서 수행한다.