New World

[JSP 공부 #6] 표현 언어(EL) 본문

Programming/Languages

[JSP 공부 #6] 표현 언어(EL)

hyeovi 2020. 6. 30. 14:35
728x90
반응형

표현식

내장객체 또는 액션태그에 저장된 자료를 쉽게 참조하기 위해 만들어진 언어

<%= %>인 표현식 대신 ${exp}(표현언어는 $로 시작) 사용

 

${내장 객체 또는 속성.속성값} (속성은 범위 내장 객체의 안에 있는 것)

표현식 exp에서는 산술, 관계, 논리와 같은 기본적인 연산 가능
자료 유형: 정수, 실수, 문자열('...' or "..."), boolean, null 값

기존 코드와 표현 언어 코드 비교

기존 코드 표현 언어 코드

String name = request.getParameter("name");
<%= name %>

${param.name}

${param.['name']}

${param.["name"]}

 

EL을 위한 내장 객체
java.util.Map 범위 pageScope
requestScope
sessionScope
applicationScope
요청 매개 변수 param
paramValues
요청 헤더 header
headerValues
쿠키 cookie
초기화 매개변수 initParam
javax.servlet.jsp.PageContext JSP page 객체 pageContext

Map<K, V> (자료 유형: java.util.Map)

- 키와 값이 한 쌍으로 구성되는 요소를 다루는 컬렉션
- K: 키로 사용할 요소의 타입, V: 값으로 사용할 요소의 타입
- 키는 해시맵에 삽입되는 위치 결정에 사용
- 값을 검색하기 위해서는 반드시 키 이용
- 빠른 삽입, 삭제, 검색(요소 삽입: put(), 요소 검색: get())

ex)
HashMap<String, String> h = new HashMap<String, String>();
h.put("apple", "사과"); //키: apple, 값: 사과 해시맵 삽입
String kor = h.get("apple"); //"apple" 키로 값 검색 kor은 사과로 출력

May<K, V>의 주요 메소드
V get(Object key) 지정된 키의 값 리턴, 키가 없으면 null리턴
Set<K> keySet() 해시맵의 모든 키를 담은 Set<K> 컬렉션 리턴
void clear() 해시맵의 모든 요소 삭제
boolean containsKey(Object key) 지정된 키를 포함하고 있으면 true 리턴
boolean containsValue(Object value) 지정된 값에 일치하는 키가 있으면 true 리턴
boolean isEmpty() 해시맵이 비어 있으면 true 리턴
V put(K key, V value) 키와 값의 쌍을 해시맵에 저장
V remove(Object key) 지정된 키를 찾아 키와 값 모두 삭제
int size() HashMap에 포함된 요소의 개수 리턴

ArrayList<E> 클래스의 주요 메소드
boolean add(E element) ArrayList의 맨 뒤에 element 추가
void add(int index, E element) 인덱스 위치에 element 삽입
boolean addAll(Collection<? extends E> c) 컬렉션의 모든 요소를 ArrayList의 맨뒤에 추가
void clear() ArrayList의 모든 요소 삭제
boolean contains(Object o) ArrayList가 지정된 객체를 포함하고 있으면 true 리턴
E elementAt(int index) 인덱스의 요소 리턴
E get(int index) index 인덱스의 요소 리턴
int indexOf(Object o) o와 같은 첫번째 요소의 인덱스 리턴, 없으면 -1리턴
boolean isEmpty() ArrayList가 비어있으면 true 리턴
E remove(int index) 인덱스의 요소 삭제
boolean remove(Object o) o와 같은 첫번째 요소를 ArrayList에서 삭제
int size() ArrayList가 포함하는 요소의 개수 리턴
Object[] toArray() ArrayList의 모든 요소를 포함하는 배열 리턴

표현언어에서 이용할 함수 만들기

${prefixname:functioname()}

클래스에 정의한 메소드를 표현 언어로 호출하려면 접두어 prefixname으로 태그 선언

- 클래스 작성: [Java Resources: src]/[패키지]
- TLD 파일 작성: [WebContent]/[WEB/INF/[tld]
- JSP 파일 작성: [WebContent]

표현언어에서 등록한 태그의 함수를 호출하려면 - <tablib> 태그를 이용해 태그 접두어와 이용할 함수가 정의되어 있는 TLD 파일 지정
ex)
tld 파일 내 코드
<%@taglib prefix="date" url="/WEB-INF/tld/ELfunction.tld"%>

<function>
<name>format</name>
</function>
${date.format(now)}

 

표현언어 비활성화
- 표현언어는 JSP 페이지 규약 2.0에 추가된 기능
- 만일 JSP 규약 2.0 이전 버전에서 개발된 JSP 프로그램을 JSP 규약 2.0 에서 실행한다면 오류 발생 ($로 시작하는 문자열을 표현 언어로 인식 => JSP 페이지에서 표현언어를 사용하지 않겠다는 비활성화 지시를 내려야함)
- 페이지 단위 또는 응용 프로그램 단위 또는 서버 단위로 가능

페이지 단위 각 JSP 페이지 페이지 지시자 속성 isELIgnored 추가
응용프로그램 단위 [WEB-INF]/web.xml 태그<el-ignored> 추가
서버 단위 [conf]/web.xml

태그<el-ignored> 추가

 

반응형
Comments