유블로그

EL ( Expression Language ) 본문

Web : BackEnd

EL ( Expression Language )

yujeong kang 2020. 10. 11. 20:55

EL

  • 표현을 위한 언어! JSP 스크립트 표현식( <%= %> )을 대신한다.
  • ex) ${ user.name }  -> 왼쪽은 java.util.Map 객체 또는 Java Beans 객체여야 한다. 오른쪽은 맵의 키 or Bean 프로퍼티여야 한다.

- 기능

  • JSP 네가지 기본 객체가 제공하는 영역의 속성 사용
  • 자바 클래스 메소드 호출 가능
  • 표현 언어만의 기본 객체 제공
  • 수치, 관계, 논리 연산 제공

- 예시 ( 스크립트릿 -> EL )

 

<%= ((model.MemberDto)request.getAttribute("userinfo")).getZipDto().getAddress() %>

                                                  ↓

                                  ${ userinfo.zipDto.address }

 

 

- EL 문법

Map 사용 : ${ Map.Map의 키 }

Java Beans 사용 : ${ Java Bean.Bean 프로퍼티 }

 

    [] 연산자

  • [ ] 안의 값이 문자열인 경우, 맵의 키가 될 수도 있고, Bean 프로퍼티나 리스트 및 배열의 인덱스가 될 수 있다.
  • 배열과 리스트인 경우, 문자로 된 인덱스 값은 숫자로 변경하여 처리

ex )  ${userinfo["name"]}   와   ${userinfo.name}  은 같다.

 

       String[] names = {"홍길동", "이순신"};

       request.setAttribure("userNames", names);

       ${userNames[0]}     // 홍길동 출력

       ${userNames["1"]}   // "1" -> 1 로 바뀌어서 이순신 출력

 

 

- EL 에서 객체 접근

  • request.setAttribute("name", "홍길동")
    1. ${requestScope.name}
    2. ${pageContext.request.name}, ${name}
    3. ${cookie.name.value}

2. 와 같이 property 이름만 사용할 경우, pageScope > requestScope > sessionScope > applicationScope 순으로 객체를 찾는다.

 

+ EL은 값이 null이라도 null을 출력하지 않고 공백이 출력된다.

 

- 연산자 empty

empty 연산자에서 true를 return 하는 경우 >> ${empty var}

1. 값이 null이면 true

2. 값이 빈 문자열이면 true

3. 길이가 0인 배열이면 true

4. 빈 Map 객체이면 true

5. 빈 Collection 객체이면 true

 

- EL 에서 객체 method 호출

<%

List<MemberDto> list = dao.getMembers();

request.setAttribute("users", list);

%>

 

이 상태에서 회원수 구하기위한 구문은 

${users.size()}    ( = ${requestScope.users.size()} )

 

※ ${users.size} 라고 하면 users의 프로퍼티 size를 찾는다.

 

 

'Web : BackEnd' 카테고리의 다른 글

JSP (Java Server Page)  (0) 2020.10.11
[Java] Servlet  (0) 2020.10.11
JSTL (JSP Standard Tag Library)  (0) 2020.10.11
Cookie & HttpSession  (0) 2020.10.11
[JSP] MVC 패턴 (Model-View-Controller)  (0) 2020.10.07