juuuding
[Section 2] 스프링 웹 개발 기초 본문
정적 컨텐츠
- 파일에 프로그래밍 같이 어떤 것을 하는 거 없이 그대로 넘겨주는 것
MVC와 템플릿 엔진
MVC: Model View Controller
Model, Controller -> 내부 처리(서버 뒷단) 집중, business logic
View -> 화면을 그리는데 역량 집중
[Controller]
@Controller
public class HelloController {
@GetMapping("hello-mvc")
public String helloMvc(@RequestParam("name") String name, Model model){
model.addAttribute("name", name);
return "hello-template";
}
}
- @RequestParam은 parameter을 받는 것
[View]
<html xmlns:th="http://www.thymeleaf.org">
<body>
<p th:text="'hello ' + ${name}">hello! empty</p>
</body>
</html>
- tymeleaf의 장점: 서버를 키지 않아도 html의 절대경로를 치면 껍데기 형태로 볼 수 있음
- ${name}: model에서 보낸 것을 치환하는 것
- viewResolver: 화면 관련 해결자. view를 찾아주고 template 엔진 연결
API
[API]
[@ResponseBody 문자 반환]
@Controller
public class HelloController {
@GetMapping("hello-string")
@ResponseBody
public String helloString(@RequestParam("name") String name){
return "hello "+name;
}
}
- @ResponseBody를 사용하면 viewResolver을 사용하지 않음.
- HTML의 body가 아닌 HTTP의 body 부에 직접 넣겠다는 의미
[@ResposeBody 객체 반환]
@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으로 변환됨
- return hello; -> 객체를 넘겨준 것
- JSON: [key : value] 로 이루어진 구조
* alt+insert -> getter setter 자동 삽입 가능 : JAVA bin 규약 property 접근 방식
- @ResponseBody 사용
+ HTTP의 BODY에 문자 내용을 직접 반환
+ viewResolver 대신에 HeepMessageConverter 동작
+ 기본 문자 처리: StringHttpMessageConverter
+ 기본 객체 처리:MappingJackson2HttpMessageConverter
+ byte 처리 등 기터 여러 HttpMessageConverter가 기본으로 등록되어 있음
+ default는 JSON 방식
'Spring > 스프링 입문' 카테고리의 다른 글
[Section 4] 스프링 빈과 의존관계 (0) | 2023.03.25 |
---|---|
[Section 3] 회원 관리 (0) | 2023.03.25 |
[Section 1] 라이브러리 & View 환경 설정 (0) | 2023.03.22 |