반응형
EL(Expression Language)는 JSP(JavaServer Pages)에서 데이터 값을 표현하고 접근하기 위해 사용되는 언어입니다. EL을 사용하면 Java 코드를 최소화하면서도 JSP 페이지에서 데이터를 효율적으로 처리할 수 있습니다. EL은 JSP 2.0부터 도입되었으며, 간단한 구문으로 데이터를 접근할 수 있어 가독성과 생산성을 높여줍니다.
이 글에서는 EL 태그의 종류와 사용법을 자세히 설명합니다. 이를 통해 EL을 사용하는 방법을 이해하고, 다양한 예제를 통해 실제 프로젝트에서 활용할 수 있도록 도와드리겠습니다.
1. EL(Expression Language)란?
EL의 주요 목적
- Java 객체 및 데이터를 JSP 페이지에서 쉽게 접근.
- JSP 페이지 내에서 Java 코드를 줄이고, 태그와 데이터를 표현하는데 초점.
- 데이터 값의 조건 처리, 반복문, 연산 등을 간단히 구현.
EL의 주요 특징
- 간단한 구문:
${expression}
형식으로 데이터를 표현. - 자동 형 변환: 데이터 타입에 관계없이 자동으로 형 변환.
- 암묵적 객체 지원: JSP 컨텍스트에 내장된 객체를 바로 사용 가능.
- 표준화된 문법: 여러 JSP 컨테이너에서 동일한 방식으로 동작.
2. EL의 기본 문법
EL 표현식은 ${}
를 사용하여 작성됩니다. 예를 들어, 변수를 출력하려면 다음과 같이 작성합니다:
<p>Welcome, ${username}!</p>
EL에서 사용할 수 있는 연산자
1) 산술 연산자
- 덧셈, 뺄셈, 곱셈, 나눗셈, 나머지 계산을 지원.
- 예:
${a + b}
,${a * b}
,${a % b}
2) 비교 연산자
==
,!=
,<
,>
,<=
,>=
를 지원.- 예:
${price > 100}
,${age == 25}
3) 논리 연산자
- 논리값을 처리하는 연산자:
&&
,||
,!
- 예:
${isAvailable && isInStock}
4) 삼항 연산자
- 조건에 따라 다른 값을 반환.
- 예:
${age >= 18 ? 'Adult' : 'Minor'}
5) 기타 연산자
- null 연산자:
${value ?: 'default'}
(value가 null이면 'default' 반환) - 빈 문자열 확인:
${empty myList}
(컬렉션이 비어 있는지 확인)
3. EL에서 사용하는 암묵적 객체
EL에서는 JSP 내장 객체와 유사한 암묵적 객체를 제공합니다. 이를 통해 다양한 데이터와 상태에 접근할 수 있습니다.
주요 암묵적 객체
객체 이름 | 설명 |
---|---|
pageContext |
JSP의 현재 페이지 컨텍스트에 대한 참조. |
requestScope |
request 범위에 저장된 데이터 접근. |
sessionScope |
session 범위에 저장된 데이터 접근. |
applicationScope |
application 범위에 저장된 데이터 접근. |
param |
요청 파라미터 값에 접근. |
paramValues |
요청 파라미터 값의 배열에 접근. |
header |
HTTP 헤더 값에 접근. |
headerValues |
HTTP 헤더 값 배열에 접근. |
cookie |
클라이언트의 쿠키 값에 접근. |
initParam |
애플리케이션 초기화 매개변수 값에 접근. |
4. EL 태그의 주요 사용법
1) 변수 출력
request
객체에 설정된 값을 EL로 출력:<% request.setAttribute("username", "John"); %> <p>Welcome, ${username}!</p>
2) 스코프별 데이터 접근
- EL은 데이터가 저장된 스코프를 명시적으로 지정할 수 있습니다.
<% request.setAttribute("message", "Request Scope"); %> <% session.setAttribute("message", "Session Scope"); %> <p>Request: ${requestScope.message}</p> <p>Session: ${sessionScope.message}</p>
3) 요청 파라미터 접근
- HTTP 요청 파라미터 값을 EL로 접근:
<form method="GET" action="example.jsp"> <input type="text" name="name" /> <button type="submit">Submit</button> </form> <p>Your name: ${param.name}</p>
4) 반복문 데이터 출력
c:forEach
태그와 EL을 함께 사용하여 데이터 출력:<c:forEach var="item" items="${items}"> <p>${item}</p> </c:forEach>
5) 조건 처리
c:if
와 함께 조건 처리:<c:if test="${age >= 18}"> <p>You are an adult.</p> </c:if>
5. EL에서 객체와 프로퍼티 접근
JavaBean 프로퍼티 접근
EL은 Java 객체의 프로퍼티에 간단히 접근할 수 있습니다.
<%
class User {
private String name;
public String getName() { return name; }
public void setName(String name) { this.name = name; }
}
User user = new User();
user.setName("John Doe");
request.setAttribute("user", user);
%>
<p>${user.name}</p>
컬렉션과 배열 접근
- List나 Map에 접근:
<% List<String> list = Arrays.asList("Apple", "Banana", "Cherry"); %> <% request.setAttribute("fruits", list); %> <c:forEach var="fruit" items="${fruits}"> <p>${fruit}</p> </c:forEach>
6. EL의 장점과 단점
장점
- 간결한 문법: JSP에서 Java 코드를 대체하여 코드 간소화.
- 내장 객체 활용: HTTP 요청, 세션, 쿠키 등의 데이터를 쉽게 다룸.
- 표준화: 모든 JSP 컨테이너에서 동일하게 동작.
단점
- 복잡한 로직 처리 한계: EL은 단순한 데이터 접근에 적합하며, 복잡한 로직은 Java 코드에서 처리해야 함.
- 디버깅 어려움: EL 표현식에서 오류가 발생하면 디버깅이 어렵다.
7. EL 활용 예제: 로그인 상태 표시
다음은 EL을 사용하여 로그인 상태를 표시하는 간단한 JSP 코드입니다.
<%
String username = (String) session.getAttribute("username");
if (username == null) {
session.setAttribute("username", "Guest");
}
%>
<p>Welcome, ${sessionScope.username}!</p>
8. 결론
EL은 JSP에서 데이터를 쉽게 다룰 수 있도록 도와주는 강력한 도구입니다. 암묵적 객체와 간결한 문법을 통해 코드의 가독성을 높이고 유지보수를 용이하게 합니다. EL의 기본 문법과 주요 사용법을 익혀 프로젝트에 적용하면 효율적이고 직관적인 JSP 페이지를 작성할 수 있습니다.
반응형
'개발 > 기타' 카테고리의 다른 글
Java 비즈니스 아키텍처의 파일명 및 변수명 명명 규칙: 효율적이고 유지보수 가능한 코드를 위한 가이드 (0) | 2025.01.16 |
---|---|
Spring 태그 라이브러리(Spring Tag Library)란? (0) | 2025.01.15 |
JSTL 태그의 종류와 사용법 (1) | 2025.01.15 |
하나의 서버에서 여러 사이트 간 데이터 조회, 수정, 등록 구현 방법 (0) | 2025.01.14 |
다양한 DB의 종류와 장점 및 단점 (0) | 2025.01.14 |