404 오류: 요청된 주소에 대해 받아주는 서버의 컨트롤러가 없을 때 발생하는 오류
일반적으로 스프링에서는 리턴값을 자바 코드에서 직접 만들지 않고, 템플릿 방식을 사용한다.
템플릿(template): 자바 코드를 삽입할 수 있는 HTML 형식의 파일을 말한다.
템플릿 엔진으로 Thymeleaf, Groovy 등이 있다.
Thymeleaf 설치 방법
//build.gradle
dependencies {
implementation 'org.springframework.boot::spring-boot-starter-thymeleaf'
implementation 'nz.net.ultraq.thymeleaf:thymeleaf-layout-dialect'
}
<h2>Hello Template</h2>
QuestionController.java 파일을 작성한다.
→ ResponseBody 삭제, return “question_list”; 로 수정
package com.mysite.sbb.question;
import java.util.List;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;
import lombok.RequiredArgsConstructor;
@Controller
public class QuestionController {
@GetMapping("/question/list")
public String list(Model model) {
return "question_list"; //파일명을 리턴
}
}
Model 객체: 화면에 데이터를 가져갈 때 사용
package com.mysite.sbb.question;
import java.util.List;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;
import lombok.RequiredArgsConstructor;
@RequiredArgsConstructor //생성자 주입 방식-spring 객체를 사용 가능
@Controller
public class QuestionController {
private final QuestionRepository questionRepository;
@GetMapping("/question/list")
public String list(Model model) { //매개변수를 Model로 지정하면 객체 자동 생성
List<Question> questionList = this.questionRepository.findAll();
model.addAttribute("questionList", questionList);
return "question_list";
}
}