JSP - 32. 계층형 게시판과 댓글

갓김치·2021년 1월 4일
0

JSP+Spring

목록 보기
33/43
  • 스프링을 배우면 안 만들어도 되는 것들
    • filter chain
    • front controller
    • handler mapping
    • handler adpater
    • view resolver
  • 게시판 남은 기능
    • 게시글 삭제
    • 댓글
    • 답글
  • 미션해결하기
    • 로직을 고민할 때는 코드가 존재하지 않는다 -> 의사코드로 논의
    • 먼저 코드를 짜려고 하지 말고 의사코드를 먼저 짤 것

게시판

글삭제를 의사코드로 표현하기

클라이언트사이드
1. 삭제 명령을 발생시킬 수 있는 ui
2. 삭제 명령시 필요한 것: 글번호, 비밀번호
3. 데이터를 서버로 넘겨야함
1) 바디 구성해야함 (비밀번호 포함되어있음) = post
서버사이드
4. 검증실패했다면 에러메시지 내보내면서 다시 입력할 수 있도록 내보내야함
5. 검증통과하면 로직돌려야함
1) 인증받은 비번 암호화
2) 삭제처리: reply(cascade), attach(cascade x-메타는 db, 이진은 미들티어, 메타는 롤백으로 트랜잭션 관리가 가능하다면 복원시킬 수 있으니 메타 먼저삭제후 이진데이터 삭제)
3) 메타->게시글->이진데이터 삭제
6. 메타와 게시글 지우는 쿼리문 2개 필요
7. 결과
1) 비밀번호오류난케이스 -> boardView
2) 게시글삭제에 성공한 케이스 -> boardList로 보냄
3) 서버사이드 문제로 게시글 삭제 실패 -> boardView

답글쓰기

DB 수정

  1. BO_NO MAX값 확인 (173)
  2. BO_NO DESC로 세번째글(171)의 자식글로 하려고함
UPDATE BOARD
SET BO_PARENT = 171
WHERE BO_NO= 173;
  1. BO_NO 순으로 무조건 역순으로 정렬하는게 아닌, PARENT밑으로 가도록 정렬조건을 설정해야함
SELECT A.BO_NO,     DECODE(level, 1, '', LPAD('re:', 6*(LEVEL-1)+3, '1nbsp;'))||BO_TITLE
       --,BO_CONTENT,BO_WRITER,    BO_DATE,    BO_HIT
       --,BO_REC,    BO_PASS,    BO_IP
       --,BO_MAIL,    BO_PARENT
  FROM BOARD A
--WHERE BO_TITLE LIKE '%글%'
START WITH BO_PARENT IS NULL
CONNECT BY PRIOR BO_NO = BO_PARENT -- 부모글의 글번호가 먼저 나와야하니 PRIOR (부모글의 글번호에 자식글이 연결 되어야함)
ORDER SIBLINGS BY BO_NO DESC -- 1단계는 1단계, 2단계는 2단계 siblings끼리 정렬 
;
  1. INSERT시에도 BO_PARENT를 넣어주어야함

파일 다운로드받기

bit8개 byte=자바의 최소한의 데이터단위
octet-stream: 8bit(byte)단위로 보내겠다
다운로드한다면 원본파일명으로 다운(설정안해주면 download.do 현재 uri로 다운됨)
https://meyerweb.com/eric/tools/dencoder/
브라우저종류에따라 파일명인코딩이 다를수도있다는걸..아세요..

댓글 (3시간작업/1시간리뷰)

  • 한페이지 안에서 crud가 전부있음 -> 모듈화가 중요
  • ALL 비동기
  • 수정,삭제,등록 셋중하나라도 일어나면 댓글이 새로 조회가 되어야함 -> 공통모듈화
  • 입력,수정,조회 부분이 글목록에선 모달로 보여야하고 글 내용에서는 본문에 함께보여야함

조회: /reply/replyList.do

클라이언트사이드*
1. 본문글 로드되며 비동기 요청이 발생되어 replyBody부분에 삽입되어야함
2. 페이징처리하는 ui필요함
3. bo_no가 필수파라미터, get방식으로 요청발생
서버사이드
3. 덧글목록조회하여 json으로 데이터 보내야함, 조회쿼리필요
클라이언트사이드
4. 페이징처리하여 append하는 jquery함수필요

쓰기: /reply/replyInsert.do

  • 작성자, 비밀번호, 내용 (글번호, 아이피)
  • 클릭시 모달이 떠서 작성자,비번,내용 쓰는 ui가 떠야하고 그에 따른 처리 필요

수정: /reply/replyUpdate.do

  1. 수정,삭제버튼 클릭시 this에 해당하는 rep_no획득해야함
  2. 패스워드 인증 (서버사이드검증)
  3. 조회화면으로 보였던 ui가 수정으로 바뀌어야함

삭제: /reply/replyDelete.do

profile
갈 길이 멀다

0개의 댓글