Spring 공부하면서 그 내용을 정리하려고 합니다.
인프런 스프링 입문 - 코드로배우는 스프링부트, 웹 MVC, DB접근기술 강의를 참고했습니다.
서버에서 html을 그대로 웹 브라우저에 전달해주는것
서버에서 html을 동적으로 바꿔서 브라우저에 전달해주는것
controller: 비즈니스 관련 로직처리
view: 보여지는 화면 그림
json 데이터 구조 포맷으로 클라이언트에게 데이터 전달
화면은 클라이언트가 알아서 그린다. 서버끼리 통신할 때도 사용.
예제코드
package hello.hellospring.controller;
import org.springframework.ui.Model;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
@Controller
public class HelloController {
@GetMapping("hello")
public String hello(Model model){
model.addAttribute("data","spring!!");
return "hello"; // resources/templates/hello.html과 같다.
}
// mvc방식
@GetMapping("hello-mvc")// http://localhost:8080/hello-mvc?name=spring!!!!
//결과 : hello spring!!!! -> 브라우저에서 소스보기를 하면, html에 서버로부터 전달된 name부분이 뜬다.
// view라는 템플릿이 있는 상황에서 그걸 조작하는 방식.
// @ResponseBody가 없으면, viewResolver한테 던진다.
public String helloMvc(@RequestParam("name") String name,Model model){
model.addAttribute("name",name);
return "hello-template";
}
// api방식
@GetMapping("hello-string") // http://localhost:8080/hello-string?name=spring!!!!
// 결과 : hello spring!!!! -> 브라우저에서 소스보기 하면, 그냥 hello spring!!!!텍스트 자체가 뜬다.
@ResponseBody // 이게 있으면 데이터를 이대로 넘긴다. 문자열이 아니고 객체면, json으로 넘긴다.
public String helloString(@RequestParam("name") String name){
return "hello "+name;
}
@GetMapping("hello-api") // http://localhost:8080/hello-api?name=spring!!!!
// 결과 : {"name":"spring!!!!"} -> 브라우저에서 소스보기 하면, json형태로 뜬다.
@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;
}
}
}