DEV/Java

Expression Language(EL)

Beomsu Koh 2023. 5. 19.

Expression Language

EL은 JSP에서 Java 코드에 대한 보다 간단한 대안을 제공하는 Java 표현 언어의 약자입니다.
EL을 사용하면 JavaBeans 구성 요소에 저장된 애플리케이션 데이터에 더 쉽게 액세스할 수 있습니다.

예제로 알아보자

아래 User 클래스를 생성하고, 서블릿에 요청 속성으로 추가해봅시다

public class User {
    private String name;
    private String email;

    // constructor, getters, setters...
}
User user = new User();
user.setName("John Doe");
user.setEmail("john@example.com");

request.setAttribute("user", user);
RequestDispatcher dispatcher = request.getRequestDispatcher("user.jsp");
dispatcher.forward(request, response);

그런 다음 JSP 파일(user.jsp)에서 EL을 사용하여 User 개체의 속성에 액세스할 수 있습니다.

<html>
<body>
    <h1>Welcome, ${user.name}!</h1>
    <p>Your email is: ${user.email}</p>
</body>
</html>

여기서 ${user.name}${user.email}은 요청 범위에 저장된 “user” 객체의 “name” 및 “email” 속성에 액세스하는 EL 표현식입니다. 이러한 속성의 값은 결과 HTML 페이지에 표시됩니다.

${user.name}은 Java 코드에서 user.getName()을 호출하는 것과 같습니다. 그러나 EL을 사용하면 구문이 훨씬 더 깨끗하고 단순해집니다.

ETC. Operation ., Scope

EL 표현식에서 ‘.’ 연산자는 객체의 속성을 탐색하는 데 사용됩니다.
이를 통해 중첩된 프로퍼티에 액세스하기 위해 긴 get 메서드 체인을 사용해야 하는 Java의 "게터 지옥"에 빠지지 않고도 프로퍼티에 깔끔하고 간단하게 액세스할 수 있습니다.

코드 스니펫은 또한 EL의 자동 유형 강제 기능(예: 문자열을 숫자로 변환)과 EL이 널 값을 우아하게 처리하는 기능도 보여줍니다.

EL의 범위와 관련하여 ${name}과 같이 지정된 범위가 없는 경우, EL 해석기는 가장 가까운 범위(페이지 범위)에서 시작하여 일치하는 항목을 찾을 때까지 더 넓은 범위(요청, 세션, 애플리케이션)로 이동하여 "이름"을 찾습니다.

부족한 점이나 잘못 된 점을 알려주시면 시정하겠습니다 :>

'DEV > Java' 카테고리의 다른 글

Spring MVC @ModelAttribute  (0) 2023.05.19
Servlet filter  (0) 2023.05.19
Servlet의 상태 정보 저장  (0) 2023.05.19
Servlet  (0) 2023.05.19
Spring MVC  (1) 2023.05.19

댓글