사랑하애오
article thumbnail
[VSCODE] SpringBoot CRUD게시판 만들기 - 앵커
JAVA/SpringBoot CRUD Board 2022. 7. 5. 17:56

이제 SBB가 점점 완성 되어가고 있다. 이번에는 더 많은 기능을 추가하기 전에 발견된 몇 가지 문제점을 해결하려고 한다. 발견된 문제점은 답글을 작성하거나 수정한 후에 항상 페이지 상단으로 스크롤이 이동되기 때문에 본인이 작성한 답변을 확인하려면 다시 스크롤을 내려서 확인해야 한다는 점이다. 이 문제는 답변을 추천한 경우에도 동일하게 발생한다. Ajax와 같은 비동기 통신 기술을 사용하여 이 문제를 해결할 수도 있지만 여기서는 보다 쉬운 방법으로 이 문제를 해결해 보자. HTML에는 URL 호출시 원하는 위치로 이동시켜 주는 앵커(anchor) 태그가 있다. 예를 들어 HTML 중간에 라는 앵커 태그가 있다면 이 HTML을 호출하는 URL 뒤에 #test 라고 붙여주면 해당 페이지가 호출되면서 해당 앵..

article thumbnail
[VSCODE] SpringBoot CRUD게시판 만들기 - 추천
JAVA/SpringBoot CRUD Board 2022. 7. 5. 16:43

엔티티 변경 질문, 답변의 추천은 추천한 사람(SiteUser 객체)을 질문, 답변 엔티티에 추가해야 한다. Question 우선 Question 엔티티에 추천인(voter) 속성을 추가해 보자. 하나의 질문에 여러사람이 추천할 수 있고 한 사람이 여러 개의 질문을 추천할 수 있다. 이렇듯 질문과 추천인은 부모와 자식의 관계가 아니고 대등한 관계이기 때문에 @ManyToMany를 사용해야 한다. 참고 : https://docs.oracle.com/javaee/7/api/javax/persistence/ManyToMany.html ManyToMany (Java(TM) EE 7 Specification APIs) Specifies a many-valued association with many-to-many..

article thumbnail
[VSCODE] SpringBoot CRUD게시판 만들기 - 수정과 삭제
JAVA/SpringBoot CRUD Board 2022. 7. 5. 15:23

수정 일시 먼저 질문이나 답변이 언제 수정되었는지 확인할 수 있도록 Question과 Answer 엔티티에 수정 일시를 의미하는 modifyDate 속성을 추가하자. [파일명:/sbb/src/main/java/com/mysite/sbb/question/Question.java] (... 생략 ...) public class Question { (... 생략 ...) private LocalDateTime modifyDate; } [파일명:/sbb/src/main/java/com/mysite/sbb/answer/Answer.java] (... 생략 ...) public class Answer { (... 생략 ...) private LocalDateTime modifyDate; } 이와같이 수정하면 다음처..

article thumbnail
[VSCODE] SpringBoot CRUD게시판 만들기 - 스프링 시큐리티
JAVA/SpringBoot CRUD Board 2022. 7. 4. 12:48

