학원/JSP

11/28 52-6 [JSP] EL에서 나만의 태그 라이브러리 만들기

도원결의 2022. 11. 29. 00:40

[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