[Spring] 스프링 기초

JinKyung·2023년 1월 9일
0

Spring

목록 보기
2/5

정적 컨텐츠

  • 서버에서 뭐 하는 것 없이 그저 파일을 웹브라우저에 내려주는 것

  1. 내장 톰캣 서버가 요청을 받아서 요청이 왔다는 것을 스프링에게 넘긴다.
  2. Controller에서 hello-static 이라는 것이 있는지 서치함 (컨트롤러가 우선순위를 가진다는 의미.)
  3. hello-static 과 관련된 컨트롤러가 없네?
    => resource: static/hello-static.html을 찾는다.
  4. 있으니까 반환함.

MVC와 템플릿 엔진

MVC: Model, View, Controller

  • View는 화면을 그리는 것에, Controller는 로직이나 내부적으로 돌아가는 방식에 집중
@GetMapping("hello-mvc")
    public String helloMvc(@RequestParam("names") String name, Model model) { 
				// names 는 요청 서버에 ?names=hihi 방식으로 작성할 것
        model.addAttribute("name", name); 
				// attributeName의 name은 view에 전달해주는 방법
        return "hello-mvc";
    }
  1. @GetMapping("hello-mvc"): Get 요청의 의미. localhost:8080/hello-mvc
  2. @RequestParam(”names”): 서버 요청시 변수 추가, localhost:8080/hello-mvc?names=example
  3. model.addAttribute(”name”, name)
    • name: view에 전달할 값의 키 값.
    • name: view에 전달할 값. helloMvc 함수에서의 변수값
  4. return “hello-mvc”: templates/hello-mvc.html 로 전달

API

@ResponseBody 문자 반환

  • http의 body부에 데이터를 직접 넣어주겠다! 는 의미.
  • view를 거치거나 하는 것 없이 그대로 전달됨. ⇒ viewResolover를 사용하지 않음.
@Controller
public class HelloController {
 @GetMapping("hello-string")
 @ResponseBody
 public String helloString(@RequestParam("name") String name) {
			 return "hello " + name;
		 }
}

@ResponseBody 객체 반환

  • 객체를 반환하면 객체가 JSON으로 변환됨
@Controller
public class HelloController {
 @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;
			 }
		}
}

@ResponseBody 동작 원리

  1. 내장 톰캣 서버가 요청을 받아서 요청이 왔다는 것을 스프링에게 넘긴다.
  2. Controller에서 hello-api라는 것이 있는지 서치함 (컨트롤러가 우선순위를 가진다는 의미.)
  3. hello-api와 관련된 컨트롤러가 있네?
  • @ResponseBody 라는 annotation이 붙어있다? ⇒ viewResolver 대신 HttpMessageConverter가 동작 if) 반환되는 것이 ..
    • 객체라면, JsonConverter 동작 ⇒ json 형식으로 응답
    • 문자라면, StringConverter 동작

0개의 댓글