[Spring] MVC RequestParam, ResponseBody

[Spring] MVC RequestParam, ResponseBody

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로 해두면 변수값을 전달해주지 않아도

hello! 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 동작)

공유하기 글 요소 저작자표시

from http://yon2ive.tistory.com/42 by ccl(A) rewrite - 2021-12-13 23:01:21