<한줄요약>
EL : JSP의 표현식을 대체해 쉽게 사용하도록 한다
JSTL : JSP 자바 코드의 대체 방법을 제공하는 Library
1. EL이란?
- Expression Language
- JSP에서 표현식, <%= %>을 대신하는 언어
기능
- JSP 4가지 scope 내부 속성 쉽게 사용
- Java class의 method 호출
- 연산자 지원
2. EL 사용
- scope의 자바 객체로부터 key/속성값을 꺼내 사용한다
- 객체는 java의 map / bean이어야한다
- dot 방식 : 객체.key
- [] 방식 : 객체[key]
- EL은 null값을 공백으로 표현한다
EL 내장객체
객체명 | 설명 |
pageContext | 현재 page의 instance |
pageScope | page scope의 객체들 |
requestScope | request scope의 객체들 |
sessionScope | session scope의 객체들 |
applicationScope | application scope의 객체들 |
param paramValues |
전달된 parameter(들) |
cookie | 쿠기 정보 |
3. EL을 이용한 객체 접근
- JSP 사용시
- <%= request.getAttribute("emp").getId() %>
- EL 사용시
- ${ requestScope.emp.id }
- ${ emp.id } ( 별도 scope 지정 없을시, page -> request -> session -> application 순서로 탐색 )
- 저장된 객체의 key에 . 문자가 포함되있을 경우, []만 사용 가능하다
- ex) setAttribute("hello.world", test); 로 저장했을 경우
- ${ hello.world } - hello객체는 존재하지 않음
- ${ requestScope[hello.world] } 으로 사용해야한다
- method 접근
- ${ requestScope.emp.function() } == ${ emp.function() }
- ${emp.function}은 emp 객체의 getFunction()함수를 뜻한다. 주의
- Cookie 접근
- 기본 객체인 cookie 사용
- ${ cookie.id.val }
- 존재하지 않으면 null 반환
4. EL 연산자
- 산술 연산자 : +, -, *, /, %
- 관계 연산자 : ==, !=, <, >, <=, >=
- 3항 연산자 : con? val1 : val2;
- 논리 연산자 : &&, ||, !
- 유효값 검증 : empty ( null, 빈 문자열, 배열, MAP에 대해 true를 반환)
5. JSTL이란?
- JSP Standard Tag Library
- JSP를 확장하는 태그 라이브러리
- Java 코드를 직접 사용하지 않고 Tag로 제공한다
JSTL의 종류
library | 기능 | URL |
core | 변수 지원, 제어,반복문 지원 | http://java.sun.com/jsp/jstl/core |
XML | XML 변환, 제어 | http://java.sun.com/jsp/jstl/xml |
국제화 | 포매팅 지원, 숫자/날짜양식 지원 | http://java.sun.com/jsp/jstl/fmt |
database | DB SQL | http://java.sun.com/jsp/jstl/sql |
함수 | Collection, String 처리 | http://java.sun.com/jsp/jstl/function |
6. JSTL core 사용하기
JSTL core tag 종류
tag | 설명 |
set | 변수 설정 |
remove | 변수 제거 |
if | 조건에 따라 실행 |
choose, when, otherwise | 다중조건, if / else 구문 |
forEach | array/collection의 각 항목별 처리 |
forTokens | 특정 구분자로 구분된 항목별 처리 |
import | 해당 URL 자원 삽입 |
redirect | 해당 경로로 이동 |
url | URL 작성 |
catch | 예외처리 |
out | 출력 |
JSTL core 사용 선언
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
JSTL로 변수 선언
//name 이름으로 value값을 가지는 변수 선언
//scope는 별도 지정 없으면 page
<c:set value="value" var="name" scope="request"/>
<c:set var="name">
value
</c:set>
JSTL 조건문
<c:if test="${ 조건식 }">
//true일 경우 실행할 Body
</c:if>
<c:choose>
<c:when test="${ 조건식 }">
//실행할 Body
</c:when>
<c:otherwise>
//위 조건이 아닐경우 실행할 Body
</c:otherwise>
</c:choose>
JSTL 반복문
//list의 각 항목마다 id를 출력하는 반복문
<c:foreach var="item" items="${ list }">
${item.id}<br>
</c:foreach>
//몇번째 항목인지 같이 출력
<c:foreach var="item" items="${ list }" varStatus="idx">
${ idx.count }. ${item.id}<br>
</c:foreach>
//0, 2, 4, 6, 8, 10번째 항목만 출력하기
<c:foreach var="item" items="${ list }" begin="0" end="10" step="2">
${item.id}<br>
</c:foreach>
'WEB 공부' 카테고리의 다른 글
[Frontend] 프론트에서 AWS S3에 이미지 압축 / 업로드 / 다운로드 / 삭제하기 (0) | 2021.08.22 |
---|---|
[WEB] Spring - DI (0) | 2021.05.18 |
[WEB] Cookie & Session (0) | 2021.05.16 |
[WEB] Backend - Servlet, JSP (0) | 2021.05.16 |
[JAVA] JDBC (0) | 2021.05.16 |
[WEB] Frontend - Bootstrap (0) | 2021.05.15 |
[WEB] Frontend - AJAX (0) | 2021.05.15 |