EL (Expression Language) { 등장 배경, 문법, 기본객체, 연산자, 버전 호환 }
Ben의 프로그램2023. 7. 18. 11:40
728x90
수업목표
jsp 에서 표현식을 이용해 값을 출력할 때 변수의 값이 null 이면 화면에 null 이 출력되었습니다. 이 경우 null 여부를 check 한 후 null 이면 아무것도 없는 문자열을 출력해야 하는 등 불편한 과정을 거쳐야 합니다. EL 을 사용하면 좀 더 편리하게 변수를 JSP 에서 사용할 수 있습니다. 이번 시간에는 EL 에 대해서 공부해보겠습니다.
EL (Expression Language) 의 등장 배경
EL 은 표현 언어를 의미합니다. EL은 표현 언어로써 JSP 의 문법을 보완하여 값을 표현하는 역할을 수행합니다. JSP 에는 자바 코드도 들어가지만 HTML 등 프런트의 요소들이 더 많이 들어갑니다. 프런트와 백엔드 개발자들이 동시에 보는 파일을 어떻게 하면 효율적으로 쓸 수 있을지에 대해서 화두가 되었는데요. 추후에 배울 MVC 패턴들도 어떻게 하면 효율적으로 일을 나누어서 할 수 있을지가 화두였고 그 결과 나온 결과물이라고 이해할 수 있습니다. 백엔드를 다루지 않는 프런트 개발자 혹은 디자이너들을 자바 코드가 등장을 하게 되면 무슨 코드인지도 모르고 혼란스러울 수 있습니다. 자바 코드보다 간단하게 사용할 수 있는 것들에 대한 고민의 결과가 EL, JSTL 이라는 것이죠.
EL (Expression Language) ; 표현 언어가 제공하는 기능
1. JSP 의 스코프(scope)에 맞는 속성 사용 자바 코드를 이용해서 스코프를 사용했었는데요. 표현 언어를 사용하면 스코프를 더 쉽게 출력할 수 있습니다.
2. 집합 객체에 대한 접근 방법 제공 컬렉션이나 프레임워크에서 제공하는 객체가 가지고 있는 값을 출력할 때도 쉽게 출력할 수 있습니다.
이처럼 표현언어는 JSP의 스크립트 요소(scriptlet, expression, declaration)를 제외한 나머지 부분에서 사용될 수 있으며, 표현언어를 통해서 표현식보다 편리하게 값을 출력할 수 있습니다.
EL (Expression Language) ; 표현 언어의 기본 객체
EL (Expression Language) ; 표현 언어의 기본 객체 사용 예시
색깔로 칠해진 부분을 보면 같은 내용을 표현언어로 쓴 것과 자바 코드로 쓴 것을 비교할 수 있습니다. 표현언어(좌)의 표현 방식이 자바(우)의 표현 방법 보다 조금 더 간편한 것을 볼 수 있습니다. EL 이 익숙해지면 자바를 쓰는 것보다 훨씬 간단하고 시각적으로 우수한 JSP 파일을 작성할 수 있습니다.
EL (Expression Language) ; 표현 언어의 데이터 타입
EL 은 자바와 비슷하게 다양한 데이터 타입을 표현할 수 있습니다.
EL (Expression Language) ; 표현 언어의 객체 접근 규칙
<표현1>.<표현2> 를 볼 수 있는데요. 표현에 담긴 값에 따라 출력되는 값들이 달라지게 됩니다. 표현 1이나 표현 2가 null 이면 null 값이 반환됩니다. 표현1이 Map 값일 경우 표현2는 Key 값을 반환합니다. 표현1이 list 나 배열이라면 표현 2는 정수 값을 가져야 하고 해당 정수를 index 로 인식하여 표현 1의 list나 배열에서 해당 index 값을 반환합니다. 표현 1이 list 나 배열인데 표현2가 정수 값을 가지고 있지 않은 경우에는 오류가 발생합니다. 표현 1이 객체일 경우 표현 2에 입력된 문자열은 표현1 객체의 해당 getter 메서드를 호출한 결과를 반환한다. 말이 어려운데 예를들어 <Student>.<name> 이라면 Student.getName( ) 이 실행된 결과를 반환한다는 것을 의미한다.
EL (Expression Language) ; 표현 언어의 수치 연산자
표현 언어는 수치 연산자를 함께 제공하는데 / 과 % 의 연산자는 div 혹은 mod 로 사용할 수 있는데, HTML 에서 / 혹은 % 가 예약어로 사용되고 있는 경우를 위해서 만들어진 것이다.
또한 자바의 자동 형 변환과 비슷한 느낌의 기능을 제공한다. 숫자가 아닌 객체와 수치 연산자를 사용할 경우 객체를 숫자 값으로 반환 후 연산자를 수행시켜 준다. 숫자로 반환할 수 없는 객체와 수치 연산자를 함께 사용하면 에러를 발생시킨다. 수치 연산자에서 사용된 객체가 Null 이면 0으로 처리한다.
EL (Expression Language) ; 표현 언어의 비교 연산자
HTML 과 함께 사용하기 때문에 비교 연산자 기호 말고 다른 옵션을 함께 제공합니다.
EL (Expression Language) ; 표현 언어의 논리 연산자
논리 연산자는 똑같습니다.
EL (Expression Language) ; 표현 언어의 empty 연산자, 비교선택 연산자
자바의 isNull 처럼 null 여부를 판단해주는 empty 연산자가 있습니다. 또한 자바의 삼항 연산자와 비슷한 비교선택 연산자를 제공합니다.
EL (Expression Language) ; 표현 언어의 연산자 우선 순위
다른 언어와 크게 다르지는 않습니다.
EL (Expression Language) ; 표현 언어 비활성화 시키기 & 버전별 호환
이런 EL 언어를 비활성화 시킬수도 있는데요. page isELignored 값에 true 를 주면 됩니다. 기본 default 값은 false 입니다. 톰캣 & 자바 & EL & JSP & Servlet 등의 버전들은 서로 호환이 되는 버전들이 존재합니다. 기본적으로 Servlet 2.5 버전 이후부터 EL 2.1 이상 버전이 지원되는 것을 확인할 수 있습니다. Servlet 2.3 이전 버전에서는 EL 이 기본적으로 모두 무시 됩니다.