Java/Servlet & JSP

EL 함수 사용하기

체리필터 2009. 2. 13. 11:32
728x90
반응형
EL 표현에서도 함수(메소드)를 사용할 수 있다.
EL에서 메소드를 사용하기 위해서는 다음과 같은 순서를 따라 작성해야 한다.

1. 정적인 공용 메소드를 제공하는 클래스를 만든다.
해당 메소드는 EL(JSP)에서 사용할 메소드이므로 반드시 정적인 공용 메소드여야 하며, 리턴 타입이 있어야 한다. 그래야지 JSP에서 브라우져에 내용을 그릴 수 있다.

2. 태그 라이브러리 서술자 파일을 만든다.
  EL 함수를 사용하기 위해서는 TLD(Tag Library Descriptor)란 파일로 자바 클래스, 메소드와 EL에서 호출할 메소드 명을 맵핑해야 한다.

3. JSP에 taglib 지시자를 코딩한다.

4. 함수를 호출하는 EL을 작성한다.

위 형식대로 EL을 작성해 보면 아래 처럼 작성할 수 있다.

* DiceRoller.java

package com.example;

public class DiceRoller {
    public static int rollDice() {
        return (int) ((Math.random() * 6) + 1);
    }
}

* myFunction.tld

<?xml version="1.0" encoding="UTF-8"?>

<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">

<tlib-version>1.2</tlib-version>
<uri>DiceFunctions</uri>
    <function>
        <name>rollIt</name>
        <function-class>com.example.DiceRoller</function-class>
        <function-signature>
            int rollDice()
        </function-signature>
    </function>
</taglib>

* TestBean.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ taglib prefix="mine" uri="DiceFunctions" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
${mine:rollIt()}
</body>
</html>

java파일은 com.example 패키지에 만들고, tld 파일은 WEB-INF 디렉토리 밑에 만든다. jsp 파일은 WebContent(DocumentRoot) 아래에 바로 만든다.
조금 복잡한 감이 있다.
jsp 파일에서는 네임스페이스 개념의 prefix를 taglib에 정해주고 호출할 uri를 적어준다. 호출할 uri명은 tld 파일에 작성한 uri 값이다.
tld 파일에서는 jsp에서 호출할 함수 이름(rollIt)과 실재 class명, 그리고 실재 함수명을 적어주고 실재 클래스, 함수와 jsp에서 호출할 함수명을 서로 맵핑 시킨다.

개인적으로 이해가 되지는 않지만, 자바는 겹겹히 숨겨 두는 방식을 좋아하는 듯 하다 -.-;;

덧1. function-signature에 들어가는 실제 메소드에 인자를 줄 수 있다.

int rollDice(java.util.Map)

덧2. 컨테이너는 WEB-INF 밑에 있는 tld 파일을 찾게 끔 되어 있으므로, tld 파일을 작성 후 WEB-INF 디렉토리 밑에 두면 된다.

덧3. 몇 가지 EL 연산자들

다음과 같은 간단한 연산을 EL 단에서도 할 수 있다.

+, -, *, /, %, &&, ||, !, ==, !=, <, >, <=, >=










728x90
반응형

'Java > Servlet & JSP' 카테고리의 다른 글

JSTL 사용하기 (1)  (5) 2009.03.12
템플릿 형태로 JSP 사용하기  (0) 2009.02.16
EL 사용하기  (3) 2009.02.12
표준 액션을 사용한 JSP  (0) 2009.02.11
JSP 초기화 하기  (0) 2009.02.10