07 EL

● 개요

○ 간단한 방법으로 데이터의 값을 웹 페이지에 출력할 수 있게 해줌

‘$’ 기호와 ‘{ }’ 괄호 안에 출력되길 원하는 식을 포함하는 형태로 구현

EL식에 사용되는 문자열을 출력용으로 사용하는 것 : \ 사용

○ 역할

■ 특정식을 통한 데이터의 값 출력 및 다른 구성요소에 값을 지정

<%=request.getParameter ("data") %>로 출력한다면

${param.data} 이 것도 같은 역할

■ 전송된 파라미터의 이름을 request 내장객체를 이용하지 않고 바로 호줄하여 사용

 

● 문법

○ 특정 식을 통한 데이터의 출력을 수행하기 위해 사용하는 언어라는 것!

1)    EL식의 데이터 이름

■ 출력을 위한 데이터를 지칭하기 위해 데이터의 이름을 사용

page, request, session, application 내장 객체dp 지정된 데이터들을 의미

■ 동일한 데이터의 이름이 여러 내장객체에 존재할 경우 사용범위 작은 곳부터 우선 해석 됨

一 사용범위 작음 사용범위 넓음 一

page - request - session - application

 

2)    EL의 내장 객체

EL에 정의된 내장객체는 다른 JSP 스크립팅 요소에서는 사용할 수 없음

 

 

EL이용한 JSP 내장 객체 데이터 출력

□ 데이터명을 내장 객체 별 중복여부에 관계 없이 선택하여 출력 가능

$pageScope.ATTRIBUTE / $requestScope.ATTRIBUTE / $sessionScope.ATTRIBUTE / $applicationScope.ATTRIBUTE

□ 중복되는 파라미터 명이 mId 일 때${mId}는 파라미터 scope가 작은 것이 출력되지만

${applicationScope.mId}, ${requestScope.mId” 등으로 범위에 맞게 접근 가능

 

■ 요청 파라미터 데이터 출력

request 내장객체를 사용하지 않고도 요청 파라미터값을 출력 가능

paramValues의 경우 선택되지 않은 인덱스는 에러가 발생하는 것이 아니라 단지 출력되지 않는 식으로 동작함

$ {paramValues.language [2]}

${paramValues.language [3]}

o  initParam식을 사용하여 웹 애플리케이션의 초기화 파라미터를 출력할 수 있음

web.xml

<context-param>

<param-name>initParamName</param-name>

<param-value>initParamValue</param-value>

</context-param>

${initParam.initParaniName}

${initParam["initParamName"]}

이렇게 출력

 

■ 쿠키 정보 출력

${ cookie.COOKIE_NAME.property}

${ cookie.COOKIE _NAME ["property"]}

${ cookie[”COOKIE_NAME"].property}

${ cookie[“COOKIE _NAME”] ["property"] }

 

3)    EL 연산자

■ 연산자 사용 가능

■ 산술 연산자는 데이터의 값이 자동으로 숫자로 형변환 되어 연산 수행

■ 비교 연산자는 숫자, 문자열 데이터 모두 사용 가능

■ 논리 연산자도 자바랑 사용법 동일

■ 삼항 연산자도 사용 가능

■ 엠티 연산자 : 명시된 DATA null 혹은 공백 문자열, 비어있는 콜렉션일 경우 true반환되는 연산자

$empty DATA

■ 연산자 우선순위 있음

[ ] > ( ) > -(단항_, !, not, empty > *, /, div, %, mod > +, - > <, >, <=, >= > ==, != > &&, and > ||, or > ?, :

 

EL을 이용한 자바 메서드 사용

○ 자바 인스턴스 메서드 사용

■ 다양한 형태의 메서드를 리턴 타입과 파라미터의 유무 및 개수에 상관없이 EL을 통해 사용할 수 있음

■ 파라미터 속성명을 사용해 InstanceMethod 클래스 객체의 멤버메서드에 접근

<% InstanceMethod instanceMethod = new InstanceMethod();

request.setAttribute(“usingMethod”, instanceMethod)%>

■ 파라미터 이름에 메서드 명 붙여서 사용 괄호 없음

$usingMethod.setData(10)

 

○ 자바 정적 메서드 사용

JSP 2.1 이하 버전에서는 EL을 이용하여 자바의 정적 메서드(static method)만을 사용할 수 있으며 자바의 정적 메서드를 EL 등록하는 작업이 병행되어야 함

■ 정적 메서드를 EL을 통해 사용하기 위해선 TLD 파일 내에 EL 함수를 등록해주는 절차가 필요

TLD 파일 작성 (TLD_Tag Ubrary Descriptor : 태그 라이브러리 정보 설정을 위해 작성)

<taglib> 태그 : xmlns TLD문법의 식별자와 version 속성에 TLD 문법의 버전 작성

<description> 태그 : 사용할 태그 라이브러리에 대한 간략한 설명

<tlib-version : 태그 라이브러리 버전이 지정

□ 〈short-name〉태그 : 현재 태그 라이브러리명을 지정

□ 〈function〉태그 : 현재 태그 라이브러리에서 호출할 수 있는 함수를 제작하기 위한 태그

□ 〈name〉태그 : 사용될 함수의 이름

□ 〈function-class> : 사용할 정적 메서드가 정의되어 있는 자바 클래스의 풀네임

<function-signature> : 태그에 등록한 정적 메서드의 리턴 타입, 메서드명, 메서드의 입력 파라미터의 데이터 타입

<taglib xmlns='1http//java.sun.com/xml/ns/javaee" version=”2.1”>

<description>EL의 자바 정적 메서드 사용〈/description>

<tlib-version>l.O</tlib-version>

<short-name>ELStaticMethod</short-name>

<function>

<name>useStaticMethod</name>

<function-class>MethodTest.StaticMethod</function-class>

<function-signature>int getData(int)/function-signature

</function>

</taglib>

 

web.xml TLD 파일을 등록 -> 웹 컨테이너에 인식

<taglib> 태그 작성 -> TLD 파일의 식별자를 지정하기 위한 <taglib-uri> 태그와 TLD 파일의 경로명을 지정해주기 위한 <taglib-location> 태그를 작성

web.xml

<jsp-config>

<taglib>

<taglib-uri>/WEB-INF/tlds/static-method.tld</taglib-uri>

<taglib-location>/WEB-INF/tIds/static-method. tld</tagliblocation>

</taglib>

</jsp-config>

</web-app>

 

■ 태그 라이브러리 지시자 지정

<%@ taglib prefix태그라이브러리 구분용 접두어" uri=”TLD 파일의 URI” %>

■ 사용

$ 접두어 : TLD 파일의<function>태그 내 <name> 태그로 지정된 함수명 ( 입력 파라미터 )

 

EL 비활성화

1)    page 지시자를 이용한 비활성화

<%@ page isELIgnored=”true" %>

#[ ] 형식의 EL 구문 실행 막기 : cieferredSyntaxAllowrdAsLiteral 속성값을 true로 지정.

<%@ page deferredSyntaxAllowrdAsLiteral =”true" %>

 

2)    web.xml의 〈jsp-property-group〉태그를 이용한 비활성화

EL을 비활성화할 대상 페이지의 URL 패턴을 지정하는 〈url-pattern〉태그와 <el-ignored> 태그 값을 true로 지정

<jsp-config>

<jsp-property-group>

<url-pattern>/notUsingEL.jsp</url-pattern>

<el-ignored>true</el-ignored>

</jsp-property-group>

</jsp-config>

 

+ Recent posts