본문 바로가기

Web/기타

[EL] EL(1)

표현 언어(Experession Language)

값을 표현하는 데 사용되는 스크립트 언어로써, JSP의 기본 문법을 보완하는 역할을 한다.

JSP의 스크립트 요소(스크립틀릿, 표현식, 선언부)를 제외한 나머지 부분에서 사용될 수 있으며, 표현식을 통해서 표현식보다 편리하게 값을 출력할 수 있다.

${expr}과 같이 사용한다.


※ 표현언어의 기능

∎  JSP의 스코프에 맞는 속성 사용

∎  집합 객체에 대한 접근 방법 제공

∎  수치, 관계, 논리 연산자 제공

∎  자바 클래스 메소드 호출 기능 제공

∎  표현언어만의 기본 객체 제공


예제

1
2
<jsp:include page="/module/${skin.id}/header.jsp" flush="true" />
<b>${sessionScope.member.id}</b>님 환영합니다.
cs



표현언어의 기본객체

 기본 객체

 설명 

 pageContext

 JSP의 page 기본 객체와 동일 

 pageScope 

 pageContext 기본 객체에 저장된 속성의 <속성, 값> 매핑을 저장한 Map 객체

 requestScope

 request 기본 객체에 저장된 속성의 <속성, 값> 매핑을 저장한 Map 객체

 sessionScope

 session 기본 객체에 저장된 속성의 <속성, 값> 매핑을 저장한 Map 객체

 applicationScope

 application 기본 객체에 저자왼 속성의 <속성, 값> 매핑을 저장한 Map 객체

 param

 요청 파라미터의 <파라미터 이름, 값> 매핑을 저장한 Map 객체

 파라미터 값의 타입은 String으로써, request.getParameter(이름)의 결과와 동일

 paramValues

 요청 파라미터의 <파라미터 이름, 값 배열> 매핑을 저장한 Map 객체

 파라미터 값의 타입은 String[]으로써, request.getParameterValues(이름)의 결과와 동일

 header

 요청 정보의 <헤더이름, 값> 매핑을 저장한 Map 객체

 request.getHeader(이름)의 결과와 동일

 headerValues

 요청 정보의 <헤더이름, 값 배열> 매핑을 저장한 Map 객체

 request.getHeaders(이름)의 결과와 동일

 cookie

 <쿠키이름, Cookie> 매핑을 저장한 Map 객체

 request.getCookies()로 구한 Cookie 배열로부터 매핑을 생성

 initParam

 초기화 파라미터의 <이름, 값> 매핑을 저장한 Map 객체

 application.getInitParameter(이름)의 결과와 동일

예제

1
2
3
4
5
6
7
8
9
10
11
12
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<% request.setAttribute("name""hh_lin"); %>
<html>
    <head>
        <title>EL Object</title>
    </head>
    <body>
        요청 URI : ${pageContext.request.requestURI} <br>
        request의 name 속성 : ${requestScope.name} <br>
        code 파라미터 : ${param.code}    
    </body>
</html>
cs



표현언어의 데이터 타입

 타입

값 

 Boolean

 true / false 

 정수

 0~9로 이루어진 정수 값. 음수의 경우 '-'가 붙음.

 실수

 0~9로 이루어져 있으며, 소수점을 사용할 수 있음. 

 3.24e3과 같이 지수형으로 표현 가능함.

 문자열

 따옴표(' 또는 ")로 둘러싼 문자열. 

 만약 작은 따옴표를 사용해서 표현할 경우 값에 포함된 작은 따옴표는 \기호와 같이 사용해야 한다. (\')

 Null 

 null


객체 접근 규칙

${<표현1>.<표현2>}

  • 표현1이나 표현2가 null이면 null을 반환한다.
  • 표현1이 Map일 경우 표현2를 Key로한 값을 반환한다.
  • 표현1이 List나 배열이면 표현2가 정수일 경우 index에 해당하는 값을 반환한다. 만약 정수가 아닐 경우에는 오류가 발생한다.
  • 표현 1이 객체일 경우는 표현2에 해당하는 getter 메소드에 해당하는 메소드를 호출한 결과를 반환한다.

산술 연산자

+, -, *, / 또는 div, % 또는 mod

∎ 숫자가 아닌 객체와 수치 연산자를 사용할 경우 객체를 숫자 값으로 변환 후 연산자를 수행

     ex) ${"10" + 1} => ${10 + 1}

∎ 숫자로 변환할 수 없는 객체와 수치 연산자를 함께 사용하면 에러를 발생

     ex) ${"hh_lin" + 1} => error

∎ 수치 연산자에서 사용되는 객체가 null이면 0으로 처리

     ex) ${null + 1} => ${0 + 1}



비교 연산자

  • == 또는 eq
  • != 또는 ne
  • < 또는 lt
  • > 또는 gt
  • <= 또는 le
  • >= 또는 ge
  • 문자열 비교: ${str == '값'} str.compareTo('값') == 0과 동일
논리 연산자
  • && 또는 and
  • || 또는 or
  • ! 또는 not

empty 연산자

empty<값>

  • <값>이 null이면 true를 리턴한다.
  • <값>이 빈 문자열("")이면 true를 리턴한다.
  • <값>이 길이가 0인 배열이면 true를 리턴한다.
  • <값>이 빈 Map이면 true를 리턴한다.
  • <값>이 빈 Collection이면 true를 리턴한다.
  • 이 외의 경우에는 false를 리턴한다.


비교선택 연산자

<수식> ? <값1> : <값2>

  • <수식>의 결과 값이 true이면 <값1>을, false이면 <값2>를 리턴한다.


연산자 우선순위

  1.  [] .
  2.  ()
  3.  - (단일) not ! empty
  4.  * / div % mod
  5.  + -
  6.  < > <= >= lt gt le ge
  7.  == != eq ne 
  8.  && and
  9.  || or
  10.  ? :

표현 언어 비활성화 : JSP에 명시하기

1
<%@ page isELIgnored="true">
cs

Servlet 스펙에 따라 EL지원이 다르다. Servlet 2.5버전부터 EL이 기본적으로 사용되고, 이전에는 EL이 무시되었다.










참고자료

https://www.edwith.org/

'Web > 기타' 카테고리의 다른 글

[JSTL] JSTL - set, remove  (0) 2018.12.27
[JSTL] JSTL - if, choose, forEach, import  (0) 2018.12.27
[JSTL] JSTL 개요  (0) 2018.12.27
[EL] EL(2)  (0) 2018.12.26
[WEB] HTML 기초(id, class, data 속성)  (0) 2018.11.17