[JSP] 14. 표현 언어(Expression Language)

2022. 4. 28. 18:15JAVA/Servlet&JSP

1. 표현 언어란 무엇인가?

  • 표현 언어는 기존의 JSP의 데이터를 표현하기 위해 스크립트릿(<% %>)이나 표현식(<%= %>)을 대체하여 데이터를 표현하기 위한 새로운 스크립트 언어입니다.

표현 언어의 기능

  • JSP의 네 가지 기본 객체(page, request, session, application)가 제공하는 영역의 속성을 사용
  • 집합 객체에 대한 접근 방법을 제공
  • 수치 연산(+,-,*,/,%), 관계 연산(==, !=, >, <, >=, <=), 논리 연산자(&&, ||, !) 제공
  • 자바 클래스 메서드 호출 기능 제공
  • 표현 언어만의 기본 객체 제공

1.1 표현 언어의 표현 방법

${expr}

<jsp:include page="/moudle/${skin.id}/header.jsp" flush="true"/>

<b>${sessionScope.member.id}</b>님 감사합니다.

 

2. 표현 언어의 기본 객체

  • pageContext : JSP의 page 기본 객체와 동일
  • pageScope : page 영역
  • requestScope : request 영역
  • sessionScope : session 영역
  • applicationScope : application 영역
  • param : request.getParameter(이름)의 결과와 동일
  • paramValues : request.getParameterValues(이름)의 결과와 동일
  • header : request.getHeader(이름)의 결과와 동일
  • headerValues : request.getHeaders(이름)의 결과와 동일
  • cookie : request.getCookies()의 반환 결과인 Cookies 배열로 매핑
  • initParam : application.getinitParameter(이름)의 결과와 동일
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%
	request.setAttribute("name", "김용환");
%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
	요청 URL: ${pageContext.request.requestURL}<br/>
	request의 name 속성: ${requestScope.name}<br/>
	code 파라미터: ${param.code}
</body>
</html>

3. 표현 언어의 기본

3.1 EL의 데이터 타입

  • boolean 타입 : true, false
  • Integer 타입
  • 실수 타입
  • 문자열 타입
  • 널 타입

3.2 객체에 접근하기

${member.memberid.value}
  • Member 클래스 타입의 member 객체의 memberid 값을 가져옴

3.3 객체의 탐색

${pageScope.NAME} => ${NAME} (NAME 속성이 설정되어 있으면 생략이 가능함)

저장영역 탐색 순서

PAGE -> REQUEST -> SESSION -> APPLICATION

3.4 수치 연산자

  • + : 덧셈
  • - : 뺄셈
  • * : 곱셈
  • / 또는 div : 나눗셈
  • % 또는 mod : 나머지

3.5 비교 연산자

  • == 또는 eq
  • != 또는 ne
  • < 또는 lt
  • > 또는 gt
  • <= 또는 le
  • >= 또는 ge

3.6 논리 연산자

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

3.7 empty 연산자

empty <값>
  • <값>==null : true
  • <값>=="" : true
  • <값>==길이가 0인 배열 : true
  • <값>==빈 Map : true
  • <값>==빈 Collection(List, Map, Array 등) : true
  • 이 외의 경우에는 false를 리턴

3.8 비교 선택 연산자

<수식> ? <값1> : <값2>
  • 수식의 결과가 true이면 값1을 반환하고 false이면 값2를 반환합니다.

3.9 연산자 우선순위

  • []
  • ()
  • -(단일) not ! empty
  • * / div % mod
  • + -
  • < > <= >= lt gt le ge
  • == != eq ne
  • && and
  • || or
  • ?:

4. 표현 언어에서 클래스 함수 호출

<%@ page import="클래스 이름" %>을 임포트하고 메서드를 호출합니다.

<%@page import="java.time.LocalDateTime"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
	${LocalDateTime.now()}
</body>
</html>

 

References

source code : https://github.com/yonghwankim-dev/JSP2.0
JSP 2.0 프로그래밍 기초부터 중급까지