포스트

Expression Language

Expression Language

EL : Expression Language

  • 표현 언어는 변수의 값을 출력할 때 사용하는 스크립트 언어
  • 모델2 방식으로 웹 어플리케이션을 개발할 때 주로 사용
  • 4가지 영역(page, request, session, application)에 저장된 속성에 접근할 때 사용
  • 사용법이 간결하고, 예외와 형변환에 관대하다는 특징

제공되는 기능

  • JSP 내장 객체의 영역에 담긴 속성을 사용 가능
  • 산술 연산, 비교 연산, 논리 연산 가능
  • 자바 클래스에 정의된 메서드를 호출 가능
  • 표현 언어만의 객체를 통해 JSPP와 동일한 기능을 수행

사용법

${속성}

  • 속성은 영역에 저장된 속성을 뜻함
  • 변수나 값을 바로 쓸 수 있던 표현식과는 다름
  • JSP에서 생성한 변수를 접근하려면, 반드시 영역에 저장 후 사용

request 영역에 저장하였다면 –> <h2>${ requestScope.saveVar} </h2> –> 와 같이 출력

HTML, javascript, CSS 어디서든 사용 가능

1
2
<c:set var="elVar" value="${ elVar }"/> // 액션 태그와 함께 사용
<jsp:include page="${pathVar}"/> // JSTL과 함께 사용

JSP 스크립트 요소(선언부, 표현식, 스크립틀릿)에서는 사용 불가

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<%!

void myMethod($ {
    errorVar
}){
        // 코드
        }
        %> // 선언부 사용으로 에러 발생

<%@include file="${ errorVar }"%> // 스크립틀릿에서 사용 에러 발생

<%=

$ {
    errorVar
} %> // 표현식에서 사용 에러 발생

객체 표현 방식

.(점)이나 [](대괄호)를 사용

1
2
3
4
5
6
7
8
9
10
11
$ {
    param.name
}

$ {
    param["name"]
}

$ {
    param['name']
}

**속성명에 특수 기호나 한글이 포함되었을 때는 대괄호만 사용

${ header["user-agent"] } // 가능
${ header.user-agent } // 에러 발생
${ King['한글'] } // 가능
${ King.한글 } // 에러 발생

내장 객체

4가지 영역에 속성값 저장하고 읽어오기

  • pageScope : pageContext 내장 객체와 같이 page 영역에 저장된 속성값 읽기
  • requestScope : request 내장 객체와 같이 request 영역에 저장된 속성값 읽기
  • sessionScope : session 내장 객체와 같이 session 영역에 저장된 속성값 읽기
  • applicationScope : application 내장 객체와 같이 application 영역에 저장된 속성값 읽기

폼값 처리하기

  • param : request.getParameter(“매개변수명”)과 동일하게 요청 매개변수의 값을 받음
  • paramValues : request.getParameterValues(“매개변수명”)과 동일하게 요청 매개변수의 값을 문자열 배열로 받음 (주로 다중 선택이 가능한 checkbox를 통해 전달된 폼값을 받을 때 사용)

쿠키나 헤더값 읽기

  • cookie : 쿠키를 읽을 때 사용
  • header : request.getHeader(헤더명)와 동일하게 헤더값을 읽을 때 사용
  • headerValues : request.getHeaders(헤더명)와 동일하게 헤더값을 배열 형태로 읽을 때 사용
  • initParam : web.xml에 설정한 컨텍스트 초기화 매개변수를 읽을 때 사용
  • pageContext : JSP의 pageContext 내장 객체와 동일한 역할
이 기사는 저작권자의 CC BY-NC 4.0 라이센스를 따릅니다.