✅구현 목표 게시물이 로딩된 이후 화면에서 댓글 수를 클릭하면 해당 게시물에 속한 댓글을 Ajax로 가져와서 화면에 보여줌. 특정 버튼 클릭 시 새로운 댓글을 입력할 수 있는 모달창을 보여주고 Ajax의 POST 방식으로 댓글을 전송함. 댓글 삭제, 수정은 댓글 등록과 동일하게 특정 댓글을 선택하여 모달창에서 처리함. 방식 호출 대상 파라미터 작업 반환 데이터 GET /replies/board/{bno}(게시물번호) 게시물 번호 해당 게시물의 댓글 조회 JSON 배열 POST /replies/ JSON으로 구성된 댓글 데이터 댓글 추가 추가된 댓글 번호 DELETE /replies/{rno} 댓글 번호 댓글 삭제 삭제 결과 문자열 PUT /replies/{rno} 댓글 번호+수정할 내용 댓글 수정 수정 ..
🤍연관 관계와 관계형 데이터베이스 설계 관계형 데이터베이스에서는 개체(entity)간의 관계(relation)라는 것에 대해 고민하게 됨. 일대일(1:1), 일대다(1:N), 다대일(N:1), 다대다(M:N) 관계를 이용하여 데이터가 서로 간에 어떻게 구성되었는지 표현함. 예를 들어, 회원과 게시글의 관계를 정의해보면 한 명의 회원은 여러 게시글을 작성할 수 있다. 하나의 게시글은 한 명의 회원에 의해 작성된다. 🤍게시판 프로젝트 시작 전 테스트 1. 엔티티 클래스 추가 Member Board Reply 하나의 게시글에는 여러 개의 댓글이 달릴 수 있다. -> @ManyToOne 한 명의 사용자는 여러 개의 게시글을 작성할 수 있다. -> @ManyToOne 완성된 테이블 관계도 2. Repository..
🤍1. 방명록 조회 구현 1. 서비스단 코드 작성 findById를 통해 만일 엔티티 객체를 가져왔다면 entityToDto를 이용해 엔티티 객체를 DTO로 변환해서 반환함. 2. 컨트롤러 코드 작성 Model에 GuestDTO 객체를 담아서 전달하도록 코드를 작성한다. 3. 조회 화면 read.html 작성 읽기만 할 수 있도록 readonly 속성 적용 4. 게시글 목록 클릭 시 조회 페이지로 이동하도록 list.html 수정 [[${dto.gno}]] 5. 조회 구현 완료 🤍2. 방명록 수정, 삭제 구현 수정은 POST 방식으로 처리하고 다시 수정된 결과를 확인할 수 있는 조회(read.html) 화면으로 리다이렉트시킴. 삭제는 POST 방식으로 처리하고 목록 화면으로 리다이렉트시킴. 목록 이동 작..
✅구현 목표 기능 URL GET/POST 기능 Redirect URL 목록 /guestbook/list GET 목록/페이징/검색 등록 /guestbook/register GET 입력 화면 /guestbook/register POST 등록 처리 /guestbook/list 조회 /guestbook/read GET 조회 화면 수정 /guestbook/modify GET 수정/삭제 기능 화면 /guestbook/modify POST 수정 처리 /guestbook/read 삭제 /guestbook/remove POST 삭제 처리 /guestbook/list 🤍자동으로 처리되는 날짜/시간 설정 BaseEntity 작성 게시글 작성, 수정 시간 같이 자동으로 추가되고 변경되어야 하는 컬럼을 매번 처리하는 일은 번거..
스프링 레거시 프로젝트를 할 땐 페이징 관련 vo를 따로 만들고 다소 복잡한 방식으로 페이징 처리를 했었는데 스프링부트에서는 JPA의 Pageable 인터페이스를 사용해서 훨씬 간단한 페이징 처리 구현이 가능하다. 🤍간단한 페이징 처리 구현하기 1. 컨트롤러 API에서 Pageable 인터페이스 타입으로 파라미터를 받는다. 인터페이스는 getPageNumber(), getPageSize() 등등 페이징 구현 시 필요한 값을 편하게 구할 수 있는 메소드를 갖고 있다. 위 코드를 설명하면 page : default 페이지 size : 한 페이지 게시글 수 sort : 정렬 기준 컬럼(여기에서는 글 번호 id) direction : 정렬 순서 (보통 게시판은 최근 글이 위로 올라와 있기 때문에 역순으로 설정함..
맨 처음으로 DB 테이블에 업로드된 파일 이미지, 파일 경로를 저장할 수 있도록 컬럼을 추가해 준다. 테이블이 수정되었으므로 당연히 엔티티도 수정해 준다. 이제 다시 코드로 돌아와서!! 파일 업로드를 구현하기 위해서는 form 태그에 아래 코드를 꼭 추가해주어야 한다! enctype="multipart/form-data" 글 작성 시 파일 업로드가 가능하도록 boardwrite.html 수정 업로드된 이미지를 확인할 수 있도록 boardview.html 수정 컨트롤러 코드 수정(매개변수에 MultipartFile 추가) 글 작성 + 파일 업로드 서비스단 코드 수정 //글 작성 처리 public void write(Bootboard bootboard, MultipartFile file) throws Exc..
🤍게시판 글 상세 조회 구현 글 조회 컨트롤러 코드 작성 @GetMapping("/board/view") //localhost:8080/board/view?id=1 public String boardView(Model model, Integer id){ model.addAttribute("bootboard",boardService.boardView(id)); return "boardview"; } 글 조회 화면 boardview.html 작성 제목입니다. 내용입니다. 글 조회 서비스 코드 작성 //특정 게시글 불러오기 public Bootboard boardView(Integer id){ return boardRepository.findById(id).get(); } 글 목록에서 제목을 클릭했을 때 상세..
학원 수료 후 취업 전까지 스프링부트 미니 프로젝트를 하나 더 해보기로 했다. 프로젝트 시작에 앞서 스프링부트와 좀 더 친해지기 위해(??) 유튜브 스프링부트 무작정 따라하기 영상을 보고 게시판을 만들어보려고 한다. 역시 모든 웹 개발의 기초는,,,게시판이지,,😎 🤍인텔리제이 프로젝트 생성 1. Gradle 프로젝트 생성 2. ArtifactId는 board로 지어준다. 3. 의존성 추가 -- 이번에는 타임리프, MySQL을 사용할 거라서 아래와 같이 추가해 주었다. dependencies { implementation('org.springframework.boot:spring-boot-starter-web') implementation('org.springframework.boot:spring-boot..