본문 바로가기
springboot 수업일지

21일차 댓글(comment) 도메인, 함수 생성

by wannabe 2021. 7. 19.

애자일

 

JSESSIONID를 줌

 

로그인폼으로 옮겨지면??? 쿠키값을 가지고 간다(안드로이드에서는 직접 해줘야함/브라우저에서는 자동으로 해줌)

Referer : 이전페이지 알려줌

 

strict-origin-when-cross-origin :자바스크립트 요청 제한

content-type : text/html =>viewResolver가 .jsp파일을 톰켓에서 자바파일 해석해서 html파일로 돌려준다

 

User-Agent 여기에 적힌 브라우저로 접근하는 것만 가능한다(다른 접근을 막는다)

                 ->하지만,,,postman으로 헤더설정 가능 

 

<댓글 쓰기>

json데이터를 자바스크립트에서 받아서 ok받으면/ 해당 페이지에 document.querySelector로 넣을 곳을 찾아서 정보를 넣으면 된다!!!!!!!!!! 

 

기존 그림에 새 한마리를 그리고 싶다면/?? ajax

form태그 방식은/?? 새로운 도화지에 기존 그림을 그대로 다시 그리고 새까지 그리는거. 기존 그림은 쓸데없이 다시 그리게 됨. 

 

그렇다면? 기존그림에서 부분적으로만 추가로 그리고 싶다면??? 

-새가 그려질 위치를 찾아서 새를 그리면 됨

 

그리고 내가 기존 그림에서 나무를 없애고 자동차로 바꾸고 싶다면???? 나무라는 요소를 찾아서 없애고 그 자리에 자동차를 그린다

 

그리고 수정하는 부분이 많다면(요청이 많다면)?? 수정할 데이터를 받아서 수정하는것보다, 요청한 그림을 다시 새롭게 그리는게 낫다 

 

ajax의 불편한걸(변경을 일일이 하는) 보완해서 리액트가 나왔다!!!!!!! 리액트는 엔진이다 복잡한 데이터 들어왔을때, 나 대신에 그림을 그려주는 엔진이다. 그림 변경되는 부분이 있다면?? 리액트가 알아서 그림 먼저 그려보고 기존 그림과 비교해서 변경된 부분 캐치해서 그 부분만 변경해준다. 

 

 

다시... 댓글만들기!

인덱스 잘해놓는다?? 정리해서 목차를 만든다. 꺼내쓰고 싶으면? 목차를 만들고 정리해서 넣는다. 인덱스 만든다

findById를 하면??? 인덱스로 정리된 id로 쉽게 찾을수 있다!

findByTitle 하면?? 풀스캔해서 찾는다!!!!

보통 서점에서 title로 검색하면? title로 인덱스로 정리되어있을거라 빠르게 찾을수 있게 해놓을거다

 

lombok 라이브러리 활용!!!!!!! 

어노테이션 적으면 생성자, getter,setter만들어줌

@Data  //Getter,Setter

@Getter

@Setter

@Data 은 컴파일하면서 런타임때 작동한다!!!!!!!  이때, getter,setter가 자동으로 생성된다

 

하지만, 컴파일할때 tool입장에서는 getter,setter가 없네?라고 인식한다. 그래서 플러그인을 설치한다

라이브러리 라는 개념과는 다르다!!!!!!!!! 

툴을 끈다!!!!

 

.m2 폴더가 메이븐 라이브러리가 모여있는 폴더임

spring에서 pom.xml에 적어놓은 애들이 다운로드가 .m2안에 repository에 저장된다.

해당 라이브러리는 실행파일이면서 라이브러리 이다

설치 완료! 다시 sts툴 켜고 @Data를 지우고 저장한 다음 다시 쓰고 저장! 

getter,setter알아서 만들어지는걸 test할 수 있다

@Data는?? getter,setter와 toString을 만들어줌

 

IoC에 Comment가 등록되어있을까? 궁금하다면? 다음과 같이 쓰고, 서버 실행해보면? 오류난다. 즉!! IoC에 등록안되어있는걸 알수 있다. 이런걸 하나하나 확인하는게,,,불편하다!!!!!!!!!! 

그래서 lombok에서 지원하는 다음의 어노테이션을 쓴다

db에 확인해보자!

ORM은 Object지향 프로그램이다!!

 

새로운 안드로이드 서비스 만들려면??? 

domain은 그대로 두고 web패키지에 api패키지를 만들고 ApiController를 만든다!! 그리고 RestController 로!! 데이터 리턴!! 

 

이제 Controller만들자!

create;none으로 바꾸고

회원가입하고 글쓰기 하나 하고

댓글 comment를 db에서 강제 주입한다 

 

상세보기 페이지에서 해당 게시글에 대한  댓글 뿌려주는 코드 

 

결과는???

 

삭제버튼을 댓글쓴 사람만 보이게 하기!

나의 세션값 확인하고 이 댓글을 쓴 사람 확인!!! comment.user.id==principal.id 이면! 삭제버튼이 보여지게!!!

<c:if test="${sessionScope.principal.id == comment.user.id}"> 

eq대신에, ==으로 하자!

 

Ajax는???? 

async 비동기 자바스크립트!!!!!!!!!! 즉 자바스크립트로 비동기처리한다. 

통신을 json으로 한다. 

fetch는 위에 개념을 실제로 수행해주는 함수다!!!!!

 

//location.reload();  

//내페이지를 새로고침!!결국 fetch를 delete요청하기 위한 용도로만 쓰고 페이지를 다시 전체 그리게 됨!
 //ajax사용하는 이유?? 1)사용자의 ux를 좋게하려고  2)data를 부분만 수정해서 통신하려고!!

 

//해당 댓글을 날리는 코드는???
//deleteEL.함수????

 

또는 deleteEL.remove();