반응형

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의 주요 특징

  1. 간단한 구문: ${expression} 형식으로 데이터를 표현.
  2. 자동 형 변환: 데이터 타입에 관계없이 자동으로 형 변환.
  3. 암묵적 객체 지원: JSP 컨텍스트에 내장된 객체를 바로 사용 가능.
  4. 표준화된 문법: 여러 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>

컬렉션과 배열 접근

  • ListMap에 접근:
     <% 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의 장점과 단점

장점

  1. 간결한 문법: JSP에서 Java 코드를 대체하여 코드 간소화.
  2. 내장 객체 활용: HTTP 요청, 세션, 쿠키 등의 데이터를 쉽게 다룸.
  3. 표준화: 모든 JSP 컨테이너에서 동일하게 동작.

단점

  1. 복잡한 로직 처리 한계: EL은 단순한 데이터 접근에 적합하며, 복잡한 로직은 Java 코드에서 처리해야 함.
  2. 디버깅 어려움: 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 페이지를 작성할 수 있습니다.

반응형

+ Recent posts