본문 바로가기

강의

자바블로그(스프링부트) - 200803~

하고싶은 것

- 댓글/본문 리스팅 > 내용이 너무 길어질 경우 자동으로 줄바꿈을 하질 않아서 테이블 형식이 엉망이 됨.

- 동영상 첨부를 할 경우 댓글 작성 시간이 길어짐. 이 때, 작성 버튼이 비활성하도록 교체하고 싶음.

- 관리자 모드

- pick 기능

 

해야할 것

 

 

 

0817

- fork해서 하는 중.

문제 발생 : 수정 시, 본래 파일이 존재했던 것은 다른 파일로 수정이 가능한데, 삭제를 하거나, 원래 첨부 파일이 존재하지 않았던 것에선 수정 후 db의 insert가 실행되지 않음.


0814

질문 : fileIdsStr에 대한 이해력 부족

더보기

fileIdsStr은 file을 올리고 생성된 id들을 반환하는 값임.

즉, 해당 값은 파일 업로드 이후에 갱신됨.

startUploadFiles를 거치는데 해당 부분 동영상 올려주시면 다시 보고 정리하기..ㅎㅎ...

 

- modify.jsp

첨부 비디오에서 input 태그 안에 name="file__article__${article.id}__common__attachment__1"이 존재하는데, 본래 ${article.id} 부분은 write.jsp에서 '0'이었음.

그런데 왜 modify.jsp에서는 0이 아닌 ${article.id}을 넣었을까?

write.jsp에선 아직 게시글 생성 전이므로 해당 작성중인 article.id가 아직 존재하지 않는다.

그렇기에 어떤 id와 연결되었는지를 의미하는 relId에 임시로 0을 넣고 file을 db에 올린 후, 

db에 저장되어 생성된 file의 id를 return하여 해당 값을 fileIdsStr에 넣는다.

(fileIdsStr인 이유 : 파일이 여러개일 수 있으므로. 예를 들어 6번 게시물을 생성하는 과정에서 첨부 영상을 2개 올려 file의 Id가 8, 9인 데이터가 생겨났다면 fileIdsStr에 '8,9'를 넣는다.)

그리고 article을 db에 올린 후, 생성된 article의 id를 받아서 바로 전에 저장되었던 file 데이터로 전달하여,

임시로 넣었던 0 대신 해당 article의 id를 넣는다.

그런데 modify를 하는 시점에선 게시글은 이미 생성된 이후이고, 당연히 id도 존재한다.

그렇기에 임시로 0을 넣고 나중에 진짜 article id 값으로 교체해주는 것이 아니라, 

처음부터 article id 값을 넣을 수 있는 것이다.

 

! article이 file의 id를 기억하는 형식이 아닌, file이 article의 id를 기억하는 형식 !

Ex. 만약 한 게시글의 첨부 파일이 100개인 경우,

    - article이 file의 id를 기억하는 형식 : article은 100개의 id를 저장해야 함.

    - file이 article의 id를 기억하는 형식 : 각 file은 한 개의 article id만 저장하면 됨.

 


0813

- 게시물 작성

   - 동영상 첨부도 가능

- 게시물 수정

   - 첨부한 동영상이 있다면 해당 파일 교체/삭제 가능

   - 첨부한 동영상이 없다면 동영상 업로드해서 첨부 가능

- 게시물 삭제

   - 첨부한 동영상이 있다면 같이 삭제됨

 

- 댓글 수정

   - 첨부한 동영상이 있다면 해당 파일 교체/삭제 가능

   - 첨부한 동영상이 없다면 동영상 업로드해서 첨부 가능


0812

- 게시물 관련

   - 게시물 작성시 동영상 첨부

   - 게시물에 첨부된 동영상 수정 (재업로드)

   - 게시물에 첨부된 동영상만 삭제

   - 이미 등록된 게시물에 동영상 첨부

- 게시물 댓글 관련

   - 게시물 댓글에 첨부된 동영상 수정 (재업로드)

   - 게시물 댓글에 첨부된 동영상만 삭제

   - 이미 등록된 게시물 댓글에 동영상 첨부

- 댓글 수정

- 댓글에 동영상 업로드 및 스트리밍 기능 구현

- 스트리밍에 구아바 캐시 적용

  > '구아바 캐시'란?

     캐시를 쉽게 사용할 수 있도록 다양한 기능을 제공하는 오픈 소스 라이브러리.

     간단한 코드를 통해  캐시 크기, 캐시 시간, 데이터 로딩 방법, 데이터 Refresh 방법 등을 제어 가능.

     Cache expire되더라도 DB 등의 요청은 한 번만 날라가고,

     그 뒤에 동시에 들어온 데이터 요청은 첫번째 요청이 끝나 캐시 데이터가 다 채워진 그 결과만 받아가게 처리하여,

     부하를 줄여주는 역할을 할 수 있다.

