¼Ò¼³°°ÀºJSP2ºÎ  7Àå Custom Tag & JavaMail  08 Body¸¦ ¿©·¯¹ø Æ÷ÇÔÇϴ űנ 

 

7.8 Body¸¦ ¿©·¯ ¹ø Æ÷ÇÔÇϴ ű×

 

JSP ÆäÀÌÁö¿¡¼­ ÇÊ¿äÇÏ´Ù¸é, ¹Ýº¹ÀûÀÎ ÀÛ¾÷À» À§ÇØ Å±×ÀÇ ¹Ùµð¸¦ ¿©·¯ ¹ø Æ÷ÇÔÇϰųª ó¸®ÇÏ´Â ÅÂ±× ¶óÀ̺귯¸®¸¦ ¸¸µé ¼ö ÀÖ½À´Ï´Ù. ±×¸®°í ÀÌ·± °ÍÀº ½ÇÁ¦·Î Å×À̺í ÀÛ¼º µî, ¹Ýº¹µÇ´Â °á°ú¸¦ Ãâ·ÂÇØ¾ß ÇÏ´Â °÷¿¡ À¯¿ëÇÏ°Ô »ç¿ëµÉ ¼ö ÀÖ½À´Ï´Ù. ¹°·Ð ¹Ýº¹µÇ´Â Ƚ¼ö¿Í ó¸® ¹æ¹ý µîµµ Á¶Á¤ÇØ ÁÙ ¼ö ÀÖ½À´Ï´Ù.

 

Áö±Ý±îÁö´Â ÅÂ±× Çڵ鷯 Ŭ·¡½º¸¦ ¸¸µé±â À§Çؼ­ Tag ÀÎÅÍÆäÀ̽º³ª ±×°ÍÀ» ±¸ÇöÇÑ TagSupport ÀÎÅÍÆäÀ̽º »ç¿ëÇß½À´Ï´Ù. ÇÏÁö¸¸ ÀÌ·± Ŭ·¡½ºµéÀº ºñ±³Àû °£´ÜÇÑ Å±׸¦ ¸¸µå´Â µ¥´Â ½±°í À¯¿ëÇÏ°Ô ¾²ÀÏ ¼ö ÀÖÁö¸¸, Áö±Ý »ìÆìº¸´Â Body¸¦ ¿©·¯ ¹ø ¹Ýº¹ÀûÀ¸·Î Æ÷ÇÔÇϴ ű×ÀÇ Çڵ鷯¸¦ ¸¸µé±â´Â ºÎÀûÀýÇÕ´Ï´Ù. ÀÌ·± Body ³»¿ë¿¡ °ü·ÃµÈ Á»´õ º¹ÀâÇÑ ÅÂ±× ÀÛ¾÷À» À§Çؼ­ Á¦°øÇØ ÁÖ´Â °ÍÀÌ BodyTag ÀÎÅÍÆäÀ̽º¸¦ ±¸ÇöÇϰí, TagSupport Ŭ·¡½º¸¦ »ó¼ÓÇÑ °­·ÂÇÑ BodyTagSupport Ŭ·¡½ºÀÔ´Ï´Ù. ¿©±â¼­´Â ÀÌ BodyTagSupport Ŭ·¡½º¸¦ È®ÀåÇØ¼­ ÅÂ±× Çڵ鷯¸¦ ¸¸µé¾î º¸°Ú½À´Ï´Ù.

 

´ÙÀ½ÀÇ ¿¹Á¦´Â °£´ÜÇÑ ¹ÙµðÀÇ ¸Þ½ÃÁö¸¦ ¿©·¯ ¹ø Ãâ·ÂÇØÁִ ű׸¦ À§ÇÑ Çڵ鷯ÀÔ´Ï´Ù.

 

RepeatBody.java

¹Ùµð¸¦ ¿©·¯¹ø Ãâ·ÂÇÏ´Â ÅÂ±× Çڵ鷯

package tags;

import java.io.*;
import javax.servlet.jsp.*;
import javax.servlet.jsp.tagext.*;

public class RepeatBody extends BodyTagSupport {

  int repeat = 1;
  
  public int doAfterBody(){
    try{
      JspWriter out = getPreviousOut();
      BodyContent body = getBodyContent();
      String contents = body.getString();
      for(int i = 0; i<repeat; i ++){
        out.print(i+contents+"<br>");
      }      
    }catch(Exception e){}
    return SKIP_BODY;
  }
  public void setRepeat(String repeat){
    this.repeat = Integer.parseInt(repeat);
  }
}

C:\jakarta\webapps\MySample\WEB-INF\classes\tags>javac RepeatBody.java

 

Body¸¦ ¿©·¯ ¹ø Ãâ·ÂÇϱâ À§Çؼ­ BodyTagSupportŬ·¡½º¸¦ »ó¼Ó¹Þ¾Ò½À´Ï´Ù.

 

