0%

200830 TIL

Expression Language

  • 표현 언어가 제공하는 기능

    • JSP의 scope에 맞는 속성 사용
    • 집합 객체에 대한 접근 방법 제공
    • 수치 연산, 관계 연산, 논리 연산자 제공
    • Java class method 호출 기능 제공
    • 표현 언어만의 기본 객체 제공
    • Java 코드보다 조금 깔끔하게 JSP 파일을 작성 할 수 있다.
  • 표현언어의 표현 방법

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

표현 언어의 데이터 타입

  • boolean type: true, false
  • integer type: 0-9
  • floating point type
  • string type: 따옴포 (‘ or “)로 둘러싼 문자열
    • 작은 따옴표를 사용해서 표현할 경우 값에 표현된 작은 따옴표는 '와 같이 \기호와 함께 사용해야 한다.
    • \ 기호 자체는 \ \로 표시한다.
  • null type: null

객체 접근 규칙

1
${<expr1>.<expr2>}
  • expr1이 expr2가 null이면 null을 반환한다.
  • expr1이 Map일 경우 expr2를 key로한 값을 반환한다.
  • expr1이 List나 Array이면, expr2가 정수일 경우 해당 정수번째 index에 해당하는 값을 반환한다.
    • 만약 정수가 아닐 경우 오류가 발생한다.
  • expr1이 객체일 경우는 expr2에 해당하는 getter method에 해당하는 method를 호출한 결과를 반환한다.

수치 연산자

  • +, -, *, / or div
  • 숫자가 아닌 객체와 수치 연산자를 사용할 경우 객체를 숫자 값으로 변환 후 연산자를 수행 : ${“10”+1} → ${10+1}
  • 숫자로 변환할 수 없는 객체와 수치 연산자를 함께 사용하면 에러를 발생 : ${“열”+1} → 에러
  • 수치 연산자에서 사용되는 객체가 null이면 0으로 처리 : ${null + 1} → ${0+1}

비교 연산자

  • == 또는 eq
  • != 또는 ne
  • < 또는 lt
  • > 또는 gt
  • <= 또는 le
  • >= 또는 ge
  • 문자열 비교: ${str == '값'} str.compareTo("값") == 0 과 동일

논리 연산자

  • && 또는 and
  • || 또는 or
  • ! 또는 not

표현 언어 비활성화

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

empty 연산자

1
empty<value>
  • 값이 비어 있거나 zero 값인 경우 true를 리턴 그외의 경우 false를 리턴

비교 선택 연산자

1
2
3
<expr> ? <value1> : <value2>

- `<expr>`의 값이 `true`이면 value1을 리턴하고, `false`이면 value2를 리턴

Scope별 EL의 사용

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<%
pageContext.setAttribute("p1", "page scope value");
request.setAttribute("r1", "request scope value");
session.setAttribute("s1", "session scope value");
application.setAttribute("a1", "application scope value");
%>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
pageContext.getAttribute("p1") : <%=pageContext.getAttribute("p1") %>
pageContext.getAttribute("p1") : ${pageScope.p1}<br>
request.getAttribute("r1") : ${requestScope.r1}<br>
session.getAttribute("s1") : ${sessionScope.s1}<br>
application.getAttribute("a1") : ${applicationScope.a1}<br>
<br><br>
pageContext.getAttribute("p1"): ${p1}<br>
request.getAttribute("r1"): ${r1}<br>
session.getAttribute("s1"): ${s1}<br>
application.getAttribute("a1"): ${a1}<br>
</body>
</html>

EL 연산

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%
request.setAttribute("k", 10);
request.setAttribute("m", true);
%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
k: ${k }<br>
k + 5: ${ k + 5 }<br>
k - 5: ${ k - 5 }<br>
k * 5: ${ k * 5 }<br>
k / 5: ${ k div 5 }<br>


k: ${k }<br>
m: ${m }<br>

k > 5: ${ k > 5 }<br>
k < 5: ${ k < 5 }<br>
k <= 10: ${k <= 10 }<br>
k >= 10: ${k >= 10 }<br>
m: ${m }<br>
!m: ${!m }<br>

</body>
</html>