EL태그는 스크립트렛을 쓰지 않고 간단히 데이터를 뽑아낼 수 있는 JSP에서 지원해 주는 태그이다.
◆ EL(Expression Language)태그
MVC패턴에서 컨트롤러를 통하여 세팅 된 데이터를 이용하여 JSP뷰를 만들 때,
스크립트렛(<% ~ %>)등으로 데이터를 뽑아내서 HTML페이지를 만들게 된다.
하지만 EL, JSTL을 쓰면 스크립트렛을 쓰지 않고 좀 더 편하게 데이터를 출력해 줄 수 있다.
( EL태그는 스프링에서 지원하는 것이 아닌 JSP에서 지원하는 태그이다. )
▶ EL태그 사용법
EL태그는 “${ 키 }“의 형식으로 뽑아낸다.
예를들어, MVC패턴의 Controller에서 Model또는 Map으로 설정한 데이터들을 뽑아낼 때는
아래와 같다.
▶ request.getAttribute(), session.getAttribute() 데이터 출력
-
- 키에 설정된 값이 List계열 컬렉션 또는 배열일 때
-
${ 키[index] }
로 접근이 가능하다.
-
- 키에 설정된 값이 Map계열일 때
-
${ 키.Map객체키 }
로 접근이 가능하다.
-
- 키에 설정된 값이 커스텀객체 일때
-
Map과 동일한 형식
으로 ${ 키.필드명}으로 접근이 가능하다.
단, 이렇게 뽑아내기 위해서는 해당 커스텀 객체에 getter()메서드가 있어야 한다.
( 즉, 해당 객체의 getter()를 호출하는 것이므로, getter()메서드가 있는 객체라면 가능하다. )
-
- uesBean 객체
- ueseBean객체 또한 아래와 같은 형식으로 뽑아낼 수 있다.
-
- session으로 설정했을 때
- session.getAttribute()도 동일한 방법으로 사용할 수 있으나,
session의 경우에는 request와 키가 겹칠 수 있기 때문에 중복된 키가 있을 경우
${ sessionScope.키 }의 형식으로 session과 request의 데이터 값을 구분 지을 수도 있다.
▶ request.getParameter() 데이터 출력
파라미터로 넘어오는 값들은 ${ param.키 }로 뽑아야 한다.
▶ 쿠키값 출력
쿠키 값은 출력할 때는 키와 같이 value라는 속성도 명시해 준다.
▶ 내장객체의 get메서드 데이터 출력
jsp의 내장객체들은 pageContext의 자식 객체들이기 때문에 pageContext를 이용하여 뽑아내고, 해당 내장객체들의 get메서드에서 get을 제외한 메서드명을 써주면 해당 메서드가 반환하는 것을 뽑아낼 수 있다.
◆ EL태그 내장객체
-
- pageScope: page객체 참조
- ${pageSocpe.키} = <%=page.getAttribute(“키”)%>
-
- requestScope: request객체 참조
- ${requestScope.키} = <%=request.getAttribute(“키”)%>
-
- sessionScope: session객체 참조
- ${sessionScope.키} = <%session.getAttribute(“키”)%>
-
- applicationScope: application객체 참조
- ${applicationScope.키} = <%=applicastion.getAttribute(“키”)%>
-
- parm: 요청파라미터 참조
- %{param.키%} = <%=request.getParameter(“키”)%>
- paramValues: 요청파라미터(배열)참조
- initParam: context초기화 파라미터 참조
- cookie: cookie참조
◆ EL태그 기능
-
EL태그는 스크립트에서도 사용이 가능하며, 스트링으로 똑같이 써주면 된다.
-
${“<b>태그!</b>” } 이런 식으로 변수명이 아닐 시에는 그냥 html출력으로 인식
-
EL태그는 주석에서도 출력이 되기 때문에 주석에서 ${}로 아무것도 처리하지 않으면 에러가 발생한다.
따라서 출력을 무시하는 주석인 <%– –>로 처리해야 한다. -
EL태그에서도 ${ m == 10 } 등의 비교연산 등이 가능하지만, 해당 값을 false등으로 출력하는 용도로만 사용이 가능하고, if 또는 for문으로 돌리기 어렵다. 따라서 후에 배울 JSTL와 같이 사용된다.
( 문자열 비교 또한 == 로 하면 된다, 또한 사칙연산의 경우에는 자동 파싱 되기 때문에 파싱 할 필요도 없다. 또한 문자열 표기는 ‘ ’(작은따옴표)로 한다. )
-
EL태그 안에서는 ${‘<b>’+word+’</b> }등의 문자열 더하기는 안 되고, EL태그 안에서 사용하는 변수들은 문자열 출력이 아닌 해당 변수에 들어있는 값이 나오게 된다.
( 문자열 더하기가 되어있는 변수는 사용이 가능 )
-
- EL태그 비교연산 키워드
- JSTL과 함께 사용할 때 조건문등은 EL태그로 표현하기 때문에 EL태그에서는 비교연산을 좀 더 간단히 할 수 있도록 키워드를 제공한다.
-
eq
: ==과 같은연산
-
ne
: !=과 같은연산
-
empty
: 객체값이 비어있는지 확인 !empty등으로 사용가능
▶ javasscript에서 EL태그의 사용
javascript에서도 EL태그를 사용할 수 있게 지원되며, 따옴표 없이 숫자를 쓰게 될 경우 자동으로 변환또한 가능하다.
하지만, jsp파일만 컴파일 되기 때문에 같은 jsp페이지 내부의 <script>태그 안에서만 EL태그가 동작하며, 외부로 부터 include된 js파일에서의 EL태그 사용은 불가능하다.
미리 input hidden등으로 숨겨 태그 객체를 가져와 불러올 순 있다.
※ 객체를 뽑아낼 경우 해당 객체의 toString()메서드가 나오게 된다.