코코무의 코딩캔버스

[JSP] EL(Expression Language) 본문

JSP

[JSP] EL(Expression Language)

코코무 2024. 2. 7. 17:19

 

EL(Expression Language) 표현언어

 

이전에는 불편하게 <%%>으로 값을 가져왔었다. 하지만 이제는 EL을 사용하여 백단의 데이터를 좀 더 간단하고 간편히 가져올 수 있다.

 

변수의 값을 표현식보다 편하게 출력할 수 있도록 한다. JSP의 기본 문법을 보완하는 역할을 하며 4가지 영역에 저장된 속성도 더 쉽게 읽을 수 있다. 

 

모델 2 방식으로 웹 애플리케이션을 개발할 때 주로 사용한다.

MVC를 이용한 서블릿에서 사용한다. 저장된 4가지 영역에 속성을 접근할 때 순서 JSP에서 사용하는 것이 불편하다. EL을 배우고 난 후 JSTL, 서블릿과 응용하여 좀 더 간결한 코드로 웹 구현하는 것이 목표이다.

 

객체 표현 방식

 

EL에서 객체를 표현할 때 . 이나 [ ]를 사용한다.

${ param.name }
${ param["name"]}
${ param['name']}

 

 

속성명에 특수기호나 한글이 포함될 때는 대괄호만 사용한다.

${ header["user-agent"]} //가능
${ header.user-agent } //불가능
${ King['한글']} //가능
${ King.한글 } //불가능

대괄호 사용 시 속성명에서는 큰 따옴표와 작은 따옴표 모두 사용 가능하다.

 

 

내장객체를 사용할 수 있다.

- pageScope: page 영역에 저장된 속성 값을 읽어온다.

- requestScope: request 영역에 저장된 속성 값을 읽어온다.

- sessionScope: session 영역에 저장된 속성 값을 읽어온다.

- applicationScope: application 영역에 저장된 속성 값을 읽어온다.

 

 

4가지 영역 테스트(page, request, session, application)

<%
	pageContext.setAttribute("scopeValue", "페이지 영역");
	request.setAttribute("scopeValue", "리퀘스트 영역");
	session.setAttribute("scopeValue", "세션 영역");
	application.setAttribute("scopeValue", "애플리케이션 영역");
	//4가지 영역에 scopeValue라는 같은 이름으로 속성을 저장 후
	//EL의 내장 객체를 통해 각 영역에 저장된 속성 값을 출력해본다.
%>
<body>
	<h2>ImplicitObjMain</h2>
	<h3>각 영역에 저장된 속성 읽기</h3>
	<ul>
		<li>페이지 영역: ${ pageScope.scopeValue }</li>
		<li>리퀘스트 영역: ${ requestScope.scopeValue }</li>
		<li>세션 영역: ${ sessionScope.scopeValue }</li>
		<li>애플리케이션 영역: ${ application.scopeValue }</li>
	</ul>
	<h3>영역 지정 없이 저장된 속성 읽기</h3>
	<ul>
		<li>scopeValue: ${ scopeValue }</li>
	</ul>
</body>

 

 

영역에는 모든 객체가 Object 타입으로 저장되어 읽어올 때는 반드시 형 변환 후 사용해야 하고, 게터로 멤버 변수의 값을 가져온다.

EL을 사용하면 이런 번거로운 절차를 생략할 수 있다.

- 형 변환이 필요없고

- 게터 호출 대신 멤버 변수 이름만 쓰면 원하는 값을 출력할 수 있다.

 

EL 내장객체

 

  • cookie

쿠키를 읽을 때 사용(처음 접속 시에는 없지만 다음 접속부터 활성화됨)

 

  • header

request.getHeader(헤더명)와 동일하게 헤더값을 읽을 때 사용

 

  • headerValues

헤더값을 배열로 읽을 때 사용

 

  • initParam

web.xml에 설정한 컨텍스트 초기화 매개변수를 읽을 때 사용

 

  • pageContext

JSP의 pageContext 내장 객체와 동일

 

 

컬렉션 EL 사용

 

EL을 통해서 컬렉션을 자바코드보다 훨씬 간단하게 이용할 수 있다.

 

 

 

EL의 연산자

 

자바와 동일한 기능의 연산자를 제공한다. 다른 점은, 자바에서 사용하는 특수 기호 형태의 연산자 이외에 EL에서는 문자 형태의 연산자도 함께 사용할 수 있다.

 

  • 할당 연산자: = 연산자를 통해서 변수에 값을 할당한다.

1. ${ numberVar = 10 } → 할당과 동시에 출력

2. ${ numberVar = 10;""} → 할당만 하고 출력은 안 함

 

  • 산술 연산자

1. + - *: 덧셈, 뺄셈, 곱셈

2. / | div: 나눗셈

3. % | mod: 나머지

 

  • 비교 연산자

1. > | gt: Greater Than(~보다 크다)

2. > = | ge: 이상

3. < | lt: Less Than(~보다 작다)

4. < = | le: 이하

5. == | eq: 같다

6. != | ne: 같지 않다

 

  • 논리 연산자

1. && | and: 논리 and

2. || | or: 논리 or

3. ! | not: 논리 not