-
[Spring] MVC RequestParam, ResponseBody웹/Spring 2021. 12. 13. 22:53
MVC
Model, View, Controller
View
- 화면을 그리는데 집중
Controller, Model
- 비즈니스 로직, 내부적인 것 처리
@GetMapping("hello-mvc")
public String helloMvc(@RequestParam(value = "name", required = false) String name, Model model){
model.addAttribute("name", name);
return "hello-template";
}
@RequestParam("name") 은 파라미터를 전달받아서 페이지를 리턴한다.
required 옵션 디폴트는 true 이다. 변수값을 전달해주지 않으면 에러페이지를 출력한다.
required를 false로 해두면 변수값을 전달해주지 않아도
<body>
<p th:text="'hello ' + ${name}">hello! NULL</p>
</body>data 값에 null 이 들어가서 hello null 을 출력함
파라미터를 전달해주는 방식은 localhost:8080?name=spring
name=spring 을 전달해줘서 hello spring 을 출력할 수 있다.
API 방식
@ResponseBody
바디 부에 데이터를 직접 넣어주는 것
@GetMapping("hello-string")
@ResponseBody
public String helloString(@RequestParam("name") String name){
return "hello " + name;
}
localhost:8080/hello-string?name=spring
//"hello " + name --> hello spring
hello spring 출력
@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;
}
}
리턴하는 변수(hello)와 선언하는 객체?의 타입이 같아야하는 것 같음
객체 hello(타입: Hello) 리턴
name: spring
과 같은 객체(JSON) 리턴함
JAVA Getter, Setter
Hello 내부의 변수 name은 private 변수로 getName, setName으로 접근할 수 있음
@ResponseBody 어노테이션이 붙으면 HttpMessageConverter 가 동작해서 메시지를 그대로 리턴해줌 (HTTP Body에 문자 내용을 직접 반환)
JsonConverter / StringConverter
(없으면 template 찾아서 페이지 리턴 - viewresolver 동작)'웹 > Spring' 카테고리의 다른 글
[Spring] Controller에 GetMapping 이용하여 페이지 호출 (0) 2021.12.20 [Spring] @Test (0) 2021.12.14 [Spring] IoC 컨테이너 / DI (0) 2021.12.05 [Spring] 스프링 구조 (0) 2021.12.01 [Spring] spring-projects/spring-petclinic (0) 2021.11.28