JSP(JavaServer Pages)의 EL(Expression Language)표현식이란 JSP 페이지에서 자바 코드를 보다 간결학 쉽게 작성 할 수 있게 도와주는 언어이다.
EL은 JSP2.0버전부터 도입되었으며, 자바 빈(JavaBeans)과 웹 컨테이너의 스코프(Scope)객체에 접근하고 조작할 수 있는 표현식 언어이다.
EL의 개념
- EL은 ${} 기호를 사용하여 표현식을 감싸고 사용한다. 예를 들어 , ${user.name}은 "user"라는 이름의 자바 빈 객체의 "name"프로퍼티 값을 나타낸다.
- EL은 문자열, 숫자, 불리언, 배열, 리스트, 맵 등 다양한 데이터 유형을 지원한다.
- EL은 JSP페이지의 범위(Scope)에서 데이터를 가져올 수 있으며, request, session, application등 다양한 범위 객체에 접근할 수 있다.
- EL은 산술 연산, 논리 연산, 비교 연산 등 다양한 연산자를 지원한다.
- EL은 흐름 제어 구문(if - else, 반복문)을 지원한다.
EL은 JSP페이지에서 데이터를 표시할 때 주로 사용된다. 예를 들어 ${user.name}은 사용자의 이름을 출력하는데 사용될 수 있고 데이터를 수정할 때에는 ${user.name = 'John'}과 같이 값을 변경할 수 있다.
컬렉션과 맵에 접근하여 반복문을 처리하는 등의 작업을 수행하거나 조건문(if-else)을 사용하여 특정 조건에 따라 다른 내용을 출력할 수도 있다.
이 처럼 EL은 JSP페이지에서 자바 코드를 간결하게 작성할 수 있고, 데이터에 접근하고 표시하는데 유용한 도구이다.
또한 JSTL(JavaServer Pages Standard Tag Library)과 함께 사용될 때 더욱 강력한 기능을 제공한다. JSTL은 다양한 태그 라이브러리를 포함하고 있으며, 데이터 처리, 조건문, 반복문 등을 보다 쉽게 처리할 수 있도록 도와준다.
EL 표기법
${}
JSP가 실행될 때 바로 반영이 된다.
객체 프로퍼티 값을 꺼내 사용할때 주로 사용한다.
#{}
시스템상 필요하다고 할때 그 값을 사용한다.
사용자 입력값을 객체의 프로퍼티 안에 담는 용도로 사용한다(Object)
EL의 다양한 예제
- 변수 접근👉
-${user.name} : "user"라는 이름의 자바 빈의 "name"프로퍼티 값을 표시한다.
-${bookList} : "bookList"라는 이름의 리스트 객체를 표시한다. - 산술 연산👉
-${num1 + num2} : "num1"과 "num2"변수의 합을 계산한다.
-${price * quantity} : "price"와 "quantity"변수를 곱한 값을 계산한다. - 논리 연산👉
-${loggedIn && isAdmin} : "loggedIn"과 "isAdmin"변수가 모두 true인 경우를 확인한다.
-${age >= 18 || hsPermission} : "age"가 18 이상이거나 "hasPermission"변수가 true인 경우를 확인한다. - 조건문👉
-${user.age >= 18 ? "성인" : "미성년자"} : "user"객체의 "age"가 18이상이면 "성인", 그렇지 않으면 "미성년자"를 표시한다. - 반복문👉
-<c:forEach var = "book" items = "${bookList}"> : "bookList"라는 리스트 객체를 반복하여 각 요소를 "book"이라는 변수로 접근한다. - 컬렉션 접근👉
-${mapData['key']} : "mapData"라는 맵 객체에서 "key"에 해당하는 값을 가져온다. - 속성 접근👉
-${requestScope.attributeName} : "request"스코프에 있는 "attributeName"속성 값을 가져온다.
EL을 배우기 전에는 <% %>를 사용해 자바 문법이나 객체를 꺼내는 코드를 작성했다. <% %>을 사용하지 않기에 보다 훨씬 가독성 좋고 보다 간결하게 코드를 작성할 수 있다.
'Java' 카테고리의 다른 글
JAVA Cookie (0) | 2023.06.13 |
---|---|
간단히 보는 JAVA의 자료구조 (0) | 2023.06.13 |
JAVA Filter (0) | 2023.05.31 |
JAVA Session scope (0) | 2023.05.31 |
JAVA JSP (0) | 2023.05.30 |
댓글