본문 바로가기

하루정리

2022.08.30 JSTL 태그 라이브러리 core

JSTL  

JSTL이란?

*JSP 표준 테그 라이브러리

-'여러 프로그램이 공통으로 사용하는 코드를 모아놓은 코드의 집합'의 약어

-자신만의 태그를 추가할 수 있는 기능을 제공한다. 

-주로 JSTL의 CORE에서 C를 사용하며 <c:if>, <c:forEach> 등으로 사용

 

 

 

JSTL 라이브러리 다운로드

https://mvnrepository.com/artifact/javax.servlet/jstl/1.2

 

에 접속

 

jar파일 다운 후

Project Structure에서 JSTL를 사용할 프로젝트(모듈)을 선택하고

Dependencies에서 [+]를 클릭해서 다운로드받은 라이브러리를 추가한다.

번들 라이브러리를 받았다면 해당 파일 1개만 추가하면 된다.

또는 web-inf/lib에 추가한다. 

 

그리고 사용하고자 하는 페이지에서  

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

과 같이 선언해주면 된다. 

 

*참고 prefix="" 에서 ""안에 선언해주는 이름은 바뀌어도 상관없다 

ex) core prefix="커피"라고 선언해도 

<커피:if test ="${session.menu eq "a"}"

<p>아메리카노 주문하기</p>

</커피:if>

 

가 작동한다. 

 

c:out문 : 변수의 값을 출력한다.

<c:out value ="출력할 값" default="value가 null일 경우 설정한 default값이 출력"/>

 

c:set : 변수에 값을 저장한다. setAttribute 와 동일한 역활을 한다. 

<c:set var="변수명" value="1000">

<c:set var="변수명" >1000</c:set>

</c:set var="변수명" value="1000" scope="page">

*value : 표현식, el,상수 사용가능
*scope :변수가 저장되는 영역 설정 : page, request, session, application등 사용.

             생략이 가능하며, 생략시 기본값은 page다 

 

자바 객체의 맴버 변수값이나 map타입의 값 설정도 가능하다.

설정시 사용하는 속성은 다음과 같다. 

 <c:set target="대상" property="속성이름" value="값"/>

 <c:set target="대상" property="속성이름" >값</c:set>

*target : 속성값을 설정할 대상 bean 객체 또는 map 객체(표현식 타 변수 사용가능)

*property : 설정한 bean 객체의 맴버변수 이름(setter가 있는) 또는 map객체의 key이름

*value :속성값

 

<c:remove> : c:set로 지정한 변수 삭제

<c:remove var="변수이름" scope="영역"/>

scope 생략시 모든 영역의 동일한 변수 이름 삭제됨

 

<c:forEach> : 반복문을 실행, for문과 같은 역활을 함

var: 사용할 변수,  items: Collection객체(List, ArrayList), 

varStatus: 반복 index변수,  begin : 시작 값,  end : 마지막 값,  steep : 증가 단위 

필수 속성은 var, items이다. 그 외 속성은 무시하여도 forEach문은 정상작동

var의 경우 items에 담겨있는 List객체를 변수를 통하여 화면에 보여줄수가 있다. 

 

ex)

<c:forEach var="a" items="${list}">

<c:out values="${a.id}     (<p>태그 <h>태그, button태그 등등 다양한 태그로 출력해도 됨)

<c:out values="${a.pw}

<c:out values="${a.name}

</c:forEach>

varStatus의 경우 변수명을 지정후 반복문을 실행한다면, 현재 foreach의 상태를 알수가 있습니다.

 

${vs.current} : 현재 아이템

 

${vs.index} : 0부터의 순서

 

${vs.count} : 1부터의 순서 

 

${vs.first} : 현재 루프가 처음인지 반환

 

${vs.last} : 현재 루프가 마지막인지 반환

 

${vs.begin} : 시작값

 

${vs.end} : 끝값 

 

${vs.step} : 증가값

또한, JSTL의 forEach문법은 html뿐만아니라 javascript안에서도 동작을하기 때문에 활용 할 수 있습니다

 

 

c:if : 조건문 실행 if문과 동일한 역활

java의 if문과 거의 비슷하다. 

<c:if  test="${a.menu eq "y"}"

<p>a의 값이 y일 때 보여짐</p>

</c:if>

 

c:choose, c:when : if, else 구문 역활은 한다. 

<c:choose>

<c:when test="${a.id eq admin}">

a.id의 값이 admin일 때 해당하는 블록

</c:when>

<c:when test="${a.id eq geust}">

a.id의 값이 geust일 때 해당하는 블록

</c:when>

<c:otherwise>

a.id가  admin, geust 어디에도 해당되지 않을 때 해당하는 블록

</c:otherwise>

 

그 외에도 종류가 많음 차근차근 포스팅 할 예정