1. 표현 언어란?
- 표현 언어(Expression Language)는 값을 표현하는 데 사용되는 스크립트 언어로서 JSP의 기본 문법을 보완하는 역할을 한다.
2. 표현 언어가 제공하는 기능
- JSP의 스코프(scope)에 맞는 속성 사용
- 집합 객체에 대한 접근 방법 제공
- 수치 연산, 관계 연산, 논리 연산자 제공
- 자바 클래스 메소드 호출 기능 제공
- 표현언어만의 기본 객체 제공
3. 표현언어의 표현방법
${expr}
4. 표현언어의 기본 객체
pageContext
pageScope
requestScope
sessionScope
applicationScope
param
paramValues
header
headerValues 등
5. 표현 언어의 기본 객체 사용 예
${pageContext.request.requestURI}
${requestScope.name}
${param.code}
6. 표현 언어의 데이터 타입
- 불리언 타입 - true와 false
- 정수타입 - 0~9로 이루어진 정수 값 음수의 경우 '-'가 붙음
- 실수타입 - 0~9로 이루어져 있으며, 소수점('.')을 사용할 수 있고, 3.24e3과 같이 지수형으로 표현 가능하다.
- 문자열 타입 - 따옴표( ' 또는" )로 둘러싼 문자열. 만약 작은 따옴표(')를 사용해서 표현할 경우 값에 포함된 작은 따옴표는 \' 와 같이 \ 기호와 함께 사용해야 한다.
- \ 기호 자체는 \\ 로 표시한다.
- 널 타입 - null
7. 객체 접근 규칙
${<표현1}.<표현2>}
- 표현 1이나 표현 2가 null이면 null을 반환한다.
- 표현1이 Map일 경우 표현2를 key로한 값을 반환한다.
- 표현1이 List나 배열이면 표현2가 정수일 경우 해당 정수 번째 index에 해당하는 값을 반환한다.
- 만약 정수가 아닐 경우에는 오류가 발생한다.
- 표현1이 객체일 경우는 표현2에 해당하는 getter메소드에 해당하는 메소드를 호출한 결과를 반환한다.
8. 표현 언어의 수치 연산자
- + : 덧셈
- - : 뺄셈
- * : 곱셈
- / 또는 div : 나눗셈
- % 또는 mod : 나머지
- 숫자가 아닌 객체와 수치 연산자를 사용할 경우 객체를 숫자 값으로 변환 후 연산자를 수행 : ${"10"+1} → ${10+1}
- 숫자로 변환할 수 없는 객체와 수치 연산자를 함께 사용하면 에러를 발생 : ${"열"+1} → 에러
- 수치 연산자에서 사용되는 객체가 null이면 0으로 처리 : ${null + 1} → ${0+1}
9. 비교 연산자
- == 또는 eq
- != 또는 ne
- < 또는 lt
- > 또는 gt
- <= 또는 le
- >= 또는 ge
- 문자열 비교: ${str == '값'} str.compareTo("값") == 0 과 동일
10. 논리 연산자
- && 또는 and
- || 또는 or
- ! 또는 not
11. empty 연산자, 비교선택 연산자
empty <값>
1) <값>이 null이면 true를 리턴한다.
2) <값>이 빈 문자열이면 true를 리턴한다.
3) <값>이 길이가 0인 배열이면 true를 리턴한다.
4) <값>이 빈 Map이면 true를 리턴한다.
5) <값>이 빈 Collection이면 true를 리턴한다.
6) 이 외의 경우에는 false를 반환한다.
예제)
<수식> ? <값1> : <값2>
-> <수식>의 결과값이 true이면 <값1>을 리턴하고, false이면 <값2>를 리턴한다.
12. 연산자 우선순위
- [] .
- ()
- - (단일) not ! empty
- * / div % mod
- + -
- < > <= >= lt gt le ge
- == != eq ne
- && and
- || or
- ? :
13. 표현 언어 비활성화 : JSP에 명시하기
- <%@ page isELIgnored = "true" %>
14. EL 예제 1)
4가지 scope에 값을 넣어서 EL 문법을 사용하여 출력해 보았다.
- pageScope.p1 에서 pageScope을 생략해줘도 출력이 가능하지만, 의미의 명확성을 위해 써 주는 것이 좋다.
* 만약 EL 태그에서 값이 중복될 때에는 범위가 작은 pageScope부터 탐색한다.
<%@ 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") %> <br />
pageContext.getAttribute("p1") : ${pageScope.p1} <br />
request.getAttribute("r1") : ${requestScope.r1} <br />
session.getAttribute("s1") : ${sessionScope.s1} <br />
application.getAttribute("a1") : ${applicationScope.a1} <br />
pageContext.getAttribute("p1") : ${p1} <br />
request.getAttribute("r1") : ${r1} <br />
session.getAttribute("s1") : ${s1} <br />
application.getAttribute("a1") : ${a1} <br />
</body>
</html>
el01.jsp
15. EL 예제 2)
EL문법으로 사칙연산 해보기
<%@ 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 : ${requestScope.k } <br />
k + 5 : ${k + 5 } <br />
k - 5 : ${k - 5 } <br />
k * 5 : ${k * 5 } <br />
k / 5 : ${k div 5 } <br /><br />
k : ${k } <br />
m : ${m } <br />
k > 5 : ${k > 5 } <br />
k < 5 : ${k < 5 } <br />
k <= 5 : ${k <= 5 } <br />
k >= 5 : ${k >= 5 } <br />
m : ${m } <br />
!m : ${!m } <br />
</body>
</html>
el02.jsp
<%@ page isELIgnored = "true" %> 를 추가해서 EL을 비활성화 해보기
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ page isELIgnored = "true" %>
<%
request.setAttribute("k", 10);
request.setAttribute("m", true);
%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
k : ${requestScope.k } <br />
k + 5 : ${k + 5 } <br />
k - 5 : ${k - 5 } <br />
k * 5 : ${k * 5 } <br />
k / 5 : ${k div 5 } <br /><br />
k : ${k } <br />
m : ${m } <br />
k > 5 : ${k > 5 } <br />
k < 5 : ${k < 5 } <br />
k <= 5 : ${k <= 5 } <br />
k >= 5 : ${k >= 5 } <br />
m : ${m } <br />
!m : ${!m } <br />
</body>
</html>
'Programming > JSP & Servlet & Mysql' 카테고리의 다른 글
부스트캠프 7) Web API (0) | 2020.12.16 |
---|---|
부스트캠프 6) JSTL (0) | 2020.12.16 |
부스트캠프 4) 4가지 Scope (0) | 2020.12.14 |
부스트캠프 3) 서블릿과 JSP 연동 (0) | 2020.12.14 |
부스트캠프 2) REST API 란? (0) | 2020.11.21 |