[Spring 스프링 입문] 2. 스프링 웹개발 기초
목표
- 정적컨텐츠 : 파일 그냥 웹 브라우저에 전달, 서버 관여 x
- MVC와 템플릿 엔진 : 서버의 관여, HTML 변환 후 전달
- API : 데이터포맷(JSON)으로 클라이언트에게 전달하는 방식
1. 정적컨텐츠
resources/static/hello-static.html 생성
웹 브라우저에서 위 url로 검색-> 내장 톰캣서버가 요청 받음 -> 서버가 요청을 스프링 컨테이너에게 넘김 -> 1)컨트롤러 없으므로, 2)html 파일을 찾음 -> html 파일을 웹에 반환
2. MVC와 템플릿 엔진
MVC : Model, View, Controller
Controller
비지니스 로직 담당
@Controller
public class HelloController {
@GetMapping("hello-mvc")
public String helloMvc(@RequestParam("name") String name, Model model) {
model.addAttribute("name", name);
return "hello-template";
}
}
view
화면 담당
<html xmlns:th="http://www.thymeleaf.org">
<body>
<p th:text="'hello ' + ${name}">hello! empty</p>
</body></html>
실행 화면
2.1과 다른 점은, viewResolver는 컨트롤러에서 리턴된 html을 찾아서 템플릿 엔진 처리 후 변환된 html을 웹 브라우저에 리턴한다.
3. API
@ResponseBody 문자 반환 : Controller
뷰 리졸버를 사용하지 않는다.
@GetMapping("hello-string")
@ResponseBody // http의 body부분에 데이터를 넣어준다.
public String helloStringg(@RequestParam("name") String name) {
return "hello " + name;
}
실행 화면
return "hello " + name;
이 부분을 그대로 html에 띄운다. 템플릿 엔진을 거치지 않는다.
@ResponseBody 객체 반환 : Controller
@ResponseBody 를 사용하고, 객체를 반환하면 객체가 JSON으로 변환됨
@GetMapping("hello-api")
@ResponseBody
public Hello helloApi(@RequestParam("name") String name) {
Hello hello = new Hello();
hello.setName(name);
return hello; // 클래스 객체를 전달, 객체는 json 형태로 리턴함
}
static class Hello {
private String name;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
실행 화면
Author And Source
이 문제에 관하여([Spring 스프링 입문] 2. 스프링 웹개발 기초), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@redcarrot01/Spring-스프링-입문-2.-스프링-웹개발-기초저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)