Servlet & JSP

EL(Expression Language)

1space 2025. 7. 13. 15:08

뉴렉처 [Servlet&JSP 프로그래밍]강의를 통해 공부한 내용을 정리한 글입니다.

 

EL(Expression Language)이란?

EL은 JSP에서 데이터를 간단하게 표현할 수 있는 언어입니다.
기존에는 데이터를 다음과 같이 꺼냈습니다:

<%= request.getAttribute("cnt") %>

하지만 EL을 사용하면 이렇게 간단하게 표현합니다:

${cnt}

복잡한 Java 코드를 쓰지 않아도 되기 때문에, 가독성이 좋고 유지보수가 쉬운 코드가 됩니다.

 

저장된 값을 EL로 꺼내는 예제 설명

숫자 예제

request.setAttribute("cnt", 30);

→ JSP에서 출력:

${cnt} // 출력값: 30

EL은 request.getAttribute("cnt")와 동일한 의미입니다.

리스트 예제

List list = new ArrayList();
list.add("1");
list.add("test");
request.setAttribute("list", list);

→ JSP에서 출력:

${list[0]} // 출력값: "1"
${list[1]} // 출력값: "test"

list.get(0)과 같은 의미로, 인덱스를 통해 리스트 요소를 출력할 수 있습니다.

맵(Map) 예제

Map n = new HashMap();
n.put("title", "제목");
request.setAttribute("n", n);

→ JSP에서 출력:

${n.title} // 출력값: "제목"

((Map)request.getAttribute("n")).get("title")과 같은 의미입니다.

 

 

EL의 탐색 우선순위 (중요‼️)

EL은 ${cnt}라고 썼을 때, 어디에서 cnt를 찾을지 아래 순서로 탐색합니다:

  1. pageScope
  2. requestScope
  3. sessionScope
  4. applicationScope

즉, 동일한 키가 여러 범위에 존재해도 가장 먼저 발견된 값을 반환합니다.

예: pageScope에 "cnt"가 있으면 requestScope의 "cnt"는 무시됨

이런 방식으로 충돌을 피하고, 예측 가능한 값을 꺼낼 수 있게 됩니다.

 

EL에서 클라이언트의 입력값 접근하기

EL은 서버에서 저장한 값뿐만 아니라, 클라이언트가 보낸 정보도 꺼낼 수 있습니다.

종류 EL 표현 설명
파라미터 값 ${param.cnt} ?cnt=30 처럼 전달된 값
헤더 값 ${header.host} 또는 ["host"] 요청 헤더 정보
쿠키 값 ${cookie.cookieName.value} 쿠키 값 추출
 

 

EL에서 pageContext 객체 사용

EL로 현재 요청의 HTTP method 등을 확인할 수도 있습니다:

${pageContext.request.method} // 예: GET, POST

→ 원래는 아래처럼 길게 작성하던 걸:

<%= pageContext.getRequest().getMethod() %>

→ EL 덕분에 한 줄로 간결하게 표현할 수 있는 것입니다.

 

마무리 정리

EL 표현 대상 실제 의미
${cnt} 기본 범위 우선 탐색 page → request → session → application 에서 cnt 탐색
${list[0]} List 객체 ((List)request.getAttribute("list")).get(0)
${n.title} Map 객체 ((Map)request.getAttribute("n")).get("title")
${param.cnt} 클라이언트 입력값 request.getParameter("cnt")
${pageContext.request.method} 요청 메서드 GET, POST 등 표현

 

 

'Servlet & JSP' 카테고리의 다른 글

JSP MVC model2  (0) 2025.07.12
JSP MVC model1  (0) 2025.07.12
스파게티 코드  (0) 2025.07.11
JSP의 내장객체  (0) 2025.07.11
JSP 코드블록  (0) 2025.07.11