New World
[JSP 공부 #6] 표현 언어(EL) 본문
표현식
내장객체 또는 액션태그에 저장된 자료를 쉽게 참조하기 위해 만들어진 언어
<%= %>인 표현식 대신 ${exp}(표현언어는 $로 시작) 사용
${내장 객체 또는 속성.속성값} (속성은 범위 내장 객체의 안에 있는 것)
표현식 exp에서는 산술, 관계, 논리와 같은 기본적인 연산 가능
자료 유형: 정수, 실수, 문자열('...' or "..."), boolean, null 값
기존 코드와 표현 언어 코드 비교
기존 코드 | 표현 언어 코드 |
String name = request.getParameter("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> 추가 |
'Programming > Languages' 카테고리의 다른 글
[PHP+MySQL+PHPAdmin] 서로 다른 테이블의 속성을 select 하여 json 형식으로 만들기 (0) | 2020.08.08 |
---|---|
[JSP 공부 #7] JSTL (0) | 2020.06.30 |
[JSP 공부 #5] JDBC 프로그래밍 (0) | 2020.06.30 |
[JSP 공부 #4] 데이터 베이스와 MySQL (0) | 2020.06.30 |
[JSP 공부 #3] 자바 빈즈(JAVA Beans) (0) | 2020.06.30 |