스프링부트는 회원가입과 로그인을 도와주는 스프링 시큐리티(Spring Security)를 사용할수 있다. SBB도 스프링 시큐리티를 사용하여 회원가입과 로그인 기능을 만들 것이다. 그 전에 스프링 시큐리티에 대해서 간단하게 알아보고 필요한 설정도 진행해 보자. 스프링 시큐리티란? 스프링 시큐리티는 스프링 기반 애플리케이션의 인증과 권한을 담당하는 스프링의 하위 프레임워크이다. 인증(Authenticate)은 로그인을 의미한다. 권한(Authorize)은 인증된 사용자가 어떤 것을 할 수 있는지를 의미한다. 스프링 시큐리티 설치 스프링 시큐리티 사용을 위해 다음과 같이 build.gradle 파일을 수정하자. [파일명:/sbb/build.gradle] (... 생략 ...) dependencies { (...

article thumbnail
[VSCODE] SpringBoot CRUD게시판 만들기 - 답변 개수 표시
JAVA/SpringBoot CRUD Board 2022. 7. 4. 11:27

이번에는 질문 목록에 "해당 질문에 달린 답변 개수"를 표시할 수 있는 기능을 추가해 보자. 코드의 분량은 많지 않지만, 게시판 서비스를 더욱 서비스답게 만들어 주는 기능이다. 답변 개수는 다음처럼 게시물 제목 바로 오른쪽에 표시하자. [파일명:/sbb/src/main/resources/templates/question_list.html] 번호 제목 작성일시 (... 생략 ...) th:if="${#lists.size(question.answerList) > 0}"로 답변이 있는지 조사하고, th:text="${#lists.size(question.answerList)}"로 답변 개수를 표시했다. #list.size(이터러블객체)는 이터러블 객체의 사이즈를 반환하는 타임리프의 유틸리티이다. 이제 답변이 ..

article thumbnail
[VSCODE] SpringBoot CRUD게시판 만들기 - 게시물에 일련번호 추가하기
JAVA/SpringBoot CRUD Board 2022. 7. 4. 10:52

게시물 번호가 1부터 시작되는 문제 현재 질문 목록 화면을 유심히 보면 페이지마다 게시물 번호가 항상 1부터 시작되는 문제가 있다. 페이지를 이리저리 이동해 봐도 게시물 번호는 1부터 시작한다. 이 문제를 해결해 보자. 두번째 페이지로 이동하더라도 여전히 게시물 번호가 1부터 시작된다. 게시물 번호 공식 만들기 만약 질문 게시물이 12개라면 0페이지에는 12번째~3번째 게시물이, 1페이지에는 2번째~1번째 게시물이 역순으로 표시되어야 한다. 질문 게시물의 번호를 역순으로 정렬하려면 다음과 같은 공식을 적용해야 한다. 번호 = 전체 게시물 개수 - (현재 페이지 * 페이지당 게시물 개수) - 나열 인덱스 항목설명 번호 최종 표시될 게시물 번호 전체 게시물 개수 데이터베이스에 저장된 게시물 전체 개수 현재 ..

article thumbnail
[VSCODE] SpringBoot CRUD게시판 만들기 - 페이징
JAVA/SpringBoot CRUD Board 2022. 7. 4. 10:24

SBB의 질문 목록은 현재 페이징 처리가 안되기 때문에, 게시물 300개를 작성하면 한 페이지에 300개의 게시물이 모두 조회된다. 이번에는 페이징(Paging)을 적용하여 이 문제를 해결해 보자. 대량 테스트 데이터 만들기 페이징을 구현하기 전에 페이징을 테스트할 수 있을 정도로 충분한 데이터를 생성하자. 대량의 테스트 데이터를 만드는 가장 간단한 방법은 스프링부트의 테스트 프레임워크를 이용하는 것이다. 다음처럼 테스트 케이스를 작성하자. [파일명:/sbb/src/test/java/com/mysite/sbb/SbbApplicationTests.java] package com.mysite.sbb; import org.junit.jupiter.api.Test; import org.springframewor..

article thumbnail
[VSCODE] SpringBoot CRUD게시판 만들기 - 네비게이션바
JAVA/SpringBoot CRUD Board 2022. 7. 4. 09:30

지금까지 만든 SBB로 질문 목록을 조회하고 질문을 등록하고, 다시 내용을 보고 답변을 달고 이렇게 조작을 하다 보면 아마도 불편함을 느끼게 될것이다. 그것은 바로 메인페이지(Home)로 돌아갈 수 있는 기능이 없기 때문이다. 이번에는 이러한 불편을 해소할 수 있는 내비게이션바를 만들어 보자. 네비게이션바는 모든 화면 위쪽에 고정되어 있는 부트스트랩 컴포넌트이다. 부트스트랩 내비게이션바: https://getbootstrap.com/docs/5.1/components/navbar/ Navbar Documentation and examples for Bootstrap’s powerful, responsive navigation header, the navbar. Includes support for bra..