1. 정적 컨텐츠
스프링 컨테이너에서 우선적으로 관련 컨트롤러를 찾는다. 없으면 static폴더에 있는 html을 본다.
2. MVC와 템플릿 엔진
Model : 모델은 데이터베이스나 파일과 같은 데이터 소스를 제어한 후에 그 결과를 리턴해줌.
View : 화면과 관련.
Controller : URL에 따라서 사용자의 요청을 파악한 후 그 요청에 맞는 데이터를 Model에 의뢰하고, 데이터를 View에 반영
@GetMapping("hello-mvc")
public String helloMvc(@RequestParam(value="name") String name, Model model) {
model.addAttribute("name", name);
return "hello-template";
}
@RequestParam은 값 name으로 들어오는 값을 화면으로 넘겨준다.
실행 ex) http://localhost:8080/hello-mvc?name=spring!!!
결과) hello spring!!!
3. API
ResponseBody가 있으면 HttpMessageConverter가 작동한다. 문자 or 객체인지에 따라 각각 StringConverter 또는 JsonConverter가 작동.
@GetMapping("hello-string")
@ResponseBody
public String helloString(@RequestParam("name") String name){
return "hello "+name;
}
위의 코드는 맛보기용.
MVC와는 다르게 그냥 바로 보여줌.
@ResponseBody의 역할?
Rather than relying on a view technology to perform server-side rendering of the greeting data to HTML, this RESTful web service controller populates and returns a Greeting object. The object data will be written directly to the HTTP response as JSON.
HTTP의 BODY에 문자 내용을 직접 반환
ViewResolver 대신에 HttpMessageConverter가 동작
기본 문자처리 : StringHttpMessageConverter
기본 객체처리 : MappingJackson2HttpMessageConverter
@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;
}
}
generate는 Alt+Insert로 실행. Getter and Setter선택 후 ok
ctrl+shift+enter 치면 나머지 코드 완성. 예를 들어, ; 쓰기 귀찮을 때라던지~
객체를 넘긴다. 실행 결과는 json형식임. {키:값}
http://localhost:8080/hello-api?name=spring!!!의 실행 결과는 {"name":"spring!!!"}
'Framework > Spring Boot' 카테고리의 다른 글
스프링 빈과 의존관계 (0) | 2020.12.12 |
---|---|
회원 관리 예제 - 백엔드 개발 (0) | 2020.12.06 |
Build (0) | 2020.12.05 |
View 환경설정 (0) | 2020.12.05 |
프로젝트 생성 (0) | 2020.12.05 |