[1] 스프링 웹 개발

JIN·2021년 12월 8일
0

스프링 웹 개발 방법에는 크게 세가지가 있다.

1.[정적 컨텐츠] : 서버에서 하는 일 없이 웹브라우저에 그대로 내려준다.
2.[MVC 와 템플릿 엔진] : 과거의 JSP PHP 처럼 HTML 을 동적으로 바꿔서 내려준다.
3.[API]: 안드로이드나 아이폰 클라이언트와 개발해야 할 때 JSON 이라는 데이터 포맷으로 클라이언트에게 전달 /서버-서버간 통신 ,데이터를 내려줄 때에 사용된다.

[정적 컨텐츠]

/resources/static 폴더 안에 존재

<!DOCTYPE HTML>
<html>
<head>
 <title>Hello</title>
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
</head>
<body>
Hello
<a href="/hello">hello</a>
</body>
</html>

웹브라우저의 요청을 내장 톰캣서버가 받으면 스프링에게 넘간다.
우선순위를 가진 컨트롤러에 관련 컨트롤러가 있는지 확인하고, 없으면 resources 에서 html을 그대로 반환한다.

[MVC와 템플릿 엔진]

<관심사 분리!> 뷰는 화면을 그리는데 집중, 컨트롤러는 로직 처리에 집중
MVC : Model, View, Controller

Controller

@Controller
public class HelloController {
 @GetMapping("hello")
 public String hello(Model model) {
   model.addAttribute("data", "hello!!");
   return "hello";
 }

@GetMapping("hello-mvc")
 public String helloMvc(@RequestParam("name")String name, Model model) {
   model.addAttribute("name", name); //key , value
   return "hello-template"; 
 }
}

View

<html xmlns:th="http://www.thymeleaf.org">
<body>
<p th:text="'hello ' + ${name}">hello! empty</p>
</body>

웹브라우저에서 localhost:8080/hello-mvc 넘긴 후 내장 톰캣 서버에 스프링 컨테이너 안의 helloController가 있는지 확인 한다.
있으면 , hello-template에 model 로 키 밸류 형태의 name: spring을 넘겨준다 .
그리고 viewResolver가 뷰를 찾아서 템플릿 엔진을 처리한 후 HTML 을 변환 시켜 웹 브라우저에 전달해준다.

[API]

@ResponseBody 문자 반환

@Controller
public class HelloController {

 @GetMapping("hello-string")
 @ResponseBody

 public String helloString(@RequestParam("name") String name) {
   return "hello " + name; //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;
    }
  }
}

HTTP의 BODY에 문자열을 직접 반환 .
html 관련이 아니라 그냥 그대로 데이터를 내려준다.
객체로 만들어 JSON 데이터를 내려준다.

웹브라우저가 localhost:8080/hello-api를 보내면 스프링 부트 안에 있는 내장 톰캣 서버가 helloController안에 hello-api 가 있는 것을 발견한다.
이 때 @ResponseBody 이고 객체 타입으로 반환된 hello를 HttpMessageConverter에 Json 이나 String 형식으로 변환한다.
( 기본은 Json).
그리고 변환된 타입을 웹브라우저에 내린다 .

profile
배우고 적용하고 개선하기

0개의 댓글

관련 채용 정보