[정리] EL :: Function

2012.03.20 22:04

가을의 곰을... 조회 수:7600

[정리] EL :: Function

EL :: Function (함수)

EL도 파라미터를 사용할 수 있고.. 따라서 함수 사용도 가능합니다. (Java Bean과 다른 점이죠.) EL 문법으로 함수를 만들지는 않고 만들어 둔 자바 함수를 가져다가 사용할 수 있습니다. JSP 라는게 어짜피 MVC 패턴으로 놓고 보면 "VIEW"에 해당하는 것이기 때문에 원래 복잡한 로직은 Model, Controller에서 처리를 하는게 맞습니다. 그래서 스크립틀릿 같은게 지양되고 EL이 권장되는 거겠죠. 그럼에도 불구하고 함수를 사용할 수 있다는건 좀 아이러니 하기도 하네요.

자바에서 왜 Function(함수)라는 이름을 사용할까요? 함수와 메소드의 차이점이 뭔지 기억하신다면, 아래 메소드를 왜 클래스 멤버로 선언하는지 딱 감이 오실겁니다.


EL의 함수는 이렇게 동작합니다.

1) 자바 클래스에서 사용하고자 하는 메소드를 클래스 멤버(static)로 선언합니다.

2) WEB-INF 밑에 TLD(Tag Library Descriptor;XML 타입) 파일을 가져다 놓습니다. (이때 WEB-INF 서브 폴더면 어디든 상관 없습니다.)

3) JSP에서 <%@ taglib %> 지시자로 해당 함수를 지정한 후, EL에서 사용합니다.


그럼 순서대로 소스를 보죠..


DicePlay.java

  1. package foo;
    public class DicePlay {

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

    경축! 아무것도 안하여 에스천사게임즈가 새로운 모습으로 재오픈 하였습니다.
    어린이용이며, 설치가 필요없는 브라우저 게임입니다.
    https://s1004games.com

    }


DiceFunctions.tld

  1. <?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 http://java.sun.com/xml/ns/j2ee/web-jsptaglibrary_2_0.xsd"
    version="2.0">
    <tlib-version>1.2</tlib-version>
    <short-name>DiceFunctions</short-name>
  2. <uri>DiceFunctions</uri>
    <function>
  3. <name>rollIt</name>
  4. <function-class>foo.DicePlay</function-class>
  5. <function-signature>int rollDice()</function-signature>
  6. </function>
    </taglib>


TldTest.jsp

  1. <%@ taglib prefix="mine" uri="DiceFunctions" %>
    <p>${mine:
    rollIt() }</p>

현재(8.15) 이클립스에서 버그가 있는데, 함수 호출하는 부분에서 EL Syntax Error 라고 나옵니다. https://bugs.eclipse.org/bugs/show_bug.cgi?id=280621 원인도 나와있긴 한데.. 아직 패치는 나오지 않은 것 같습니다. 아니면 저 부분을 찾아서 디버깅 후 컴파일 하는 방법도 있겠네요 (...)

2010.2.6 현재 버그 수정되었습니다.


이것도 돌아가는게 DD와 비슷한데요. 특이한 점은 TLD 파일을 WEB-INF 어디에 놓던 간에 따로 경로 지정을 안해줘도 된다는 겁니다. <@taglib> uri 속성과 TLD 파일의 <uri>의 내용만 맞으면 어떤 형식으로 들어가도 상관은 없습니다. 그리고 prefix 속성(맘대로 지정할 수 있습니다.)이 있기 때문에 함수를 종류나 쓰임새 별로 묶을 때 그냥 한 곳에 다 때려밖고 prefix만 잘 줘도 충분해 보입니다. XML Namespace의 장점을 잘 살려넣은듯 보이네요.

만약 함수에 파라미터를 넘겨야 하는 경우엔, tld 파일을 아래와 같이 수정합니다.

  1. <function-signature>String toUpperCase(java.lang.String)</function-signature>

본 웹사이트는 광고를 포함하고 있습니다.
광고 클릭에서 발생하는 수익금은 모두 웹사이트 서버의 유지 및 관리, 그리고 기술 콘텐츠 향상을 위해 쓰여집니다.
번호 제목 글쓴이 날짜 조회 수
118 linux man 명령어 자세히 알아보자 [두번째] file 가을의 곰을... 2012.04.28 4278
117 linux man 명령어 자세히 알아보자 가을의 곰을... 2012.04.28 6299
116 Oracle XE 11g install error on re-install of second times 가을의 곰을... 2012.04.18 5621
115 리눅스마스터 1급 실기 리눅스마스터1급 2차 실기 기출문제 분석 가을의 곰을... 2012.04.08 8963
114 리눅스 커널 분석 file 가을의 곰을... 2012.04.07 5037
113 Gnuplot을 사용하여 웹 페이지에 데이터 표시하기 file 가을의 곰을... 2012.03.31 5305
112 Dark Room file 가을의 곰을... 2012.03.31 5797
111 ICS (아이스크림 샌드위치)빌드시 에러 가을의 곰을... 2012.03.25 7604
110 W3C의 오픈소스 HTML/CSS 에디터 file 가을의 곰을... 2012.03.24 6579
109 실제 타켓 디바이스에 안드로이드 포팅 (Android Porting On Real Target) file 가을의 곰을... 2012.03.22 7313
108 JSTL 기초, Part 2: core 분석 (한글) file 가을의 곰을... 2012.03.20 5089
107 JSTL 기초, Part 1: Expression Language (한글) file 가을의 곰을... 2012.03.20 4622
» [정리] EL :: Function file 가을의 곰을... 2012.03.20 7600
105 [정리] EL :: Basic file 가을의 곰을... 2012.03.20 7292
104 ubuntu에서 GTK 개발환경 꾸미기 가을의 곰을... 2012.03.19 11088
103 Ubuntu에 Oracle11g 설치 가을의 곰을... 2012.03.16 7358
102 ubuntu에서 나눔글꼴 설치 가을의 곰을... 2012.03.16 6031
101 gnu free document license 번역 출간 file 가을의 곰을... 2012.02.29 7370
100 GNU 자유 문서 사용 허가서 1.2판 file 가을의 곰을... 2012.02.29 5595
99 자주 쓰이는 정규식(regular expression) 유형 가을의 곰을... 2012.02.22 6120
대표 김성준 주소 : 경기 용인 분당수지 U타워 등록번호 : 142-07-27414
통신판매업 신고 : 제2012-용인수지-0185호 출판업 신고 : 수지구청 제 123호 개인정보보호최고책임자 : 김성준 sjkim70@stechstar.com
대표전화 : 010-4589-2193 [fax] 02-6280-1294 COPYRIGHT(C) stechstar.com ALL RIGHTS RESERVED