뉴렉처 [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를 찾을지 아래 순서로 탐색합니다:
- pageScope
- requestScope
- sessionScope
- 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 |