글 상세보기
Controller
- 컨트롤러를 통해서 Model에 값을 담아서 전송을 한다.
Service
- int 값을 넣게 되고 해당 값에 해당하는 Id값을 찾아서 reutrn 해준다.
detail.jsp
- 들어오는 board의 id값에 해당하는 DB에서 title과 content를 화면에 표기하면 간단하게 구성할수가 있다.
글 삭제하기
Controller
- DeleteMapping을 사용하여 들어오는 값을 받고 url에 파싱한뒤 Service의 삭제 메서드를 실행한다.
Service
detail.jsp
- 글번호의 id 값을 담아서 js로 전송을 하게 된다.
-> board안에 user가 담겨있으니 username을 연관 지어서 불러올수가 있다.
Eager타입으로 미리 선언은 해놓았기 떄문에 따로 부르지 않아도 같이 값이 따라오는 것이다.
<c:if> 를 사용하여 조건문을 만들어 주었고 조건은
board.user.id가 UserDetail의 user.id와 같을떄 삭제 버튼이 보이게 만들어 주었다.
- 코드의 효과는 글을 작성한 사용자만이 글을 지울수 있게 만들어 준다.
board.js
- Pathvariable을 사용하기 떄문에 id 값을 담아서 보내주게 된다.
이떄 value를 사용 하면 안되는데 이유는 id 값을 찾아서 detail에 있는 text값을 뽑아와야 하기 떄문이다.
따른 js 코드들은 value값을 뽑아오는데 글 번호라는 항목에 id 값에 해당하는 값이 화면이 보여지기 떄문에 그 text를 뽑아 오는 것이다.
==> 이부분은 나도 아직 좀 헷갈리는 부분이다.
글 수정하기
detail.jsp
- 삭제 버튼과는 별개로 버튼을 누를시에 새로운 페이지로 이동을 하게 만들어 주었다.(board의 id값으로 지정한 url)
type= hidden을 하나 추가해 주었고(id값을 들고 다닐수 있게)
버튼을 누를시 js가 발동되게 수정을 해주었다
-> 거의다 글쓰기,삭제하기와 비슷하다.
board.js
- 어려운 점은 없는거같고 url을 통해서 수정이기 떄문에 PUT요청을 하여 값을 전해주는 것으로 해주었다.
Controller
- 버튼을 누를시에 페이지를 연결해주는 Get호출이다.
- model을 통해서 값을 가지고 홈페이지로 가져가게 해주었다.(id에 해당하는 board값을 가지고 간다.)
ApiController
- js를 통해서 들어오는 값을 '수정' 이라는 Service의 메서드에 값을 넣어준다.
Service
-> 영속화를 위해서 일단 id에 해당하는 값을 찾아주고 그 값을 수정한뒤 save한다.
- save메서드가 없는이유는 Transactional에 의해서 자동으로 메서드 종료시에 값이 저장되기 떄문이다.