JSP EL 표현식과 문법 사용법
표현 언어(Expression Language)로 표현 단순화하기
EL(Expression Language)?
JSP 출력에 대한 부분을 쉽게 하기 위해 개발한 tag(태그)이다.
표현 언어는 표현식보다 사용방법이 간단하고 문법체계가 직관적으로 아주 쉽습니다. 표현 언어는 ${}를 사용하여 값을 표현합니다.
EL표기법
${ }
- JSP가 실행될 때 즉시 반영된다. (Immediate evaluation)
- 객체 프로퍼티 값을 꺼낼때 주로 사용
표현식 예)
<%=expr%>
표현언어 예 )
${expr}
#{ }
- 시스템에서 필요하다고 판단될 때 그 값을 사용한다. (Deferred evaluation)
- 사용자 입력값을 객체의 프로퍼티에 담는 용도로 주로 사용
${member.no} 또는 ${member["no"])
다음은 JSP에서 기본으로 제공하는 EL 객체이다.
객체 | 설명 | 코드 |
pageContext | JSP의 PageContext 객체 | |
servletContext | ServletContext 객체 | ${pageContext.servletContext.객체명} |
session | HttpSession 객체 | ${pageContext.session.객체명} |
request | ServletRequest 객체 | ${pageContext.request.객체명} |
response | ServletResponse 객체 | |
param | 요청 매개변수의 값 조회 | ${param.매개변수명} |
paramValues | 요청 매개변수의 값 배열 조회 | ${paramValues.매개변수명} |
header | HTTP 헤더의 값 조회 | ${header.헤더명} |
headerValues | HTTP 헤더의 값 배열 조회 | ${headerValues.헤더명} |
cookie | 쿠키 값 조회 | ${cookie.쿠키명} |
initParam | 컨텍스트 초기화 매개변수의 값 조회 | ${initParam.매개변수명} |
pageScope | page 보관소의 값 조회 | ${pageScope.객체명} |
requestScope | request 보관소의 값 조회 | ${requestScope.객체명} |
sessionScope | session 보관소의 값 조회 | ${sessionScope.객체명} |
applicationScope | application 보관소의 값 조회 | ${applicationScope.객체명} |
예를 들어 표현식에서는 <%="Hello"%>로 기술했던 코드를 표현 언어로 표현할 때에는 ${"Hello"}와 같이 기술합니다.
표현 언어에서 사용 가능한 데이터 타입
정수형 : ${10} <br>
실수형 : ${5.6} <br>
문자열형: ${"긁지않은개발자"} <br>
논리형: ${true} <br>
null : ${null} <br>
표현 언어가 자바와는 다른 특징 중 하나는 null은 결과 화면에 공백으로 처리되는 점입니다
EL 식에는 연산자를 포함할 수 있습니다. ${3+2 }
EL 리터럴 표현식
문자열, 정수, 부동소수점, Boolean, Null을 사용할 수 있다.
1
2
3
4
5
6
|
문자열 : ${"test"}
문자열 : ${'test'}
정수 : ${20}
부동소수점 : ${3.14}
Boolean : ${true}
null : ${null}
긁지않은개발자 |
실행 결과

