EL(Expression language) 이란?
EL은 Expression language의 약자이며 데이터를 표현하기 위한 언어로 JSP의 기본 문법을 보완해주고 자바 코드를 대신해 실행 시간에 태그의 속성 값을 지정하는 역할을 하고 JSP 2.0에 추가된 개념이랍니다.😊
초기의 EL은 JSTL의 액션 태그에서만 작동하는 문제가 있었는데, JSP 2.0부터는 JSP 컨테이너가 EL 표현식을 해석할 수 있게 도와주고 <%= %>와 같은 방식의 표현식 대신 사용하거나 내장객체 또는 표준 액션 태그, 커스텀 태그, 템플릿 데이터와 같이 자바 코드를 사용해야 했던 모든 곳에 EL을 사용할 수 있어요.
EL의 주요 기능
- JSP의 네 가지 기본 객체가 제공하는 영역의 속성을 사용할 수 있어요.
- 집합 객체에 대한 접근 방법을 제공해요.
- 수치 연산, 관계 연산, 논리연산자를 제공해요.
- 자바 클래스 메소드를 불러올 수 있어요.
- EL만의 기본 객체를 제공해요
EL 문법
${} : JSP가 실행될 때 즉시 반영되고 객체 프로퍼티 값을 꺼낼 때 사용해요
#{} : 사용자 입력값을 객체의 프로퍼티에 담는 용도로 사용해요
값을 찾을 때 Attribute는 작은 범위에서 큰 범위로 찾게 돼요. (application > session > request > page)
EL 기본 객체
EL은 key & Value의 형식으로 이루어져 있어요.
- 데이터 저장 영역 관련 객체
pageContext | JSP의 page 기본 객체로 servletContext, session, request, response 등 여러 객체를 참조 |
pageScope | pageContext 기본 객체 |
requestScope | request 기본 객체 |
sessionScope | session 기본 객체 |
applicationScope | application 기본 객체 |
- 매개 변수 관련 객체
initParam | web.xml에 등록된 초기 매개 변수를 가져올 때 사용 | application.getInitParameter(name) |
param | 파라미터 값을 가져올 때 사용 | request.getParameter(name) |
paramValues | 파라미터 값을 배열로 가져올 때 사용 | request.getParameterValues(name) |
- 헤더 관련 객체
header | 헤더 값을 가져올 때 사용 | request.getHeader(name) |
headerValues | 헤더 값을 배열로 가져올 때 사용 | request.getHeaders(name) |
- 쿠키 관련 객체
cookie | 쿠키 정보를 배열로 가져올 때 사용 | request.getCookies() |
<%-- <%= %> 표현식 --%>
<%=request.getParameter("id") %>
<%=request.getParameter("password") %>
<%-- EL 표현식 --%>
${param.id }
${param.password }
※ 추가로 값 비교 시 사용되는 eq, ne, empty의 예시를 하나 볼게요.
보통 값에 대한 비교로 "==", "!="를 많이 사용하시죠? JSTL에서는 그 대신 eq과 ne를, List나 Map 객체가 비었느냐 아니냐를 구분하는 용도로 empty를 사용할 수 있어요.
<%-- eq (==) --%>
<c:if test="${ null eq enchovy_column }">
<c:if test="${ 0 eq enchovy_column }">
<c:if test="${ '0' eq enchovy_column }">
<%-- ne (!=) --%>
<c:if test="${ null ne enchovy_column }">
<c:if test="${ 0 ne enchovy_column }">
<c:if test="${ '0' ne enchovy_column }">
<%-- empty --%>
<c:if test="${ empty enchovy_list }">
<c:if test="${!empty enchovy_list }">
'Java > JSP' 카테고리의 다른 글
[JSTL] 페이징 변수를 이용한 간단한 글 번호 처리 (0) | 2021.10.27 |
---|---|
[JSTL] JSTL 내장 함수 정리 (0) | 2021.07.02 |