n        public class RepeatBody extends BodyTagSupport

 

ÅÂ±× Å¬·¡½º¸¦ ¸¸µé±â À§Çؼ­´Â doStartTag¿Í doEnd ¸Þ¼­µåÀÇ ±¸ÇöÀÌ ÇÊ¿äÇÏÁö¸¸, ¿©±â¼­´Â »ó¼Ó¹ÞÀº BodyTagSuppoert Ŭ·¡½º°¡ ±¸ÇöÇØ ³õÀº °ÍÀ» ÀçÁ¤ÀÇÇÒ Çʿ䰡 ¾øÀ¸¹Ç·Î ½Å°æ¾²Áö ¾Ê°í, ´ÜÁö °¡Àå Áß¿äÇÑ ¿ªÇÒÀ» ÇÏ´Â doAfterBody ¸Þ¼­µå¸¸À» ÀçÁ¤ÀÇÇÏ¿© ¹Ýº¹¿¡ °üÇÑ °ÍÀ» ó¸®ÇØ ÁÖ¾ú½À´Ï´Ù.

 

doAfterBody ¸Þ¼­µå¸¦ Çѹø ´õ ¼³¸íÇÏÀÚ¸é, ÅÂ±× ¹Ùµð¸¦ ´Ù·ç±â À§Çؼ­ ¹Ýµå½Ã ÀçÁ¤ÀÇ ÇØ¾ß ÇÒ ¸Þ¼­µå·Î¼­, ±× ³»ºÎ¿¡¼­ ³»¿ëó¸®, ¹Ýº¹ µîÀÇ ÀÛ¾÷À» ÇÏ°í °á°ú·Î´Â º¸Åë SKIP_BODY¸¦ ¸®ÅÏ ÇØ¼­ ¹Ùµð°¡ ´õ ÀÌ»ó 󸮵ÇÁö ¾Êµµ·Ï ÇÕ´Ï´Ù.

 

n        public int doAfterBody(){

n          try{

n            JspWriter out = getPreviousOut();

n            BodyContent body = getBodyContent();

n            String contents = body.getString();

n            for(int i = 0; i<repeat; i ++){

n              out.print(i+contents+"<br>");

n            }                               

n          }catch(Exception e){}

n          return SKIP_BODY;

n        }

 

¿©±â¼­´Â BodyContent °´Ã¼·Î BodyÀÇ ³»¿ëÀ» ¾ò¾î¼­ repeat ¼Ó¼ºÀ¸·Î ³Ñ¾î¿Â °ª ¸¸Å­ ¹Ýº¹Çؼ­ Ãâ·ÂÇØ ÁØ ÈÄ SKIP_BODY¸¦ ¸®ÅÏÇϰí ÀÖ½À´Ï´Ù.

 

´ÙÀ½Àº Ãß°¡µÈ TLD¸¦ »ìÆìº¸°Ú½À´Ï´Ù.

 

noveltag.tld

<!-- ... ... ¾ÕºÎºÐ »ý·« -->
  <tag>
    <name>repeatbody</name>
    <tag-class>tags.RepeatBody</tag-class>
    <description>repeats body contents  </description>
    <attribute>
      <name>repeat</name>
      <required>false</required>
    </attribute>
  </tag>
<!--  ¿©±â±îÁö RepeatBody¸¦ À§ÇØ Ãß°¡µÈ ºÎºÐ -->
</taglib>

 

repeat¶õ À̸§À¸·Î tags.RepeatBody Ŭ·¡½º¸¦ µî·ÏÇϰí ÀÖ½À´Ï´Ù. ±×·³ Ä¿½ºÅÒ Å±׸¦ »ç¿ëÇÏ´Â JSP¸¦ º¸°Ú½À´Ï´Ù.

 

repeatbody.jsp

Body ³»¿ëÀ» ¹Ýº¹ÇÏ´Â Ä¿½ºÅÒ Å±×ÀÇ JSP

<%@ page contentType="text/html; charset=euc-kr" %>
<%@ taglib uri ="noveltag.tld" prefix = "noveljsp" %>
<html><body><h5>
<noveljsp:repeatbody repeat="10">
µ¿Çع°°ú ¹éµÎ»êÀÌ ¸¶¸£°í ´âµµ·Ï ±×´ë »ç¶ûÇϸ®~~
</noveljsp:repeatbody>
</h5></body></html>

 

°á°ú¸¦ º¸½Ã¸é Body ³»ÀÇ ¹®ÀÚ¿­ÀÌ repeat·Î Á¤ÇÑ ¼ö¸¸Å­ 10¹ø Ãâ·ÂµÇ¾úÀ½À» ¾Ë ¼ö ÀÖ½À´Ï´Ù.



jabookÀúÀÚ¸íÇÔ
Á¦¸ñ:¼Ò¼³°°ÀºJSP2ºÎ
ÀúÀÚ:ÃÖ¿µ°ü