http://localhost:8080/send 로 접속했을 때 다음과 같은 에러가 뜬다.
찾아보니 FormController에서 templates 폴더 내 html 파일을 읽어오지 못해서 발생하는 에러 같았다.
2023-06-13T13:41:46.521+09:00 ERROR 16356 --- [nio-8080-exec-1] o.a.c.c.C.[.[.[/].[dispatcherServlet] : Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Circular view path [send]: would dispatch back to the current handler URL [/send] again. Check your ViewResolver setup! (Hint: This may be the result of an unspecified view, due to default view name generation.)] with root cause
jakarta.servlet.ServletException: Circular view path [send]: would dispatch back to the current handler URL [/send] again. Check your ViewResolver setup! (Hint: This may be the result of an unspecified view, due to default view name generation.)
FormController.java
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.*;
@Controller
public class FormController {
@RequestMapping("/")
public String home() {
return "home";
}
// @RequestMapping(value="/send", method = RequestMethod.GET)
@GetMapping("/send")
public String getForm() {
return "send";
}
// @RequestMapping(method = RequestMethod.POST,value="/receive")
@PostMapping("/receive") // POST 요청만 받아들이도록
public String receive(@RequestParam("msg") String msg, @RequestParam("email") String email) {
System.out.println(msg);
System.out.println(email);
return "send";
}
}
/templates/send.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Send</title>
</head>
<body>
<form action="/receive" method="post">
<label for="message">Message:
<input type="text" id="message" name="msg"/>
</label>
<label for="email">Email:
<input type="text" id="email" name="email"/>
</label>
<br></br>
<input type="submit">
</form>
</body>
</html>
원인
spring boot에서 기본적으로 resources/static 폴더에서 정적 파일을 읽게 된다. 그래서 templates 폴더에 있는 html 파일을 읽지 못해서 에러가 발생한 것이다.
해결
- 방법1) html 파일을 static 폴더에 생성해 주고 컨트롤러 메서드에서 리턴값에 .html을 붙여준다
- 방법 2) build.gradle에 thymeleaf 의존성을 추가한다.
build.gradle에 thymeleaf 의존성을 추가하고 다시 실행하니까 잘 된다.
'CS > Backend' 카테고리의 다른 글
[Spring] REST, REST API (0) | 2023.06.23 |
---|---|
[Spring] 웹 애플리케이션 개념 정리 (0) | 2023.06.22 |
[JAVA] 예외 처리 (0) | 2023.05.28 |
[MySQL] WINDOW 함수 (0) | 2023.05.26 |
[MySQL] JOIN (0) | 2023.05.26 |