게시판 URI 및 JSP 생각하기

 

1. URI 및 JSP
  1) 리스트
 uri : /cp/bbs/list.do
 jsp : /WEB-INF/views/bbs/list.jsp
 
  2) 글쓰기 폼
 uri : /cp/bbs/write.do
 jsp : /WEB-INF/views/bbs/write.jsp

  3) 글쓰기 완료
 uri : /cp/bbs/write_ok.do -> list.do 로 리다이렉트

  4) 글보기
 uri : /cp/bbs/article.do
 jsp : /WEB-INF/views/bbs/article.jsp
 
  5) 글수정 폼
 uri : /cp/bbs/update.do
 jsp : /WEB-INF/views/bbs/write.jsp  

  6) 글수정 완료
 uri : /cp/bbs/update_ok.do -> list.do 로 리다이렉트

  7) 글삭제
 uri : /cp/bbs/delete.do -> list.do 로 리다이렉트

 

2. 흐름도와 파라미터(클라이언트가 서버에 보내는 값)
  1) 리스트

- 리스트 --> 리스트 : 페이지번호클릭(페이지번호[, 검색컬럼, 검색값])
- 리스트 --> 리스트 : 검색(검색컬럼, 검색값)
- 리스트 --> 리스트 : 초기화(검색 해제)
- 리스트 --> 글쓰기폼 : 등록하기 버튼
- 리스트 --> 글보기 : 제목클릭(글번호, 페이지번호[, 검색컬럼, 검색값])

  2) 글쓰기폼
- 글쓰기폼 --> 등록하기 : 글저장 --> 리스트로 리다이렉트
                |
           (폼 데이터 : 제목, 작성자, 내용, 패스워드)
- 글쓰기폼 --> 등록취소 : 리스트로 가기

  3) 글보기
- 글보기 --> 리스트 : 리스트버튼(페이지번호[, 검색컬럼, 검색값])
- 글보기 --> 글보기 : 이전글/다음글(이전글/다음글번호, 페이지번호[, 검색컬럼, 검색값])
- 글보기 --> 수정폼 : 수정버튼(글번호, 페이지번호)
- 글보기 --> 글삭제 : 삭제버튼(페이지번호[, 검색컬럼, 검색값])

  4) 글수정폼
- 글수정폼 --> 수정완료 : 글수정버튼--> 리스트로 리다이렉트(글보기로 리다이렉트)
                |
         (폼 데이터 : 제목, 작성자, 내용, 패스워드, 글번호, 페이지번호) // 수정할게시글번호!!
- 글수정폼 --> 수정취소 : 리스트로 가기

  5) 글삭제 --> 리스트로 리다이렉트(페이지번호[, 검색컬럼, 검색값])

 

 

자유게시판으로 사용할 DB table

더보기

-- 게시판 테이블
CREATE TABLE bbs (
num NUMBER NOT NULL,
name VARCHAR2(30) NOT NULL,
pwd VARCHAR2(50) NOT NULL,
subject VARCHAR2(255) NOT NULL,
content VARCHAR2(4000) NOT NULL, -- 1300자 이상 저장을 위해서는 CLOB
ipAddr VARCHAR2(50) NOT NULL,
hitCount NUMBER DEFAULT 0,
reg_date DATE DEFAULT SYSDATE,
CONSTRAINT pk_bbs_num PRIMARY KEY(num)
);

-- 게시판 시퀀스
CREATE SEQUENCE bbs_seq
INCREMENT BY 1;
START WITH 1
NOMAXVALUE
NOCYCLE
NOCACHE;

 

페이징 처리에 사용하는 쿼리 Query

더보기

-- ORACLE :

 

아래 쿼리는 오라클에서 성능이 우수함
SELECT * FROM (
    SELECT ROWNUM rnum, tb.* FROM (
        SELECT num, name, subject, hitCount, 
            TO_CHAR(reg_date, 'YYYY-MM-DD') reg_date
        FROM bbs
        ORDER BY num DESC
    ) tb WHERE ROWNUM <= 끝
) WHERE rnum >= 시작;
-- 수정/삭제가 빈번히 일어나는 경우 index의 성능이 좋지 않음.

-- ORACLE 12C 이상 : 위 쿼리보다 성능이 좋지 않음
SELECT num, name, subject, hitCount,
    TO_CHAR(reg_date, 'YYYY-MM-DD') reg_date
FROM bbs
ORDER BY num DESC
OFFSET 30 ROWS FETCH FIRST 10 ROWS ONLY;
---------------------------------
-- MySQL
SELECT num, name, subject, hitCount,
    DATE_FORMAT(reg_date, '%Y-%m-%d') AS reg_date
FROM bbs
ORDER BY num DESC
LIMIT 건너뛸개수, 가져올개수;

 

+ Recent posts