일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
- 제이쿼리
- 스프링 에러
- 오라클월별데이터
- 스프링
- 오라클클라우드에 젠킨스 설치하기
- 스프링 구글차트
- jsp
- 스프링과 스프링부트 차이점
- 오라클
- 자바 기초
- 스프링 부트가 해결하려고 했던 문제
- 스프링 Ioc
- Spring Boot가 해결하려고 했던 문제
- 자바 왕기초
- maven
- 스프링 구글차트로 기간별 현황 조회하기
- 스프링 제어역전
- 오라클주별데이터
- 세션
- 자바왕기초
- java
- HTML
- 자바왕초보
- 자바기초
- 오라클일별데이터
- CSS
- 썸머노트
- 오라클통계
- 자바
- 스프링 Ioc Container
- Today
- Total
Just Do it
표현언어 EL (Expression Language) 기초 본문
*출처: CHAPTER 11 표현 언어(Expression Language), 최범균의 JSP 2.3 웹 프로그래밍 기초부터 중급까지, 최범균, 가메출판사
0. EL의 구성
-EL은 다음과 같이 $와 괄호 {} 그리고 표현식을 사용하여 값을 표현한다. expr 부분에는 포현 언어가 정의한 문법에 따라 값을 표현하는 식이 온다.
예) ${expr}
- EL은 액션 태그나 JSTL의 속성값으로 사용할 수 있다.
예)<jsp: include page="/module/${skin.id}/header.jsp" flush="true"/>
- 액션 태그나 커스텀 태그뿐만 아니라 비스크립트 요소 부분에서도 값을 출력하기 위해 사용할 수 있다.
예) <b>${sessionScope.member.id}</b>님 환영합니다.
-EL은 JSP의 스크립트 요소(스크립트릿, 표현식, 선언부)를 제외한 나머지 부분에서 사용될 수 있으며 EL을 통해서 표현식보다 편리하게 값을 출력할 수 있다.
1. EL 의 데이터 타입과 리터럴
EL은 Boolean 타입, 정수 타입, 실수 타입, 문자열 타입, 널 타입 총 5가지 타입을 제공하며 자바 기본형 타입의 표현 방식과 동일하다고 보면 된다.
2. EL의 기본 객체
JSP는 EL에서 사용할 수 있는 기본 객체도 제공하고 있다. 이 객체를 이용해서 요청 파라미터나 세션 속성값 등을 표현 언어에서 사용할 수 있다.
기본 객체 | 설명 |
pageContext | JSP의 pageContext 기본 객체와 동일하다 |
pageScope | pageContext 기본 객체에 저장된 속성의 <속성, 값> 매핑을 저장한 Map 객체이다. |
requestScope | request 기본 객체에 저장된 속성의 <속성, 값> 매핑을 저장한 Map 객체이다. |
sessionScope | session 기본 객체에 저장된 속성의 <속성, 값> 매핑을 저장한 Map 객체이다. |
applicationScope | application 기본 객체에 저장된 속성의 <속성, 값> 매핑을 저장한 Map 객체이다. |
param | 요청 파라미터의 <파라미터 이름, 값> 매핑을 저장한 Map 객체이다. 파라미터 값 타입은 String이며, request.getParameter(이름)의 결과와 동일하다. |
paramValues | 요청 파라미터의 <파라미터 이름, 값 배열> 매핑을 저장한 Map 객체이다. 파라미터 값 타입은 String[]로서, request.getParameterValues(이름)의 결과와 동일하다. |
header | 요청 정보의 <헤더 이름, 값> 매핑을 저장한 Map 객체이다. request.getHeader(이름)의 결과와 동일하다. |
headerValues | 요청 정보의 <헤더 이름, 값 배열> 매핑을 저장한 저장한 Map 객체이다. request.getHeaders(이름)의 결과와 동일하다. |
cookie | <쿠키 이름, Cookie> 매핑을 저장한 Map 객체이다. request.getCookies() 로 구한 Cookie 배열로부터 매핑을 생성한다. |
initParam | 초기화 파라미터의 <이름, 값> 매핑을 저장한 Map 객체이다. application.getInitParameter(이름)의 결과와 동일하다. |
사용 예)
${pageScope.NAME} : page 영역에 저장된 name 속성의 값을 출력한다.
${param.code}: 이름이 code인 요청 파라미터의 값을 출력한다. code 요청 파라미터가 존재하지 않으면 아무것도 출력되지 않는다.
3. EL 의 연산자 (수치, 비교, 논리, empty)
자바 연산자와 완전히 동일하지만 아래와 같이 차이점이 있어 사용에 유의해야한다.
예) "1"+1
- EL에서 + 연산자는 수치 연산자이므로 앞에 "1" 이 숫자로 바뀌어 위의 값은 문자열 "11" 이 아니라 숫자 2로 출력된다.
- null과 빈 문자열은 0으로 바뀌어 연산된다.
- 비교 연산자와 논리 연산자는 모두 자바 언어와 동일하다.
- empty 연산자는 검사할 객체가 텅 빈 객체인지를 검사하기 위해 사용한다. empty 연산자는 다음과 같이 사용한다. 값이 비어있으면 true를 리턴한다.
empty<값>
4. 문자열 연결
자바에서 "문자"+"열"의 연산 결과는 String 타입의 "문자열"이지만, EL에서 "문자"+"열"의 결과는 에러다. EL에서 +연산자는 피연산자를 숫자로 변환한 뒤에 연산을 수행하는데, "문자"나 "열"은 숫자로 변환할 수 없기 때문에 에러가 발생하는 것이다.
그 전까지는 문자열 연결이 지원되지 않았으나 EL 3.0 버전에 문자열 연결을 위한 += 연산자가 추가됐다. 이 연산자를 사용하면 다음과 같이 EL에서 문자열을 연결할 수 있다.
예) <% request.setAttribute("title", "JSP 프로그래밍"); %>
${"문자"+="열"+="연결"} // "문자열연결"
${"제목: "+= title} // "제목: JSP 프로그래밍"
5. 할당 연산자 (EL에서 변수 생성하기)
EL은 지역 변수를 사용할 수 없다. 그래서 변수를 생성하기 위해서는 다음의 두 코드 중 하나를 사용해야 한다.
<% request.setAttribute("varl", 10L); %>
또는
<c:set var="varl" value=${10} />
// <c:set> 태그는 JSTL에서 제공하는 태그로 EL에서 사용할 수 있는 변수를 생성해주는 기능을 제공한다.
6. 특수 문자 처리하기
자바에서 따옴표(", ')를 처리할 때 앞에 역슬래쉬(\)를 붙이듯이 EL에서도 ${와 #{을 사용할 떄는 앞에 역슬래쉬를 붙여주면 된다.
예) \${
\#{
'신입 개발자가 되기 위해 공부했던 독학 자료들 > JSP' 카테고리의 다른 글
표준 태그 라이브러리 (JSTL) (0) | 2022.02.06 |
---|---|
JSP 기본 문법 총 정리 - 템플릿 데이터, JSP 전용 태그, 내장 객체 (0) | 2022.02.05 |
JSP 페이지의 구성 요소 (0) | 2022.02.05 |
맥 톰캣 Tomcat 실행 방법 (0) | 2022.01.31 |