- 댓글 작성시 첨부파일이 없을 경우 파일 업로드 로직 스킵


0811

- detail.jsp에서 댓글 수정 진행

   - 문제점 : '수정 완료' 버튼 외에도 폼 구역의 아무 곳을 두 번 클릭하면 수정 적용됨

   - 해결 : onclick > onsubmit

      - onclick은 클릭할 때라서 폼 범위를 클릭하면 ReplyList__submitModifyForm이 실행됨.

        이를 onsubmit으로 고치면 submit을 할 때 수정이 실행되기에 해결됨.

- ArticleReply -> Reply 변경 및 테이블 수정


0810

- memberId를 존재하지 않는 임의의 멤버id로 입력한 게시물은 현재 가져올 수가 없음. > inner join때문. member 컨트롤러를 온전히 완성하면 해결될 거라 예상.

- 주소창에 /usr 추가 (코드 변경했기 때문)

- 댓글 작성시 memberId가 들어가지 않아서 ERROR 발생

- extra > __라고 한 것을 .으로 호출 가능하도록. (참고 : java-blog의 Dto) > 미해결 어떻게 ???


0806

at에 실시간 댓글 기능 넣기

- 구조설명

   - 데이터 가져오는 함수

      - 데이터를 서버로부터 받고 일정 시간 후에 다시 호출되는 구조

      - 그렇기 때문에 한번 호출되면 계속 자동으로 호출이 이어진다.

      - 호출 => 수신 , 잠수 후 호출 => 수신 ...

   - 데이터 삭제 함수

      - 데이터 삭제 사실을 서버에 알리고, dom을 이용해서 해당 tr 제거(제이쿼리로 제거)

   - 데이터 등록 함수

      - 데이터 추가 사실을 서버에 알림(끝)

   - 데이터 수정 함수

      - 데이터 수정 사실을 서버에 알리고, dom을 이용해서 해당 tr의 내용을 수정된 내용으로 변경

- 댓글 삭제 > 정말 삭제하겠냐는 창에서 취소를 눌러도 삭제됨 > 해결 : js를 삭제하고 '삭제' a태그 안에 if문의 confirm을 이용

- 댓글 작성


0805

오늘의 목표

- ajax 댓글 (새로고침하지 않아도 실시간 리스트 반영)

   - 댓글 리스트

   - 댓글 삭제 (softDelete/실제 데이터 삭제가 아닌 displayStatus 수정으로 했음.)

   - 댓글 수정 > doModifyArticleReply로 가지 않는 이유

                  > <form action="./doArticleReplyModify" onsubmit="Article__modifyReply(this); return false;">

                  > return false; 부분을 삭제하면 해결.

   - 댓글 등록 > 해결 : 0806

- 참고

   - 참고28, 댓글 수정

- 기존 코드 참고하려면 멤버 테이블도 만드는 걸 추천. articleReply table은 필수

!! 내일까지 !!

 

궁금한 거

- 7부터 이어서 하기

- 코드(클릭)에서 자손인 div가 .active 되었을 때 nav도 .active가 되는 것인지?

  > 왜냐하면 div에 .active가 붙어버리면 테두리인 nav의 pink색이 .active의 green으로 변경됨.

- 28-6에서 글 3개 추가 부분이 코드가 동일해도 되지 않는 이유는?

- 28-6과 28-7의 차이는 권한뿐?

- 코드펜에서는 되던 것(글 3개 추가)이 코드샌드박스에선 안되는 이유?? html 차이는 아래 부분과 같고, css, js는 동일.

 


0804

문제 발생

- list의 주소창에 반드시 page와 searchKeyword가 존재하지 않으면 에러가 발생함. > 생략할 수 있는 방법은???

 

기능

- 리스트

   - 리스팅

   - 검색

   - 페이징

- 상세보기

   - 뒤로가기 (리스트로 돌아가기?)

   - 다음글, 이전글

- 수정

- 삭제

   - 소프트 delete (자료 삭제가 아닌 delStatus, delDate, displayStatus 수정)


0803

구현하기

- 게시물 리스트

- 게시물 작성

- 게시물 수정

- 게시물 삭제

- 게시물 상세보기 > 보완필요

(회원기능 없음)

 

* 제출 : 소스코드 + db.sql 압축

참고