'function'에 해당하는 글 2건

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 단에서도 할 수 있다.

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










신고

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

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

WRITTEN BY
체리필터
프로그램 그리고 인생...

받은 트랙백이 없고 , 댓글이 없습니다.
secret
100만건이 조금 넘는 MyISAM 테이블이 있었다.
주소록 그룹 관련 테이블인데, 유저당 그룹 이름이 중복될 수 없었다.
그런데 기존에는 nhn과 NHN이 서로 같은 것이라고 생각해서 디비 내에서 대소문자가 틀린 경우에는 새로운 그룹을 추가하거나 기존 그룹의 이름을 수정할 수 없었다.

뭐 간단하게 BINARY로 해당 컬럼의 속성을 변경해도 되겠지만...
innoDB도 아닌 MyISAM 테이블에 100만건이니 ALTER 한번만 쳐도 수시간은 잡아 먹을 듯 했다.
그래서 메뉴얼을 뒤졌더니... 역시나 ^^


BINARY

BINARY


BINARY라는 Cast Function을 쓰면 되는 것이었다.
복잡하게 해결해야 만 될것같은 문제를 간단하게 해결할 수 있게 되었다.
역시 모든 문제의 해결책은 메뉴얼이다.
신고

WRITTEN BY
체리필터
프로그램 그리고 인생...

받은 트랙백이 없고 , 댓글이 없습니다.
secret