/jwp-blog

Primary LanguageCSS

TODO

  • 작성자 아닌 경우 예외처리용 ControllerAdvice

  • 작성자 확인 로직 중복 처리

  • 댓글

  • Service에 userId 대신에 UserSession을 직접 넘기는게 좋을까?

    • userId와 articleId가 헷갈린다.
    • 하지만 UserSession은 DTO가 아니다.
    • 좋은 해결책은?

게시글 생성/조회기능 구현하기

요구사항

  • 게시글 생성/조회/목록조회 기능 구현

게시글 생성

  • 게시글 작성 페이지 이동
    • 메인페이지(index.html)에서 게시글 생성 버튼을 누르기
    • GET /writing 으로 요청
    • 작성 페이지(article-edit.html)로 이동
  • 게시글 작성
    • POST /articles 으로 요청
    • 게시글 생성 시 게시글은 ArticleRepository의 List<Article> articles에 저장한다.
    • 게시글 페이지(article.html)로 이동

게시글 목록 조회

  • 메인 페이지 이동
    • GET / 으로 요청으로 이동 시 메인 페이지에 게시글 목록이 노출

게시글 조회

  • 게시글 페이지 이동
    • 메인페이지(index.html)에서 게시글을 클릭 시 게시글 페이지(article.html)으로 이동
    • GET /articles/{articleId} 으로 요청

제약조건

  • HTML 중복제거
  • 정적 파일 수정 시 재시작 하지 않고 변경사항 반영하기
  • class 파일 수정 시 자동으로 재시작 하기

힌트


HTML 중복제거


SpringBoot Devtools

Spring Boot Document - Developer Tools 참고 블로그

  • Enable hot swapping
  • Switches template engines to disable caching
  • Enables LiveReload to refresh browser automatically
  • Other reasonable defaults based on development instead of production

절대경로와 상대경로

  • 현재 제공되는 HTML 파일에서는 상대경로로 외부 리소스(js, css 등)에 접근하고 있다.
  • Spring Boot를 거치지 않고 정적 파일로 페이지를 열면 정상 동작하지만 Spring Boot를 통해 요청을 받으면 정상적으로 노출 되지 않을 수 있다.

게시글 수정/삭제기능 구현하기

요구사항


게시글 수정

  • 게시글 수정 페이지 이동
    • 게시글 페이지(article.html)에서 수정 버튼 누르기
    • GET /articles/{articleId}/edit 으로 요청
    • 게시글 수정 페이지(article-edit.html)로 이동
  • 게시글 수정
    • PUT /articles/{articleId} 으로 요청
    • 게시글 페이지(article.html)로 이동

게시글 삭제

  • 게시글 페이지(article.html)에서 삭제 버튼 누르기
    • DELETE /articles/{articleId} 으로 요청
    • 게시글 목록 조회 페이지(index.html)로 이동

힌트


게시글 작성 페이지 공유

  • 게시글 생성과 수정이 같은 html 페이지를 사용하므로, 각 상황에 따라 thymeleaf 문법을 활용하기

PUT/DELETE Method

  • Form은 기본적으로 GET과 POST 메서드밖에 지원하지 않는다. form 태그에서 PUT/DELETE를 요청하는 방법을 검색해서 해결한다. (힌트: _method)