Light Purple Pointer
답변(Answer) 유효성 검사 추가
·
BACKEND/SpringBoot
AnswerForm생성 package com.mysite.sbb.answer; import javax.validation.constraints.NotBlank; import lombok.Getter; import lombok.Setter; @Getter @Setter public class AnswerForm { @NotBlank(message = "내용은 필수 항목입니다.") private String content; } AnswerController //답변 저장 @PostMapping("/create/{id}") //주소에 있는 변수 { }안에 넣기 public String createAnswer(Model model, @PathVariable("id") Integer id, @Valid Answe..
질문 등록 처리 및 유효성검사
·
BACKEND/SpringBoot
question_list 에 질문 등록하기 버튼 만들기 테이블 아래에 추가하기 질문 등록하기 QuestionController //질문 등록하기 @GetMapping("/create") public String questionCreate() { return "question_form"; } 질문등록 제목 내용 name=conetnet, subject로 넘어감 QuestionController //질문 등록 처리하기 @PostMapping("/create") public String questionCreate(@RequestParam String subject, @RequestParam String content) { return "redirect:/question/list"; //질문 저장 후 질문목록으..
부분 모듈화 ( th:fragment / th:replace )
·
BACKEND/SpringBoot
공통적으로 사용하는 부분들에 대해서는 모듈화를 하여 쉽게 적용할 수있다 . layout.html생성 를 include할거임 DOCTYPE html> Hello, sbb! question_list.html 과 question_detail 변경 적용하고 에러 안나는지 테스트해보기
질문 목록/상세보기 - 부트스트랩 적용
·
BACKEND/SpringBoot
https://getbootstrap.kr/docs/5.3/getting-started/download/ 다운로드 Bootstrap을 다운로드하여 컴파일된 CSS 및 JavaScript, 소스 코드를 얻거나 npm, RubyGems 등과 같은 즐겨쓰는 패키지 관리자를 사용해서 포함시키세요. getbootstrap.kr question_list -부트스트랩 적용 질문 목록 번호 제목 작성일시 테이블 항목으로 "번호"를 추가했다. 번호는 loop.count를 사용하여 표시했다. (개수 만큼 인덱스 부여) 그리고 날짜를 보기 좋게 출력하기 위해 타임리프의 #temporals.format 유틸리티를 사용했다. #temporals.format은 다음과 같이 사용한다. #temporals.format(날짜객체, 날..
스태틱 디렉터리와 스타일시트
·
BACKEND/SpringBoot
css랑 js도 vscode랑 연결할거임 css파일 만들기 테스트를 위해서 약간만 작성함 html 링크 추가 테스트하기 - 적용됨
답변 등록하기
·
BACKEND/SpringBoot
확장 프로그램 중에 code Spell Checker 은 영단어가 틀릴 경우 알려주는 프로그램임 답변 등록 폼을 만든다. action 의 @안의 주소에서 id값(변수)을 넣기 위해서 세 가지 방법정도가 있다. 1) __${question.id}__ 2)'/answer/create/'+${question.id} 3)|/answer/create/${question.id}| http://localhost:8080/answer/create/2 AnswerController 생성 package com.mysite.sbb.answer; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype...
Question 서비스 생성 및 상세보기 페이지
·
BACKEND/SpringBoot
서비스가 필요한 이유 ​ 모듈화 예를들어 어떤 컨트롤러가 여러개의 리포지터리를 사용하여 데이터를 조회한후 가공하여 리턴한다고 가정해 보자. 이러한 기능을 서비스로 만들어 두면 컨트롤러에서는 해당 서비스를 호출하여 사용하면 된다. 하지만 서비스로 만들지 않고 컨트롤러에서 구현하려 한다면 해당 기능을 필요로 하는 모든 컨트롤러가 동일한 기능을 중복으로 구현해야 한다. 이러한 이유로 서비스는 모듈화를 위해서 필요하다. ​ 보안 컨트롤러는 리포지터리 없이 서비스를 통해서만 데이터베이스에 접근하도록 구현하는 것이 보안상 안전하다. 이렇게 하면 어떤 해커가 해킹을 통해 컨트롤러를 제어할 수 있게 되더라도 리포지터리에 직접 접근할 수는 없게 된다. ​ 엔티티 객체와 DTO 객체의 변환 우리가 작성한 Question,..
Question 컨트롤러 생성
·
BACKEND/SpringBoot
Question package com.mysite.sbb.question; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.GetMapping; @Controller public class QuestionController { @GetMapping("/question/list") public String list() { return "question_list"; } } 서버 실행하기 view가 없으니까 당연히 에러가 나오는게 맞음 템플릿 에 넣고 jsp를 안씀 템플릿 설정하기 일반적으로 많이 사용하는 방식은 템플릿 방식이다. 템플릿은 자바 코드를 삽입할 수 있는 HTML 형식의 파..
패키지 도메인 별 분리하기
·
BACKEND/SpringBoot
패키지를 만듬 만들어 두었던 클래스와 인터페이스를 정리해서 넣어준다.
답변 AnswerRepository 생성 및 데이터 저장 ,검색
·
BACKEND/SpringBoot
Question과 동일하게 Answer도 Repository 만든다. package com.mysite.sbb; import org.springframework.data.jpa.repository.JpaRepository; public interface AnswerRepository extends JpaRepository { } //일단 질문Question 가져와야함 해당 질문에 대한 답변이니까 Optional oq = this.qRepo.findById(2); Question q = oq.get(); Answer a = new Answer(); a.setContent("네 자동으로 생성됩니다."); a.setQuestion(q); a.setCreateDate(LocalDateTime.now()); aR..