[StringBoot] 답변등록 (8)
·
Follow Work/SpringbootBoard
참고 링크 : https://wikidocs.net/book/7601 오라클DB와 intelliJ로 작업하였습니다 질문 상세 링크 추 답변 등록 버튼 만들기 질문 상세 템플릿에 답변 저장을 위한 form, textarea, input 엘리먼트를 다음과 같이 추가하자. 버튼을 누르면 전송되는 form의 action은 타임리프의 "th:action" 속성으로 생성한다. 버튼을 누르면 POST 방식으로 /answer/create/ URL이 호출(submit)될 것이다. 하지만 아직 /answer/create/ URL에 대한 매핑이 없으므로 버튼을 누르면 다음과 같은 404 페이지가 나타난다. 이 오류를 해결하려면 답변 컨트롤러를 만들고 해당 URL에 대한 매핑을 처리해야 한다. 답변 컨트롤러 만들기 앞에서 질..
[StringBoot] 질문상세 (7)
·
Follow Work/SpringbootBoard
참고 링크 : https://wikidocs.net/book/7601 오라클DB와 intelliJ로 작업하였습니다 질문 상세 링크 추가하기 먼저 질문 목록의 제목을 클릭했을때 상세화면이 호출되도록 제목에 링크를 추가하자. 질문 목록 템플릿을 다음과 같이 수정하자. src/main/resources/templates/question_list.html 제목 작성일시 제목을 엘리먼트의 텍스트로 출력하던 것에서 링크로 변경했다. 타임리프에서 링크의 주소는 th:href 속성을 사용한다. 타임리프에서 th:href 처럼 URL 주소를 나타낼때는 반드시 @{ 문자와 } 문자 사이에 입력해야 한다. 그리고 URL 주소는 문자열 /question/detail/과 ${question.id} 값이 조합되어 /questio..
[StringBoot] 서비스 (6)
·
Follow Work/SpringbootBoard
참고 링크 : https://wikidocs.net/book/7601 오라클DB와 intelliJ로 작업하였습니다 우리는 QuestionController에서 QuestionRepository를 직접 사용하여 질문 목록 데이터를 조회했다. 하지만 대부분의 규모있는 스프링부트 프로젝트는 컨트롤러에서 리포지터리를 직접 호출하지 않고 중간에 서비스(Service)를 두어 데이터를 처리한다. 서비스는 스프링에서 데이터 처리를 위해 작성하는 클래스이다. 서비스(Service)가 필요한 이유 모듈화 예를들어 어떤 컨트롤러가 여러개의 리포지터리를 사용하여 데이터를 조회한후 가공하여 리턴한다고 가정해 보자. 이러한 기능을 서비스로 만들어 두면 컨트롤러에서는 해당 서비스를 호출하여 사용하면 된다. 하지만 서비스로 만들지..
[StringBoot] ROOT URL (5)
·
Follow Work/SpringbootBoard
참고 링크 : https://wikidocs.net/book/7601 오라클DB와 intelliJ로 작업하였습니다 ROOT URL 이번에는 루트 URL 호출시 404 페이지 대신 질문 목록을 출력하도록 해보자. 다음과 같이 MainContrller를 수정하자. package com.gosari.repick_project; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.ResponseBody; public class MainController { @RequestMapping("/sbb") @ResponseBody public String index(){ re..
[StringBoot] 질문 목록과 템플릿 (4)
·
Follow Work/SpringbootBoard
참고 링크 : https://wikidocs.net/book/7601 오라클DB와 intelliJ로 작업하였습니다 템플릿 설정하기 스프링 진영에서 추천하는 타임리프(Thymleaf) 템플릿 엔진을 사용할 것이다. 타임리프 - https://www.thymeleaf.org/ Thymeleaf Integrations galore Eclipse, IntelliJ IDEA, Spring, Play, even the up-and-coming Model-View-Controller API for Java EE 8. Write Thymeleaf in your favourite tools, using your favourite web-development framework. Check out our Ecosystem ..
[StringBoot] 리포지터리 (3)
·
Follow Work/SpringbootBoard
참고 링크 : https://wikidocs.net/book/7601 오라클DB와 intelliJ로 작업하였습니다 리포지터리 엔티티만으로는 데이터베이스에 데이터를 저장하거나 조회 할 수 없다. 데이터 처리를 위해서는 실제 데이터베이스와 연동하는 JPA 리포지터리가 필요하다. 리포지터리란? 리포지터리는 엔티티에 의해 생성된 데이터베이스 테이블에 접근하는 메서드들(예: findAll, save 등)을 사용하기 위한 인터페이스이다. 데이터 처리를 위해서는 테이블에 어떤 값을 넣거나 값을 조회하는 등의 CRUD(Create, Read, Update, Delete)가 필요하다. 이 때 이러한 CRUD를 어떻게 처리할지 정의하는 계층이 바로 리포지터리이다. 다음과 같이 QuestionRepository 인터페이스를..
[StringBoot] 엔티티 (2)
·
Follow Work/SpringbootBoard
참고 링크 : https://wikidocs.net/book/7601 오라클DB와 intelliJ로 작업하였습니다 엔티티 Entity 엔티티는 모델 또는 도메인 모델이라고 부르기도 한다. 여기서는 이것들을 구분하지 않고 테이블과 매핑되는 클래스를 엔티티라 지칭하겠다. 질문 엔티티 작성하기 package com.gosari.repick_project.question; import com.gosari.repick_project.answer.Answer; import lombok.Getter; import lombok.Setter; import javax.persistence.*; import java.time.LocalDateTime; import java.util.Date; import java.util...
[Springboot] 게시판따라하기(8) - 검색 기능 ✔정리
·
STUDY/SpringBoot
원본 영상 링크: https://www.youtube.com/watch?v=Y7S1xXsKy_w&list=PLZzruF3-_clsWF2aULPsUPomgolJ-idGJ&index=8 JPA Repository findBy(컬럼이름) → 컬럼에서 키워드를 넣어서 찾겠다 *정확하게 키워드가 일치하는 데이터만 검색 (예: '한코딩'을 검색하고 싶을때 '한코딩' 입력) findBy(컬럼이름)Containing → 컬럼에서 키워드가 포함된 것을 찾겠다 *키워드가 포함된 모든 데이터 검색 (예: '한코딩'을 검색하고 싶을때 '한'만 입력해도 됨) 검색 기능 1 Repository>BoardRepository.java package com.example.demo.repository; import com.example..