이 게시글은 [인프런]스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술 강의를 기반으로 작성되었으며 강의를 기억하기 위한 기록물입니다. 순수하게 복습하기 위한 용도로 작성되었음을 미리 밝힙니다.
정적 컨텐츠
URL로 접속하면 서버가 파일을 브라우저로 바로 내려주는 방식
예시
// src > main > resources > static > hello-static.html
<!DOCTYPE html>
<html lang="en">
<head>
<title>static content</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
</head>
<body>
정적 컨텐츠 입니다.
</body>
</html>
http://localhost:8080/hello-static.html
접속해서 확인
원리 이미지
우선순위
1) hello-static 관련 컨트롤러
2) resources내부 파일
MVC와 템플릿 엔진
MVC: Model, View, Controller
model: 화면과 관련된 것을 담음
controller : 비지니스 로직을 작성하는 등 내부의 작업에 집중해야함
view : 화면을 그리는데에 집중해야함
코드
<!-- src > main > resources > templates > hello-template.html -->
<html xmlns:th="http://www.thymeleaf.org">
<body>
<p th:text="'hello ' + ${name}">hello! empty</p>
</body>
</html>
//src > main > java > eyijin.hellospring> HelloController > HelloController.java
@Controller
public class HelloController {
@GetMapping("hello-mvc")
public String helloMvc(@RequestParam("name") String name, Model model){
model.addAttribute("name",name);
return "hello-template";
}
}
http://localhost:8080/hello-mvc?name="spring"
접속 확인
원리 이미지
http://localhost:8080/hello-mvc?name=spring
접속- url에 있는 hello-mvc를 컨트롤러에서 찾아서
파라미터를 모델에 담은 뒤 viewResolver에서 뷰 찾고, Thymeleaf 템플릿 엔진에 연결시켜줌 - 템플릿 엔진은 모델에 담긴 파라미터 값을 찾아 화면에 반환한다.
API
반환값으로 JSON을 사용하여 클라이언트에게 데이터를 그대로 전달(데이터 반환)
화면은 클라이언트가 알아서 그려야함
코드
@Controller
public class 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;
}
}
}
실행화면
원리 이미지
- @ResponseBody를 사용하고, 객체를 반환하면 객체가 JSON으로 변환됨
- HTTP의 BODY부분에 데이터를 직접 반환한다.
- viewResolver 대신에 HttpMessageConverter가 동작한다.
- 기본 문자처리 : StringHttpMessageConverter
- 기본 객체처리 : MappingJackson2HttpMessageConverter
'Backend > Spring' 카테고리의 다른 글
JPA vs MyBatis (0) | 2023.07.09 |
---|---|
[Spring] 회원 관리 예제 - 웹MVC 개발 (0) | 2022.07.02 |
[Spring] 스프링 빈과 의존관계 (0) | 2022.07.01 |
[Spring] 회원 관리 예제 - 백엔드 개발 (0) | 2022.06.26 |
[Spring] 프로젝트 환경설정 (0) | 2022.06.24 |
댓글