반응형

 

 

 

 

 

 

 

 

 

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. 연산자 우선순위

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

 

 

 

 

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

+ Recent posts