https://docs.oracle.com/javaee/6/tutorial/doc/gjddd.html
<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()}
'Back-End' 카테고리의 다른 글
[ERROR Solution] Rest API 활용 중 생긴 에러(MissingServletRequestParameterException) (0) | 2021.10.30 |
---|---|
[ERROR Solution] No mapping for GET (0) | 2021.10.21 |
[Spring Framework]스프링 프레임워크란(Spring Framework)? (0) | 2021.10.20 |
[MVC패턴]MVC(Model-View-Controller)패턴이란? (0) | 2021.10.14 |
[EL&JSTL] EL(Expression Language) 사용방법 (0) | 2021.10.12 |