<repString.java>

 


 

package bean;

 

public class repString

{           

             public static String filter( String oldString, String from, String to )

             {

            

                 String newString = oldString;

                 System.out.println(from + " === " + to);

                 int offset = 0; 

                 while( (offset = newString.indexOf( from, offset ))>-1 )

                 {

                     StringBuffer temp = new StringBuffer( newString.substring( 0, offset ) );

                     temp.append( to );

                     temp.append( newString.substring( offset+from.length() ) );

                     newString = temp.toString();

                     offset++;

                 }       

                 System.out.println(newString);

                 return newString;

             }

 

}

 

이렇게 만들어진 클래스는 다른 클래스에서 쓸수도 있지만 태그핸들러 클래스를 만든다면 커스텀 태그에서도 쉽게 쓸수 있을 겁니다.

 

<repStringTag.java>

package tag;

 

import javax.servlet.jsp.*;

import javax.servlet.jsp.tagext.*;

import java.io.*;

import bean.*;

 

public class repStringTag extends BodyTagSupport

{

             String input;

             String replace;

            

             public void setInput(String input){

                           this.input = input;

             }

            

             public void setReplace(String replace){

                           this.replace = replace;

             }

            

             public int doAfterBody(){

                           BodyContent body = getBodyContent();

                           String filteredBody = repString.filter(body.getString(),input,replace);

                           try{

                                        JspWriter out = getPreviousOut();

                                        out.print(filteredBody);

                           }catch(IOException e){

                                        System.out.println("Error :" + e);

                           }

                           return SKIP_BODY;

             }

}

 

다음은 이렇게 만들어진 태그핸들러를 등록해 주면 됩니다.

 

<taglib_1_0.tld>

 

………………

<중략>

………………

<tag>

             <name>repString</name>

             <tagclass>tag.repStringTag</tagclass>

             <bodycontent>JSP</bodycontent>

             <info>Replace one character into another</info>

             <attribute>

                           <name>input</name>

                           <required>true</required>

             </attribute>

             <attribute>

                           <name>replace</name>

                           <required>true</required>

             </attribute>

</tag>

………………

<중략>

………………

 

 

이제는 모두 만들어진 빈즈와 태그핸들러를 실제로 JSP페이지에서 구현만 하면 되겠군요..

 

아참 그리고 검색기능이 제대로 동작 하도록 하기 위해 NoticeList.java 의 getWhere() 메서드를 조금 수정하도록 하겠습니다.

 

<NoticeList.java>

……………

<중략>

……………

import bean;

 

private String getWhere(){

             String where;

             if(field == null || field.length() == 0){

                           where = "";

             }else{

                           where = "WHERE " + field + " LIKE '%" + repString.filter(key,"'","\'") + "%'";  

             }

             return where;

}

……………

<중략>

……………

<view.jsp>

……………

<중략>

……………

<tr>

             <td width=100%>

<tl:repString input="\\n" replace="<BR>">

<jsp:getProperty name="notice" property="content"/>

</tl:repString>

             </td>

</tr>

……………

<중략>

……………

<%

// 조회수 증가 시키기

NoticeList.incrCnt(no);

%>

……………

<중략>

……………

 

이렇게 해서 공지사항 만드는 것 까지 알아 보았습니다.

의외로 글이 길어 진 것 뿐만 아니라 내용전달이 제대로 되었는지도 잘 모르겠군요.

가능하면 쉽게 설명하려 했는데 결국 자바자체의 이해가 필수 였던 것 같습니다.

앞으로는 자바자체에 대한 내용은 TIP & Tech에 같이 올려두도록 하겠습니다.

 



참고 문서 및 사이트
- 태그 라이브러리 튜토리얼 (www.orionsever.com)
- www.webdox.co.kr
- jsp.boolpae.com
- Web Development with JavaServerPages (인포북)
- 예제로 배우는 자바 프로그래밍 (한빛 미디어)
- 퍼펙트 JSP (한빛 미디어)