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>
그 외에도 종류가 많음 차근차근 포스팅 할 예정
'하루정리' 카테고리의 다른 글
2022.09.05 JavaScript : Class와 Object의 차이, 상속과 다향성 , instanceOf (0) | 2022.09.05 |
---|---|
222.09.01 JavaScript (0) | 2022.09.01 |
2022.08.29 include file / include page (0) | 2022.08.29 |
2022-08-25 Ineer Join과 Outer Join (0) | 2022.08.25 |
2022.08.23 extends 와 implements의 차이와 쿼리문 기타 요소 @SessionAttiibutes (0) | 2022.08.23 |