JAVA/JSP

[JSP] JSTL

로아다 2023. 6. 27. 06:48
728x90
반응형
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"/>

 

 

728x90
반응형