EL과 JSTL (Back End)
2020. 4. 5. 19:31ㆍToday I learned/Online Courses
사이트: edwith
강의: [부스트코스] 웹 프로그래밍 챕터 2, DB 연결 웹 앱
학습일: 2020년 3월 29일
6. EL & JSTL - BE
EL (Expression Language, 표현 언어)
- EL이란?
- 값을 표현하는 데 사용하는 스크립트 언어
- 태생적으로 Back end, Front end 등 다양한 코드 형태가 섞여 있는 JSP의 문법을 단순화하는 역할
- Java 코드보다 좀 더 직관적으로, Front end 개발자나 디자이너가 봐도 쉽게 이해할 수 있도록 표현할 수 있음
- EL이 제공하는 기능
- JSP의 Scope별 변수를 쉽게 출력할 수 있음
- Collection 또는 프레임워크에서 제공하는 객체인 집합객체의 값을 쉽게 출력할 수 있음
- 변수 간 수치 연산, 관계 연산, 논리 연산 가능
- Java 클래스 메서드를 호출할 수 있음
- EL 자체의 기본적인 객체 제공
- EL의 사용방법
- 형태: ${표현식}
- 예시
- <jsp:include page="/module/${skin.id}/header.jsp" flush="true" />
<b>${sessionScope.member.id}</b>님 환영합니다.
- <jsp:include page="/module/${skin.id}/header.jsp" flush="true" />
- JSP의 스크립트 요소(스크립트릿, 표현식, 선언부) 외 나머지 부분에서 사용할 수 있음
- EL의 기본 객체
- EL의 데이터 타입
- 불리언: true, false
- 정수: 0~9의 정수 값으로 음수의 경우 '-'를 앞에 붙임
- 실수: 0~9로 이루어져 있고 '.'으로 구분되며, 1.23e3과 같이 지수형으로 표현될 수 있음
- 문자열: ' 또는 "로 둘러쌓인 문자열
- 표현식에서 '나 ", \를 중복해서 표현하고 싶을 경우, 앞에 \를 함께 사용해야 함
- 널: null
- EL의 객체 접근 규칙
- 형태: ${표현식1.표현식2}
- 표현식1이나 표현식2가 null: null 반환
- 표현식1이 Map인 경우: Key가 표현식2인 값 반환
- 표현식1이 List나 배열인 경우: 표현식2가 정수라면 해당 정수 index에 해당하는 값 반환
- 표현식2가 정수가 아닐 경우 오류 발생
- 표현식1이 객체인 경우: 표현식2에 해당하는 get 메서드를 호출한 결과값 반환
- EL의 수치 연산자
- +(덧셈), -(뺄셈), *(곱셈), / or div(나눗셈), % or mod(나머지)
- 숫자가 아닌 객체와 수치 연산자를 사용할 경우, 객체를 자동으로 숫자 값으로 변환한 뒤 연산을 수행
- 객체가 null일 경우 객체 값을 0으로 처리
- 객체를 숫자로 변환할 수 없을 경우 오류 발생
- EL의 비교 연산자
- 형태: ${비교연산자가 포함된 표현식}
- == or eq, != or ne, < or lt, > or gt, <= or le, >= or ge
- EL의 논리 연산자
- && or and, || or or, ! or not
- EL의 empty 연산자
- 형태: ${empty '값'}
- 값이 null, 빈 문자열(""), 길이가 0인 배열, 빈 Map, 빈 Collection일 때 true를 반환하고, 그 외에는 false를 반환
- EL의 비교선택 연산자
- 형태: ${표현식 ? 값1 : 값2}
- 표현식이 true이면 값1을 반환, false이면 값2를 반환
- 연산자의 우선순위
- [ ], .
- ( )
- -, not, !, empty
- *, /, div, %, mod
- +, -
- <, >, <=, >=, lt, gt, le, ge
- ==, !=, eq, ne
- &&, and
- ||, or
- ?, :
- EL 비활성화 방법
- <%@ page isELIgnored="true" %> 코드를 추가
- isELIgnored의 기본값은 false
- <%@ page isELIgnored="true" %> 코드를 추가
JSTL(JSP Standard Tag Library)
- JSTL: JSP 페이지에서 조건문, 반복문 처리 등을 HTML tag 형태로 작성할 수 있게 해주는 라이브러리
- JSTL의 등장배경
- JSP는 스트립트릿의 Java 코드와 HTML tag가 섞여 있는 형태
- 개발의 편의성은 높았으나 Front end 개발자의 코드 수정이 어려웠고, 곧 유지보수가 어려워지는 문제가 발생
- 이를 개선하기 위해 HTML tag 형식으로 프로그램 로직을 수행할 수 있게 해주는 라이브러리 JSTL이 등장
- JSTL 사용 방법
- Apache Tomcat 웹페이지에서 다운로드 → Impl, Spec, EL 파일 다운로드
- 프로젝트 폴더 > WebContent > WEB-INF > lib 폴더로 해당 파일 이동
- JSP 파일 상단에 지시자 <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> 입력
- prefix와 uri는 라이브러리 종류에 따라 변경하면서 사용
- JSTL이 제공하는 태그의 종류
-
- JSTL 코어 태그
- 변수 지원 태그
- set: 지정한 scope에 변수를 생성하거나 객체의 property 값을 지정하는 태그
- 형태
- 변수 생성: <c:set var="변수명" scope="범위" value="값" />
- property 지정: <c:set target="${객체}" property="property명" value="값" />
- 객체가 JavaBean일 경우: 객체.setPropertyName(값) 메서드 실행
- 객체가 map일 경우: 객체.put(property명, 값) 실행
- 형태
- remove: 변수를 제거하는 태그
- 형태: <c:remove var="변수명" scope="범위" />
- set: 지정한 scope에 변수를 생성하거나 객체의 property 값을 지정하는 태그
- 흐름제어 태그
- if: 특정 조건을 만족하면 코드를 실행하는 태그
- 형태: <c:if test="조건">실행 코드</c:if>
- choose: 여러 조건이 있고, 조건에 맞는 코드를 실행하는 태그
- if ... else if ... else와 유사하게 동작
- 형태
- <c:choose>
<c:when test="조건1">실행 코드 1</c:when>
<c:when test="조건2">실행 코드 2</c:when>
<c:otherwise>실행 코드 3</c:otherwise>
</c:choose>
- <c:choose>
- forEach: 배열 및 Collection에 저장된 요소를 차례대로 처리하는 태그
- 형태: <c:forEach var="변수명" items="아이템" [begin="시작번호"] [end="끝번호"]>실행 코드</c:forEach>
- 아이템: 배열, List, Iterator, Enumeration, Map 등의 Collection
- Map의 경우 ${Map.key}, ${Map.value}를 통해 접근할 수 있음
- 아이템: 배열, List, Iterator, Enumeration, Map 등의 Collection
- 형태: <c:forEach var="변수명" items="아이템" [begin="시작번호"] [end="끝번호"]>실행 코드</c:forEach>
- import: 특정 URL에 연결하여 결과를 변수에 저장하는 태그
- 형태
- <c:import url="URL" charEncoding="인코딩 방식" var="변수명" scope="범위">
<c:param name="매개변수명" value="매개변수값" />
</c:import>- 매개변수 부분은 생략할 수 있음
- <c:import url="URL" charEncoding="인코딩 방식" var="변수명" scope="범위">
- 형태
- redirect: 지정한 페이지로 리다이렉트하는 태그
- response.sendRedirect( ) 메서드와 유사하게 동작
- 형태
- <c:redirect url="URL">
<c:param name="매개변수명" value="매개변수값" />
</c:redirect>
- 매개변수 부분은 생략할 수 있음
- <c:redirect url="URL">
- if: 특정 조건을 만족하면 코드를 실행하는 태그
- 기타 태그
- out: jspWriter에 데이터를 출력하느 ㄴ태그
- 형태: <c:out value="출력값" escapeXml="true | false" default="기본값" />
- escapeXml: 특정 문자를 변환하는 옵션
- 기본값은 true
- 변환되는 문자
- < → <
- > → >
- & → &
- ' → '
- " "
- escapeXml: 특정 문자를 변환하는 옵션
- 형태: <c:out value="출력값" escapeXml="true | false" default="기본값" />
- out: jspWriter에 데이터를 출력하느 ㄴ태그
'Today I learned > Online Courses' 카테고리의 다른 글
SQL (Back End) ... Part 1 (0) | 2020.04.06 |
---|---|
MySQL (Back End) (0) | 2020.04.05 |
JSP Scope (Back End) (0) | 2020.04.04 |
HTTP redirect & forward (Back End) (0) | 2020.04.03 |
JSP (Back End) ... Part 2 (0) | 2020.04.03 |