${null}은 빈 문자열(" ")로 출력된다.
EL 표현식으로 값 꺼내기
배열에서 값 꺼내기
1
2
3
4
|
긁지않은개발자
<% pageContext.setAttribute("scores", new int[]{90, 80, 70, 100});
%>
${scores[2]}
|
실행 결과 : 70
배열[2]번째꺼 , 0부터 시작이니까 70
List 객체에서 값 꺼내기
1
2
3
4
5
6
7
8
9
|
긁지않은개발자
<% List<String> list = new LinkedList<>();
list.add("가나");
list.add("다라");
list.add("마바");
pageContext.setAttribute("list", list);
%>
${list[1]}
|
실행 결과 : 다라
list[1] 0부터시작이니까 2번째 list에 들어간 "다라"
Map 객체에서 값 꺼내기
1
2
3
4
5
6
7
8
|
긁지않은개발자
<% Map<String, String> map = new HashMap<>();
map.put("1", "a");
map.put("2", "b");
map.put("3", "c");
pageContext.setAttribute("map", map);
%>
${map["1"]}
|
실행 결과 : a
map["키","값"]; map["1"]
자바 객체에서 프로퍼티 값 꺼내기
1
2
3
4
5
6
7
8
|
긁지않은개발자
<% pageContext.setAttribute("student",
new Student()
.setStudentNo("20230605")
.setStudentName("긁지않은개발자")
);
%>
${student.studentNo} - ${student.studentName}
|
실행 결과 : 20230605 - 긁지않은개발자
ResourceBundle 객체에서 값 꺼내기
java
1
2
3
4
5
6
7
8
9
10
11
|
긁지않은개발자
public class HcatBundle extends ListResourceBundle{ @Override
protected Object[ ][ ] getContents() {
return new Object[ ][ ] {
{"select", "조회"},
{"Insert", "저장"}, {"Update", "수정"},
{"Delete", "삭제"}
};
}
}
|
JSP
1
2
3
4
|
긁지않은개발자
<% pageContext.setAttribute("Hcat", ResourceBundle.getBundle("HcatBundle"));
%>
${Hcat.Delete}
|
실행 결과 : 삭제
EL 표현식의 연산자
EL에서 지원하는 주요 연산자는 산술 연산자, 논리 연산자, 관계 연산자, empty 연산자, 조건 연산자가 있다.
EL 산술 연산자
표현식 | 실행 결과 |
${10+20} | 30 |
${10-20} | -10 |
${10*20} | 200 |
${10/20} | 0.5 |
${10 div 20} | 0.5 |
${10 % 20} | 10 |
${10 mod 20} | 10 |
EL 논리 연산자
표현식 | 실행 결과 |
${true && false} | false |
${true and false] | false |
${false || true} | true |
${false or true] | true |
${not true} | false |
${!true} | false |
EL 관계 연산자
표현식 | 연산자 |
${10 == 11} | false |
${10 eq 11} | false |
${10 != 11} | true |
${10 ne 11} | true |
${10 < 11} | true |
${10 lt 11} | true |
${10 > 11} | false |
${10 gt 11} | false |
${10 <= 11} | true |
${10 le 11} | true |
${10 >= 11} | false |
${10 ge 11} | false |
empty 연산자
- 값이 null이면 true
- 문자열, 배열, Map, Collection 객체의 크기가 0이면 true
- 그 외에는 false
1
2
3
4
|
긁지않은개발자
<% pageContext.setAttribute("title", "EL 연산자");
%>
${empty title}, ${empty title2}
|
실행 결과 : false, true
조건 연산자
EL 조건 연산자는 자바 3항 연산자와 문법이 동일하다.
1
|
${50 > 20 ? "크다" : "작다"}
|
긁지않은개발자 |
실행 결과 : 작다
종류 | 연산자 |
산술 | +, -, *, / (or div), % (or mod) |
관계형 | == (or eq), != (or ne), < (or lt), > (or gt), <= (or le), >= (or ge) |
조건 | a ? b : c |
논리 | && (or and), || (or or), ! (or not) |
null 검사 | empty |

'JSP > JSP 정리' 카테고리의 다른 글
[JSP] JSP JSTL뜻과 사용방법 (0) | 2023.06.09 |
---|---|
[JSP] Mybatis, ibatis차이점과 사용방법 (0) | 2023.06.07 |
[JSP] JSP 자바 빈과 액션 태그 (0) | 2023.06.04 |
[JSP] 쿠키(Cookie)와 세션(session) (0) | 2023.06.04 |
[JSP] 서블릿(Servlet)이란? (0) | 2023.06.02 |