JSTL (JSP Standard Tag Library)
- JSP에서 자바 데이터를 사용하기에 코드가 너무 지저분해져서 등장한 커스텀 태그 라이브러리
- 주로 뷰 쪽에서 자주 쓰이는 기능들을 html태그와 유사한 형식으로 사용할 수 있게 만들어 두었다.
- 자바의 모든 기능을 사용할 수 있는 것은 아니지만 뷰 페이지를 만들기에는 충분한 기능들이 태그로 구현되어 있다.
- JSTL은 태그 라이브러리이므로 태그 라이브러리를 import하는 문법을 해당 페이지 맨 위에 추가해야 사용할 수 있다.
- 다양한 라이브러리 다운받는 곳 : 구글에 maven repository 검색
JSTL core
- <c:set> :setAttribute를 편리하게 사용할 수 있는 태그
- <c:if> : 태그 형식으로 if문을 수행할 수 있다. else if와 else는 없다.
- <c:choose>, <c:when>, <c:otherwise> : if, else if, else처럼 사용할 수 있는 태그
JSP Expression Language (EL)
- JSP에 특정 버전 이후부터 추가된 기본 기능
- 어트리뷰트에 실려있는 값을 쉽게 꺼내 쓸 수 있는 기능
- 간단한 자바 메서드의 호출은 가능하지만 모든 메서드들 자바처럼 자유롭게 쓸 수 있는 것은 아니다.
- 자바스크립트의 format string과 똑같이 생겨서 jsp파일 내에서는 JS format String을 사용할 수 없다.
EL로 각 영역의 어트리뷰트 출력하기
- 그냥 : ${book}
- page : ${pageScope.book}
- request : ${requestScope.book}
- session : ${sessionScope.book}
- application : ${applicationScope.book}
EL로 어트리뷰트에 들어있는 Model 클래스 활용하기
- 객체를 그냥 출력 (해당 객체의 toString() 호출) : ${stu1 }
- 객체에 .을 찍고 속성을 호출하면 실제로는 해당 속성의 getter를 호출하여 사용한다.
- 해당 속성의 getter가 구현되어 있지않으면 에러가 발생한다.
- name : ${stu1.name}
- age : ${stu1.age}
- kor : ${stu1.kor}
- eng : ${stu1.eng}
- math : ${stu1.math}
EL의 리터럴
- 정수 : ${12345}, ${133 + 123}
- 실수 : ${12345.12345 * 123}
- 문자열 : ${'hello!'}, ${"hello~"}
- boolean : ${true}, ${false} ${not premium}
EL의 연산자
- 산술 : +, -, *, /, %, mod
ex: ${10 % 7}, ${10 mod 7} ${a mod b}
- 비교 : ==, !=, eq(equal), ne(not equal), lt(less than), gt(greater than), le(less than equal), ge(greater than equal)
ex: ${a eq b}, ${a == b }, ${a gt b}, ${fruit == 'blueberry'}, ${fruit != 'strawberry'}
- 논리 : and, or, not, &&, ||, !
ex: ${fruit == 'blueberry' and a mod 2 == 0}
- empty : 해당 값이 null 또는 ""일 때 true
ex: ${empty fruit}
- 삼항 연산자
ex: 사과 바구니 개수 : ${a % 10 == 0 ? a / 10 : a / 10 + 1}
c:set
<c:set var="fruit" value="참외" scope="application"/>
<c:set var="fruit" value="복숭아" scope="session"/>
<c:set var="fruit" value="키위" scope="request"/>
<c:set var="fruit" value="딸기" scope="page"/>
'JAVA > JSP' 카테고리의 다른 글
[JSP] Filter와 Listener (0) | 2023.07.03 |
---|---|
[JSP] Cookie (0) | 2023.06.27 |
[JSP] Dispatcher Servlet (0) | 2023.06.27 |
[JSP] XML (0) | 2023.06.23 |
[JSP] Context Path (0) | 2023.06.23 |