Back-End

[EL&JSTL] EL(Expression Language)이란? EL의 개념

Miiko 2021. 10. 12. 21:11

https://docs.oracle.com/javaee/6/tutorial/doc/gjddd.html

 

Expression Language - The Java EE 6 Tutorial

Chapter 6Expression Language This chapter introduces the Expression Language (also referred to as the EL), which provides an important mechanism for enabling the presentation layer (web pages) to communicate with the application logic (managed beans). The

docs.oracle.com

<EL(Expression Language)에 대한 공식 문서>

 

 

 

 

| EL(Expression Language) 이란?

 

 

- JSP 스크립트의 표현식을 대신하여 속성 값을 쉽게 출력하도록 고안된 언어

 

- 출력, 반복처리를 태그기반으로 제공

 

- 기존 Expression Tag(<%= %>) 대체 

 

 

 Expression Tag(<%= %>) 대신 

 

${표현식}

 

으로 간단하게 사용할 수 있다. 

 

 

 

 

 

 

| EL로 Data를 가져오는 '순서'

 

JspContext → ServletRequest → HttpSession → ServletContext

 

위 순서대로 검색 후 가장 처음에 발견된 객체를 가져온다.

 

( 단, 탐색할 저장소 직접 지정 가능

 

ex > ${request.sum}으로 검색 시 ServletRequest 에서만 객체를 탐색 )

 

 

 

 

| (참고)EL에서 보관소를 참조할때 사용하는 이름

 

영역 서블릿 보관소
pageScope JspContext
requestScope ServletRequest
sessionScope HttpSession
applicationScope ServletContext

 

 

 

 

 

 

 

|⭐ EL로 Data를 가져오기 위한 DTO 작성법

 

- DTO 작성 시 JavaBeans 형태로 작성한다.(JavaBeans규약)

 

| (참고)JavaBeans규약이란?

 

1. 기본 생성자가 존재해야 한다.

 

2. 멤버변수의 접근제어자는 private로 선언되어야 한다.


3. 멤버변수에 접근 가능한 getter 와 setter 메서드가 존재하고 public으로 선언되어야 한다.

 

package . . .;

public class User {
	
	
	// 2. 멤버변수의 접근제어자는 private로 선언되어야 한다.
	private String id;
	private String password;
	
	// 1. 기본 생성자가 존재해야 한다.
	public User() {}
	
	public User(String id, String password) {
		super();
		this.id = id;
		this.password = password;
	}

	
	// 3. 멤버변수에 접근 가능한 getter 와 setter 메서드가 존재하고 public으로 선언되어야 한다.
	public String getId() {
		return id;
	}

	public void setId(String id) {
		this.id = id;
	}

	public String getPassword() {
		return password;
	}

	public void setPassword(String password) {
		this.password = password;
	}	
}

 

여기서, get과 set을 뺀 멤버변수명프로퍼티가 된다.

 

(예> id와 password)

 

따라서 getter는 반드시 있어야 한다.

 

 

 

 

 

 

 

| 프로퍼티 표현법

 

[]연산자 사용  Dot 사용
${user["name"]} ${user.name}

 

 

 

간단한 EL구문 사용 예 (쿠키값 조회)

// EL 사용 전
Cookie cookies[] = request.getCookies();
if(cookies != null) {
	for(Cookie cookie : cookies) {
		if("id".equals(cookie.getName())) {
			break;
		}
	}
}

// EL 사용 후(한 줄로 표현 가능)
${cookie.userId.value}




// (참고)프로퍼티가 아닌 일반 메서드는 ()를 붙여준다.
${user.size()}