EL태그는 스크립트렛을 쓰지 않고 간단히 데이터를 뽑아낼 수 있는 JSP에서 지원해 주는 태그이다.


◆ EL(Expression Language)태그

MVC패턴에서 컨트롤러를 통하여 세팅 된 데이터를 이용하여 JSP뷰를 만들 때, 스크립트렛(<% ~ %>)등으로 데이터를 뽑아내서 HTML페이지를 만들게 된다.
하지만 EL, JSTL을 쓰면 스크립트렛을 쓰지 않고 좀 더 편하게 데이터를 출력해 줄 수 있다.
( EL태그는 스프링에서 지원하는 것이 아닌 JSP에서 지원하는 태그이다. )


▶ EL태그 사용법

EL태그는 “${ 키 }“의 형식으로 뽑아낸다.
예를들어, MVC패턴의 Controller에서 Model또는 Map으로 설정한 데이터들을 뽑아낼 때는 아래와 같다.

// Controller 에서의 설정
Model.addAttribute( "str", "문자열" );

// jsp파일에서 불러올  
${ str}  // = <%=request.getAttribute("str")%>


▶ request.getAttribute(), session.getAttribute() 데이터 출력

  • 키에 설정된 값이 List계열 컬렉션 또는 배열일 때
    ${ 키[index] }

    로 접근이 가능하다.

Model.addAttribute("array","월","화","수".split(","));
{ $array[0] } //=> '월' 이 나온다.


  • 키에 설정된 값이 Map계열일 때
    ${ 키.Map객체키 }

    로 접근이 가능하다.

Map map = new HashMap();
map.put("name","홍길동"); 
Model.addAttribute("map",map)

$ { map.name} //=> '홍길동'이 나온다.


  • 키에 설정된 값이 커스텀객체 일때
    Map과 동일한 형식

    으로 ${ 키.필드명}으로 접근이 가능하다.
    단, 이렇게 뽑아내기 위해서는 해당 커스텀 객체에 getter()메서드가 있어야 한다.
    ( 즉, 해당 객체의 getter()를 호출하는 것이므로, getter()메서드가 있는 객체라면 가능하다. )


  • uesBean 객체
    ueseBean객체 또한 아래와 같은 형식으로 뽑아낼 수 있다.
<jsp:getProperty name=member property=age/>
${member.age}


  • session으로 설정했을 때
    session.getAttribute()도 동일한 방법으로 사용할 수 있으나,
    session의 경우에는 request와 키가 겹칠 수 있기 때문에 중복된 키가 있을 경우
    ${ sessionScope.키 }의 형식으로 session과 request의 데이터 값을 구분 지을 수도 있다.


▶ request.getParameter() 데이터 출력

파라미터로 넘어오는 값들은 ${ param.키 }로 뽑아야 한다.

// "~.jsp?word=워드" 접근했을 
${ param.word} // 워드가 나온다.


▶ 쿠키값 출력

쿠키 값은 출력할 때는 키와 같이 value라는 속성도 명시해 준다.

${ cookie.쿠키의 .value }


▶ 내장객체의 get메서드 데이터 출력

jsp의 내장객체들은 pageContext의 자식 객체들이기 때문에 pageContext를 이용하여 뽑아내고, 해당 내장객체들의 get메서드에서 get을 제외한 메서드명을 써주면 해당 메서드가 반환하는 것을 뽑아낼 수 있다.

// = <%= request.getContextPath() %>
${ pageContext.request.contextPath }


◆ 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등으로 사용가능

<c:if test="${ '0' eq test }">


▶ javasscript에서 EL태그의 사용

javascript에서도 EL태그를 사용할 수 있게 지원되며, 따옴표 없이 숫자를 쓰게 될 경우 자동으로 변환또한 가능하다.
하지만, jsp파일만 컴파일 되기 때문에 같은 jsp페이지 내부의 &ltscript>태그 안에서만 EL태그가 동작하며, 외부로 부터 include된 js파일에서의 EL태그 사용은 불가능하다.

미리 input hidden등으로 숨겨 태그 객체를 가져와 불러올 순 있다.


※ 객체를 뽑아낼 경우 해당 객체의 toString()메서드가 나오게 된다.