11/28 52-6 [JSP] EL에서 나만의 태그 라이브러리 만들기
[EL에서의 자바 클래스 메소드 호출]
하는 걸 거창하게 말하면 나만의 태그 라이브러리 만들기!!
우선 또 한바탕 다운받고 설정을 해야 함
https://www.google.com/search?q=jakarta-taglibs-standard-1.1.2.zip+download&client=f[…]XaAFwAXgAgAFgiAG_AZIBATKYAQCgAQHIAQrAAQE&sclient=gws-wiz-serp
저거 다운로드 -> utility에 넣어 놓음
압축풀고 tld 폴더 안에 fn.tld 여기있는 function을 복붙할 것임!!
function 틀을 가져다가 쓸 거임 !
그러고나서 다시 이클립스로!
먼저 MyTagLib파일 생성
src/main/java 에서 class생성!
패키지명 eltag/MyTagLib.java 으로생성
여기에다가
자바할 때 했던 common util 의 메소드 isNumber 가져와서
getGender 메소드 만들기
mytag.tld 만들기
package eltag;
public class MyTagLib {
//반드시 메소드가 public, static, 반환값有 이 세가지가 모두 만족해야 함...
public static boolean isNumber(String value) {
for(int i=0 ; i<value.length();i++){
if(!(value.codePointAt(i) >= '0' && value.codePointAt(i)<='9'))
return false;
}
return true;
}/////////////
public static String getGender(String ssn) {
int beginIndex = ssn.indexOf("-")+1;
int endIndex = beginIndex+1;
String gender =ssn.substring(beginIndex,endIndex);
switch(Integer.parseInt(gender)) {
case 1:
case 3:
case 9: return "남성";
case 0:
case 2:
case 4: return "여성";
case 5:
case 7: return "외국인 남성";
case 6:
case 8: return "외국인 여성";
default: return "유효하지 않는 주민번호 입니다.";
}
}////////
}
mytag.tld 만들기
이거 좀 특이함 web-inf/tlds/mytag.tld생성 할 건데
먼저 tlds폴더 먼저 만들고
그냥 Untitled text file형태로 파일 만들고 나서 저장누를 때 경로를 지정 해 주면 됨,,
여기에
아까 다운받았던 파일 중 c.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 http://java.sun.com/xml/ns/j2ee/web-jsptaglibrary_2_0.xsd"
version="2.0">
이거도 따오기
<description>JSTL 1.1 core library</description> => 1.0 으로 바꾸고
<display-name>JSTL core</display-name> =>지우고
<tlib-version>1.1</tlib-version> =>1.0으로 바꾸고
<short-name>c</short-name> => my로바꿈!
<uri>http://java.sun.com/jsp/jstl/core</uri> =>지우고
이거도 여기서 따오네...
저기 위에 function 따온거 가져다가
<function>
<name>isNumber</name>
<function-class>eltag.MyTagLib</function-class>
<function-signature>boolean isNumber(java.lang.String)</function-signature>
</function>
요렇게 바꿈 !
구조가
function으로 감싸고
메소드/함수 명
메소드/함수가 있는 상대경로
타입 메소드/함수명(전체타입을포함한인자들)
mytag.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 http://java.sun.com/xml/ns/j2ee/web-jsptaglibrary_2_0.xsd"
version="2.0">
<description>JSTL 1.0 functions My library</description>
<tlib-version>1.0</tlib-version>
<short-name>my</short-name>
<function>
<name>isNumber</name>
<function-class>eltag.MyTagLib</function-class>
<function-signature>boolean isNumber(java.lang.String)</function-signature>
</function>
<function>
<name>getGender</name>
<function-class>eltag.MyTagLib</function-class>
<function-signature>java.lang.String getGender(java.lang.String)</function-signature>
</function>
</taglib>
그리고 마지막!
web.xml 에가서
<!-- 나만의 태그 라이브러리 등록 -->를 등록한다!
<!-- 나만의 태그 라이브러리 등록 -->
<jsp-config>
<taglib>
<taglib-uri>
/WEB-INF/tlds/mytag.tld
</taglib-uri>
<taglib-location>
/WEB-INF/tlds/mytag.tld
</taglib-location>
</taglib>
</jsp-config>
그러면 셋팅 끝 !!
이제 MytagLib.jsp코드작성
먼저 파일 맨 위에다가 내가만든 태그 불러와 주고
<%@ taglib prefix="my" uri="/WEB-INF/tlds/mytag.tld" %>
<div class="jumbotron bg-info">
<h1>EL식에서 사용할 나만의 태그 라이브러리</h1>
</div>
<ul class="list-unstyled">
<li>\${my:isNumber("100사") } : ${my:isNumber("100사") } </li>
<li>\${my:isNumber("1004") } : ${my:isNumber("1004") } </li>
<li>\${my:getGender("123456-1234567") } : ${my:getGender("123456-1234567") }</li>
<li>\${my:getGender("123456-8234567") } : ${my:getGender("123456-8234567") }</li>
</ul>
어후 개피곤
얼른자야지... zZ