정적 컨텐츠를 통한 웹 개발
: 파일을 그대로 전달하여 웹 개발
주소에 다음과 같이 치면 스프링 부트가 hello-static과 관련한 컨트롤러가 있는지 확인하고, 없으면 static 폴더에서 hello-static.html을 가져와 출력한다.
MVC와 템플릿 엔진으로 웹 개발
: JSP, PHP
MVC (Model, View, Controller)
@GetMapping("hello-mvc")
public String helloMvc(@RequestParam("name") String name, Model model){
model.addAttribute("name", name);
return "hello-template";
다음 코드를 helloController.java에 붙여준다.
<html xmlns:th = "http://www.thymeleaf.org">
<head>
<meta charset="UTF-8">
<meta name="viewport"
content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Document</title>
</head>
<body>
<p th:text = "'hello ' + ${name}">hello, empty</p>
</body>
</html>
//template 디렉터리에 위치한 hello-template.html이다.
localhost:8080/hello-mvc로 들어가면 에러가 뜬다. 원인은 다음과 같다.
이렇게 GET방식으로 변수 name의 값을 지정해주면 html 문에서 hello + (name의 값) 이 출력된다.
출처는 스프링 입문 강의 - 김명한 강사님
API
: JSON 이라는 데이터 전달 포맷으로 클라이언트에게 데이터를 전송
@ResponseBody
- ViewResolver를 사용하지 않고 http의 통신 프로토콜 응답 body부분에 return 된 내용을 넣어준다.
JSON 방식으로 값 전달
//HelloController에 추가한 내용
@GetMapping("hello-api")
@ResponseBody
public Hello helloApi(@RequestParam("name") String name) {
Hello hello = new Hello();
hello.setName(name);
return hello;
}
static class Hello{
private String name;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
* Alt + Insert 를 이용해서 Getter/Setter 자동생성된다.
객체를 반환하면 JSON으로 변환된다.
@ResponseBody를 사용하였기 때문에 ViewResolver가 아닌 HttpMessageConverter가 동작하여 JSON 방식으로 데이터를 전송
다음 포스팅에서는 백엔드 개발과 관련된 부분을 포스팅하겠다 :-)
'Framework > Spring' 카테고리의 다른 글
인프런 스프링 입문 강의 #웹 MVC 개발 (0) | 2021.01.28 |
---|---|
IntelliJ 단축키 정리 (0) | 2021.01.28 |
인프런 스프링 입문 #스프링 빈과 의존관계 (0) | 2021.01.28 |
IntelliJ에서 Github 연동하여 Push하기 (0) | 2021.01.28 |
인프런 스프링 입문 강의 Write-up #1 #프로젝트 환경설정 (0) | 2021.01.28 |