Springboot

Spring boot/JPA 로 블로그만들기. 코멘트 기능 구현(댓글)

25G 2021. 7. 19. 18:00

user-Agent: 여기에 명시된 브라우저가 아니면 요청을 할 수 없다.

Referrer: 이전에 머물렀던 페이지 url

크롤링할 때 위와 같은 브라우저의 속성 값을 Postman으로 Requset header에 담아서 보낼 수 있다 그럼 내가 자바로 요청을 했지만 크롬으로 요청했다고 속여서 보내면 위 보안 체크 사항들을 속일 수 있다.

실제 만드는 사람 입장에서 막을 수 있는 방법이 위 사항들에 대한 접근 제한을 하는 방법밖에 없는데, 위 사항 들을 속일 수 있다면 특별한 경우가 없다면 접근하지 못하는 웹브라우저가 없다

 

 

댓글 기능

orm기능 테이블생성

 

기본적으로 post요청을 해야 하고 form에 데이터를 담아서 보내면 간단하게 할 수 있겠지만 그렇게 되면 페이지 전체의 데이터를 넘겨받아야 하기 때문에 효율적이지 못하다. 그래서 전체 페이지를 다시 세로 넘겨받는 방식(html 파일을 리턴 받는)이 아닌 자바스크립트로 fetch요청을(데이터를 리턴 받는)  해서 보낼 것이다.

하지만 무조건 자바스크립트로 요청하는 것이 좋은 게 아니다. 경우에 따라서 변경해야 할 사항이 너무 많아서 새로운 페이지를 받는 게 좋은 판단이 될 수도 있는 것이다.

 

ajax의 단점을 보완하기 위해서 페이스북에서 만든 것이 리엑트이다. ajax는 부분 수정에 유리하지만 수정사항이 많이 나오면 오히려 더 복잡해 지기 때문에 나온 것이 리 엑트이다. 리 엑트는 엔진이다. 이 엔진이 수정해야 할 데이터만 보내주면 알아서 그림을 그려준다. 심지어는 리 엑트 엔진에서 스스로 만든 그림을 이전 비교해서 수정까지 해주는 것이다. 

 

lombok을 사용하면 어노테이션 하나만 적으면 seource를 자동으로 만들어준다.@Setter,@Getter, @Data

이 어노테이션이 작동하는 타이밍은 컴파일을 하고 나서 실행할 때 작동한다. 그럼 툴의 입장에서 생각을 해보면 컴파일할 때는 gettersetter가 없기 때문에 툴은 인식할 수 없다. 그렇기 때문에 플러그인을 설치해야 한다. 툴이 인식할 수 있도록.

플러그인 (plug-in)은 콘센트에 플러그를 꼽는 것처럼 본체 프로그램에 없던 어떤 기능을 더해 넣는(add-in) 컴퓨터 프로그램이다.

플러그인 설치방법

1. 사용 중인 sts툴을 종료

2.C드라이버에 사용자 폴더에 들어가서 내 window아이디 폴더로 들어간 후. m2폴더를 찾는다.

이제 sts툴을 켜고 원래 적어놨던 lombok관련 어노테이션이 있다면 지우고 다시 적어줘야 한다.

 

 

플러그인 설치후 lombok을 테스트해봤다 잘 적용된것을 확인할 수 있다.
di하기 훨신 편해졌다.

ioc는 기본적으로 싱글톤으로 돼있다.

겁나 편하다.

댓글 테이블이 잘 만들어졌다.

post_id , user_id는 폴인키

 

그럼 이제 댓글 기능을 만들어보자

 

해당 게시글의 댓글만 보여주기 기능 구현

테스트용 더미데이터

이제 jsp에서 db데이터를 받아서 뿌린다.. 저기 빨간 네모에 띄어쓰기 안 했다고 오류가 났었다... 찾는데 한참 걸림. 이 글을 읽으시는 분들은 이런 사소한 거에서 오류 나지 않기를 바랍니다.

 

잘 작동한다.

이제 세션을 확인해서 자기가 작성한 댓글만 삭제할 수 있도록 만들어준다.

 

댓글 삭제 기능

 

일단 컨트롤러를 만들어준다.

 

매개변수로 값을 넘긴 이유는 자바스크립트 안에는 EL표현식이 있으면 좋지 않다 왜냐하면 괜찮은 함수가 만들어졌을 때는 그 함수를 파일로 빼서 만들 수 있는데 자바스크립트를 파일로 빼서 작성하면 EL표현식을 이해할 수 없다. 톰캣이 컴파일을 하지 않기 때문이다.

 

remove 함수를 사용하면 화면이 바뀌지 않고 querySelector로 찾은 현제 EL만 날릴 수 있다.

 

댓글 작성 기능 구현

 

dto는 도메인이 모인 곳에다가 만들면 안 된다

도메인은 공통적으로 사용하고 바뀌면 안 되는 오브젝트들이 있고

dto는 web마다 기능이 달라 지기 때문.

그리고 데이터를 통신할 땐 무조건 dto를 따로 만들어서 사용해야 한다.

 

 

 

 

 

이제 댓글이 등록버튼을 누르면 쏙 들어가도록 하는 방법을 알아보자

댓글기능 js

자바스크립트로 html그림을 그리려면 백 틱`을 사용해야 하는데 그렇게 하기 위해서 따로 static폴더에 js파일을 만들어서 따로 뺐다.