티스토리 뷰
start.spring.io : 스프링 프로젝트 알아서 만들어줌
- 과거에는 Marven, 요즘은 Gradle로 많이 한다
- Marven vs Gradle -> bkim.tistory.com/13
- Spring Boot : snapshot이나 m3가 안붙은 최신형으로 쓰는게 좋음
- Dependencies : 어떤 라이브러리를 땡겨서 쓸거냐
- 선택완료 후 다운로드 -> 압축풀기
- 인텔리제이에서 오픈할때 build.gradle 오픈
- resources : xml, 프로퍼티, html 파일 등등(자바파일 제외한것)
* 스프링 부트가 제공하는 Welcome Page 기능
- static/index.html 을 올려두면 Welcome page 기능을 제공한다.
thymeleaf 템플릿 엔진 동작 확인
@GetMapping("hello")
public String hello(Model model){
model.addAttribute("data","test!! ");
return "hello";
}
resources/templates/hello.html
<!DOCTYPE HTML>
<html xmlns:th="http://www.thymeleaf.org">
<head>
<title>Hello</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
</head>
<body>
<p th:text="'ㅎㅇ~~!!' + ${data}" ></p>
</body>
</html>
- 컨트롤러에서 리턴 값으로 >>>문자<<<를 반환하면 뷰 리졸버( viewResolver )가 화면을 찾아서 처리
위 소스에선 리턴값이 "hello"여서 기본적으로 templates의 hello.html을 찾아간다
(스프링부트 viewName 맵핑, resource:templates/'{ViewwName}.html')
ex) return "hello" -> resources/templates/hello.html
MVC와 템플릿 엔진
- @RequestParam으로 name값을 받아와 hello-template.html으로 이동
@GetMapping("hello-mvc")
public String helloMvc(@RequestParam("name") String name, Model model ){
model.addAttribute("name", name);
return "hello-template";
}
- 리턴값이 "hello-template", Model 객체를 만들어 name값을 담았다
resource/templates/hello-template.html
<html xmlns:th="http://www.thymeleaf.org">
<body>
<p th:text="'test ' + ${name}"></p>
</body>
</html>
API
- @ResponseBody
@GetMapping("hello-string")
@ResponseBody
public String helloString(@RequestParam("name")String name){
///http body 부분에 바로 ㄱㄱ
return "hello"+name;
}
- @ResponseBody 를 사용하면 뷰 리졸버( viewResolver )를 사용하지 않고 HTTP의 BODY에 문자 내용을 직접 반환한다
(HTML BODY TAG를 말하는 것이 아님)
@ResponseBody 객체 반환
- 반환하는게 객체면 기본적으로 json형식으로 반환
@GetMapping("hello-api")
@ResponseBody
public Hello helloApi(@RequestParam("name") String name){
Hello hello = new Hello();
hello.setName(name);
hello.setAge(30);
return hello;
}
static class Hello {
private String name;
private int age;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
}
- @ResponseBody 객체 리턴할때 객체를 넘길때는 디폴트가 제이슨 형태로 데이터를 만들어 반환함
- HttpMessageConverter동작 (StringHttpMessageConverter, StringHttpMessageConverter ,,,,,)
페이지 소스 보면 html 없이 json 그대로인걸 확인할 수 있다
'Spring' 카테고리의 다른 글
Spring 3 (0) | 2020.10.19 |
---|---|
Spring 2 (0) | 2020.10.13 |
[Spring] DI Annotation 예제 (0) | 2018.05.13 |
[Spring] DI 기본예제 3 (0) | 2018.05.13 |
[Spring] DI 기본예제 2 (0) | 2018.05.13 |
- Total
- Today
- Yesterday