이번에는 mapping을 통해서 간단한 html 페이지를 보여주도록 하겠습니다.
처리 과정
일반적으로 사용자의 요청을 처리하는 과정은 다음 그림과 같습니다.
우리는 매핑을 통해 Controller가 특정 View를 사용자에게 반환하도록 만들게요.
Client가 웹 서비스에 요청을 보내면 Dispatcher Servlet이 매핑되는 Handler를 찾습니다.
Controller가 요청을 처리한 후에 View를 Dispatcher Servlet에게 전달해주고 다시 사용자에게 응답이 되는 흐름입니다.
Controller가 View를 반환하기 위해서는 ViewResolver가 사용되며, ViewResolver 설정에 맞게 View를 찾아 렌더링합니다.
@Controller
해당 자바 클래스가 Controller인지 알려주는 방법은 간단합니다.
@Controller 를 적어주면 spring에서 알아서 작업해주거든요.
@RestController 라는 어노테이션도 있지만 View가 아닌 객체 자체를 반환할때 쓰이므로 지금은 사용하지 않을게요.
GetMapping
@Controller
public class HelloController {
@GetMapping("hello")
public String hello(){
return "hello";
}
}
HelloController를 새로 만들어주고 어노테이션을 통해 controller임을 명시해줍니다.
그 다음으로 @GetMapping("hello")를 적어줬습니다.
이는 localhost:8080/hello 요청이 들어오면 아래의 함수를 실행하라고 해석하시면 됩니다.
함수에서는 뜬금없이 String으로 hello를 리턴해주고 있어요.
그러면 Spring이 자동으로 src/main/resouces의 templates에서 hello라는 이름의 View를 찾아서 반환해줍니다.
참고로 static에 들어가는 정적 contents들은 따로 controller가 없어도 알아서 찾아줍니다.정확히는 스프링 컨테이너에 해당 이름을 사용하는(GetMapping 해주는) 컨트롤러가 없다면 static에서 찾도록 설계되어 있습니다.
<!DOCTYPE HTML>
<html>
<head>
<title>Hello</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
</head>
<body>
Hello
</body>
</html>
hello.html에 간단한 문장을 찍으면 브라우저에서 localhost:8080/hello 에 접속했을때 페이지가 뜨는 것을 확인하실 수 있습니다.
아까 말씀드렸다시피 지금의 html은 단순한 정적 페이지인데요.
다음 시간에는 Thymeleaf를 사용해서 동적으로 바꾸도록 해보겠습니다.
추가로 index.html을 각자 생성해보셔도 재밌겠네요.
'web > spring&spring boot' 카테고리의 다른 글
[spring boot] @SpringBootApplication 정리 (0) | 2021.03.24 |
---|---|
[spring boot] H2 Database "mem:testdb" not found 오류 해결법 (1) | 2021.02.24 |
[spring boot] 프로젝트 생성하기 (0) | 2021.02.17 |
Maven vs Gradle (0) | 2021.02.16 |
Spring vs Spring boot 차이점 비교하기 (0) | 2021.02.06 |