이번강좌에서는 공지사항을 만들어 보도록 하겠습니다.

기능이나 형태면에서 게시판과 상당히 많은 부분이 비슷합니다.

따라서 이번 강좌의 핵심은 복잡한 게시판 구현을 위한 요소 기술 습득의 전 과정 이라고 할 수 있겠습니다.

중요한 것은 스크립틀릿 차원에서 개발하는 것이 아니라 중요로직 부분은 빈즈로 처리하고 빈즈의 처리 결과는 커스텀 태그를 이용하여 만들어 보도록 하겠습니다.

100% 커스텀 태그로 가야 한다고 생각은 하지만 역시 문제가 있다고 생각합니다.

그래서 가능한 많은 부분을 커스텀 태그로 처리하여 만들어 보겠습니다.

 

1.구현기능

 

- 목록 출력(순환기능의 커스텀 태그사용)

- 페이징 구현(setProperty 이용)

- 검색 기능

- 글 보기

 

2.Class 정의

 

- 테이터 정의 및 setter/getter 메서드(DB Field 별)

- 목록출력 / 해당글 내용 가져오는 클래스

- 태그핸들러 클래스

- 도우미 클래스(TagExtraInfo)

- 기타 유틸리티 클래스(줄바꿈 처리)

 

* 디렉토리 구조

<d>WEB-INF

            ---- <d>classes

                                ------<d>bean

                                                    <f>repString.class            

                                ------<d>notice

                                                    <f>NoticeList.class

                                                    <f>NoticeRec.class            

                                ------<d>tag

                                                    <f>IterateTag.class

                                                    <f>IterateTEI.class

                                                    <f>repStringTag.class            

            ---- <d>tlds

                                       <f>taglib_1_0.tld

            <f>web.xml

<f>list.jsp

<f>PageList.jsp

<f>view.jsp        

                                                                                           * <d> - directory

                                                                                           * <f> - file

 

 

 

3.DB Schema 정의

 

USE testdb;

 

CREATE TABLE NOTICE_T(

             NO INT UNSIGNED NOT NULL PRIMARY KEY auto_increment,

             SUBJECT VARCHAR(80) NOT NULL,

             CONTENT TEXT NOT NULL,

             REGI_DATE DATE,

             CNT INT NOT NULL

);

 

4. 데이터정의 및 setter/getter 메서드

 

제목을 써놓고 보니까 좀 이상하긴 하네요.. 제가 아는 분의 말씀으로는 이런 클래스를 model 이라고 하시더군요.. 소위 MVC 모델중 M 에 해당하는 부분입니다.

이 클래스는 말그대로 데이터타입을 정의하고 그 데이터들을 가져오거나 설정하는 등의 메서드로 구성 되어 있습니다.

 

우리가 쓰고자 하는 DB Field 별로 멤버 변수를 지정하고 이들을 가져다 쓰기위한 getter 메서드와 설정하기 위한 setter 메서드를 정의하면 됩니다.

 

<NoticeRec.java>

package notice;

 

import java.io.*;

import java.util.*;

 

public class NoticeRec implements Serializable{

             public int num;                            // 글의 순번(index가 아님)

             public int no;                               // 글번호(index)

             public String subject;                          // 글제목

             public String content;                          // 글내용

             public String regi_date;                          // 등록일

             public int cnt;                              // 조회수

            

             public NoticeRec(){}

            

             // getter , setter 메서드

             public int getNum(){return num;}

             public void setNum(int num){this.num = num;}

             public int getNo(){return no;}

             public void setNo(int no){this.no = no;}

             public String getSubject(){return subject;}

             public void setSubject(String subject){this.subject = subject;}

             public String getContent(){return content;}

             public void setContent(String content){this.content = content;}

             public String getRegi_date(){return regi_date;}

             public void setRegi_date(String regi_date){this.regi_date = regi_date;}

             public int getCnt(){return cnt;}

             public void setcnt(int cnt){this.cnt = cnt;}

}

 

 



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