제 12 장 표현 언어 2008 2학기 인터넷비즈니스과 강 환수 교수
JSP에서 브라우저의 출력은 주로 표현식 태그를 이용 표현 언어란? JSP에서 브라우저의 출력은 주로 표현식 태그를 이용 <%= request.getParameter(“userid”) %> 표현언어(Expression Language)를 이용 ${ param.userid } ${ param[‘userid’] } ${ param[“userid”] } 표현언어 <%= %>인 표현식 대신에 사용하거나 내장객체 또는 액션태그 저장된 자료를 쉽게 참조하기 위해 만들어진 언어
표현 언어 ${ exp } 자료유형 상수 표현언어는 $로 시작 표현언어의 문장구조는 ${ exp } 정수형 실수형 문자열형 true, false의 논리(Boolean)형 null 값 상수 논리값(boolean) true, false 자바에서 이용되는 정수형으로 1, -5 자바에서 이용되는 실수형으로 3.1, 4.5E+4 문자열은 ‘java’, “java”와 같이 큰 따옴표, 작은 따옴표 모두 이용 가능 아무것도 없다는 의미의 null
< <= == != >= > lt le eq ne ge gt 표현 언어 연산자 다양한 연산자 우선순위 반환 유형 메소드 이름 이항 산술 연산자 + - * / div % mod 이항 관계 연산자 < <= == != >= > lt le eq ne ge gt 첨자 연산자 . [] 이항 논리 연산자 && and || or 단항 논리 연산자 ! not 단항 산술 연산자 - empty 연산자 empty 삼항 조건 연산자 ? : 괄호 연산자 ()
표현 언어 내장 객체 분류 내장객체 자료유형 기능 JSP page 객체 pageContext javax.servlet.jsp.PageContext JSP 페이지 기본 객체로서, servletContext, session, request, response 등의 여러 객체를 참조 가능 범위 pageScope java.util.Map page 기본 객체에 저장된 속성의 <속성, 값>을 저장한 Map 객체, ${pageScope.속성}으로 값을 참조 requestScope request 기본 객체에 저장된 속성의 <속성, 값>을 저장한 Map 객체, ${pageScope. 속성}으로 값을 참조 sessionScope session 기본 객체에 저장된 속성의 <속성, 값>을 저장한 Map 객체, ${sesssionScope. 속성}으로 값을 참조 applicationScope Application 기본 객체에 저장된 속성의 <속성, 값>을 저장한 Map 객체, ${applicaionScope. 속성}으로 값을 참조 요청 매개변수 param 요청 매개변수 <매개변수이름, 값>을 저장한 Map 객체, ${param.name}은 request.getParameter(name)을 대체 paramValues 요청 매개변수 배열을 <매개변수이름, 값>을 저장한 Map 객체, request.getParameterValues() 처리와 동일 요청 헤더 header 요청 정보의 <헤더이름, 값>을 저장한 Map 객체, ${header[“name”]}은 request.getHeader(헤더이름)와 같음 headerValues 요청 정보 배열을 <헤더이름, 값>을 저장한 Map 객체, request.getHeaders()의 처리와 동일 초기화 매개변수 initParam 초기화 매개변수의 <이름, 값>을 저장한 Map 객체, ${initParam.name}은 application.getInitParameter(name)을 대체 쿠키 cookie 쿠키 정보의 배열을 <쿠키이름, 값>을 저장한 Map 객체, request.getCookies()의 Cookie 배열의 이름과 값으로 Map을 생성
표현언어 내장객체 이용 requestScope cookie header와 headerValues implicitObjectEL.jsp cookie cookieObjectEL.jsp header와 headerValues headerObjectEL.jsp
액션 태그와 표현언어 ArrayList의 배열 객체 이용 자바빈즈의 getter 호출 actiontagEL.jsp User.java userEL.jsp
클래스에 정의한 메소드를 표현언어로 호출하려면 표현언어에서 이용할 함수 만들기 클래스에 정의한 메소드를 표현언어로 호출하려면 ${ prefixname:functioname() } 먼저 접두어 prefixname으로 태그를 선언 표현언어에서 함수를 이용하려면 다음과 같이 3 가지 작업을 수행 순서 작업 파일이 저장되는 폴더 파일이름 1 클래스 작성 [Java Resources: src]/[패키지] ELDateFormat.java 2 TLD 파일 작성 [WebContent]/[WEB-INF]/[tld] ELfunction.tld 3 JSP 파일 작성 [WebContent] function.jsp
ELDateFormat.java package form; import java.text.SimpleDateFormat; import java.text.SimpleDateFormat; import java.util.Date; public class ELDateFormat { private static SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd(E) HH:mm:ss"); public static String toFormat(Date date) { return df.format(date); }
el-functions.tld <?xml version="1.0" encoding="euc-kr" ?> <taglib xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee web-jsptaglibrary_2_0.xsd" version="2.0"> <description>EL에서 함수실행</description> <tlib-version>1.0</tlib-version> <short-name>ELfunctions</short-name> <uri>/ELfunctions</uri> <function> <description>Date 객체를 (yyyy-MM-dd(E) HH:mm:ss) 형태로 출력</description> <name>format</name> <function-class> form.ELDateFormat </function-class> <function-signature> java.lang.String toFormat( java.util.Date ) </function-signature> </function> </taglib>
표현언어에서 등록한 태그의 함수를 호출하려면 function.jsp 표현언어에서 등록한 태그의 함수를 호출하려면 가장먼저 <tablib> 태그를 이용하여 사용할 태그 접두어와 이용할 함수가 정의되어 있는 TLD 파일을 지정
만일 JSP 규약 2.0 이전 버전에서 개발된 JSP 프로그램을 JSP 규약 2.0에서 실행한다면 표현언어 비활성화 표현언어는 JSP 페이지 규약 2.0에 추가된 기능 만일 JSP 규약 2.0 이전 버전에서 개발된 JSP 프로그램을 JSP 규약 2.0에서 실행한다면 $로 시작하는 문자열을 표현언어로 인식하여 오류가 발생 이러한 경우를 대비해서 JSP는 JSP 페이지에서 표현언어를 사용하지 않겠다는 표현언어 비활성화 지시를 내릴 수 있음 표현언어의 비활성화 페이지 단위 또는 응용프로그램 단위 또는 서버 단위로 가능 표현언어 비활성화 단위 수정 내용 수정 파일 페이지 단위 페이지 지시자 속성 isELIgnored 추가 각 JSP 페이지 응용프로그램 단위 태그 <el-ignored> 추가 [WEB-INF]/web.xml 서버 단위 [conf]/web.xml
Thank You ! www.dongyang.ac.kr