본문 바로가기
Web/JSP

JSP(25) - Model2 게시판

by SeleniumBindingProtein 2022. 1. 29.
728x90
반응형

1. 답변형 게시판 테이블 (t_board) 

        컬럼이름                  속성                 자료형      크기      Null 여부     key     기본값
       ------------------------------------------------------------------------------        
    1) articleNo                 글번호             number      10           N         PK
        parentNo             부모글번호          number     10            N                            0
        title                         글제목               varchar2   500         N         
        content                  글내용                varchar2    4000     Y      
        imageFileName    이미지파일이름    varchar2   100         Y      
        writeDate               작성일                date                          N                        sysdate
        id                            작성자ID             varchar2    20          N        FK

2. 단위 기능 (논리적인 기능)
    1) 예
        - 게시판 글 조회시 해당 글을 조회하는 기능과 조회 수를 갱신하는 기능
        - 쇼핑몰에서 상품 주문 시 주문 상품을 테이블에 등록 후 주문자의 포인트 갱신하는 기능
        - 은행에서 송금 시 송금자의 잔고를 갱신하는 기능과 수신자의 잔고를 갱신하는 기능 
    2) View             Controller              Model
                                                    --------------------
                                                      Service        DAO          

3. 계층형 질의 (Hierarchical query)                                               
    1) 테이블에 계층 형 데이터가 존재하는 경우 조회하기 위해 계층형 질의를 사용
    2) 계층 형 데이터 
        - 동일 데이블에 계층적으로 상위와 하위 데이터가 포함된 데이터를 말함.

    3) 오라클 계층형 SQL 
        - select 
          from table
          where
          start with 조건 : 계층 구조 전개의 시작 위치를 지정하는 구문.
                                      루트 데이터 지정함.
          connect by prior A and B  :  connect by
                                                             - 전개될 자식 데이터를 지정하는 구문. 
                                                          prior (PK,자식) = (FK, 부모) 
                                                             - 계층구조에서 부모데이터에서 자식데이터 방향으로 전개
                                                          prior (FK, 부모) = (PK,자식)                                                                                     
                                                             - 계층구조에서 자식데이터에서 부모데이터 방향으로 전개
          order siblings by 컬럼    : 형제 노드(동일 level) 사이에서 정렬 수행

        - level  : 계층형 질의에서 사용되는 가상컬럼
        - connect_by_isleaf : 전개과정에서 해당데이터가 리프 데이터이면 1, 그렇지 않으면 0  

4. 게시글 목록 보기

5. 게시판 글쓰기
    1) 글쓰기를 요청
    2) 글쓰기창에서 글을 입력하고서 Controller에 /board/addArticle.do 요청 
    3) Controller에서 Service 클래스로 입력한 글 정보를 전달 => 테이블에 글 추가 
    4) 새글 추가하고 Controller에게 다시  /board/listArticles.do로 요청, 전체글 표시.

6. 게시 글번호에 해당하는 폴더를 생성후에 해당 이미지 파일 저장
    1) upload()
        - 첨부한 파일은 임시로 temp 폴더에 업로드함
    2) 컨트롤러는 서비스(Service) 클래스의 addNewArticle() 호출시 새 글 정보를 인자로 전달해 테이블에 추가한 후 새 글 번호 반환 
    3) 컨트롤러에서 반환 받은 새 글번호 이용해 해당 폴더 생성후 temp 폴더의 파일을 새글번호 폴더로 이동  

7. 글 상세보기 기능 
    1) 글 목록창에서 글 제목 클릭
        - 컨트롤러에 /board2/viewArticle.do?articleNo=글번호로 요청 
    2) 컨트롤러는 전송된 글 번호로 글 정보를 조회(select)후 viewArticle.jsp(상세보기창) 로 포워딩        
    3) viewArticle.jsp에 글과 이미지 파일이 표시.    

8. 글 수정하기 기능
    1) 글 상세보기(viewArticle.jsp)창에서 수정하기 버튼 클릭해 입력창을 활성화함
    2) 글 정보와 이미지를 수정한 후 수정반영하기 버튼 클릭해서 컨트롤러에게 /board2/modArticle.do로 요청
    3) 수정된 데이터를 Map에 저장하고 반환 => 테이블에 반영
    4) 원래 이미지 파일을 삭제    

9. 글 삭제 기능
    1) 글상세보기(viewArticle.jsp)창에서 삭제하기 클릭 => /board2/removeArticle.do 요청
    2) 컨트롤러에서는 1)에서 전달받은 글번호에 대한 글과 이와 관련된 자식 글들을 삭제
    3) 삭제된 글에 대한 이미지 파일 저장 폴더도 삭제   

10. 답글 쓰기 기능
    1) 글상세보기(viewArticle.jsp)창에서 답글쓰기 클릭 => /board2/replyForm.do 요청하면서 부모글 번호(parentNO)를 전송
    2) 답글쓰기창(replyForm.jsp)에서 글을 작성한 후 요청 => /board2/addRely.do 
    3) 테이블에 부모 글 번호와 함께 게시글 추가        

11. 페이징 기능 
    1) 하단에 보이는 숫자는 페이지 번호 (pageNum)                                                  
    2) 한 페이지마다 10개 글이 표시됨, 페이지 10개가 모여 한개의 섹션(section) 됨.
    3) 섹션 하나는 1번재 페이지부터 10번째 페이지임.
    4) 두번째 섹션은 11번째 페이지부터 20번째 페이지까지임.
        - 사용자가 [2] 클릭 => section=1, pageNum=2

    서브쿼리문 실행 순서
    1) 기존 계층형 구조로 글 목록을 일단 조회함
    2) 이 결과에 대해 다시 ROWNUM(recNum) 이 표시되도록 서브 쿼리문 이용해서 다시 조회함.
    3) ROWNUM이 표시된 2)번 결과에서 section과 pageNum으로 계산된 
         where절의 between 연산자 사이의 값에 해당 ROWNUM이 있는 레코드들만 최종 조회함.
















728x90
반응형

'Web > JSP' 카테고리의 다른 글

JSP(24) - Model2 회원  (0) 2022.01.29
JSP(23) - Jquery Ajax  (0) 2022.01.29
JSP(21) - JSTL  (0) 2022.01.29
JSP(19) - 게시판 만들기(Model1)  (0) 2022.01.29
JSP(15) - JSP 내장객체(내장변수)  (0) 2022.01.29

댓글