일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
- java
- Locking Read
- db
- 가비지 컬렉터
- iterable
- 데이터 타입
- Di
- foreach
- MVCC
- Atomic Type
- CAS
- iterator
- gc
- 가비지 컬렉션
- reflection
- jpa
- Synchronized
- 동시성 문제
- text
- MySQL
- 백엔드
- 자바
- Varchar
- 스프링
- Lock
- 동시성
- Today
- Total
과정을 즐기자
스프링 웹 개발 기초 본문
- 정적 컨텐츠
웹 브라우저가 localhost:8080/hello-static.html 내장 톰켓 서버가 먼저 요청 받는다. 스프링한테 넘기고 스프링은 먼저 컨트롤러 쪽에서 hello-static이 있는지 찾아본다. 컨트롤러가 먼저 우선순위를 가짐
없으면 resources 안에 있는 static/hello-static.html을 찾는다.
서버에서 하는 일 없이 파일을 그냥 그대로 웹 브라우저에 내려준다.
- MVC와 템플릿 엔진
MVC : Model, View, Controller
다음과 같이 분리했다. View는 화면을 그리는데 집중한다. Controller나 Model과 관련된 부분들은 비즈니스 로직과 관련 있거나 내부적인 것을 처리하는데 집중한다. model이라는 것에 화면에서 필요한 것들을 담아가지고 넘겨주는 패턴이다.
@GetMapping("hello-mvc")
public String helloMvc(@RequestParam("name") String name, Model model){
model.addAttribute("name",name);
return "hello-template";
}
localhost:8080/hello-mvc?name=spring!!! 로 웹 브라우저에 입력하면 HTML파일의 ${name}이 spring!!!으로 치환된다.
@RequestParam("가져올 데이터의 이름") [데이터 타입] [가져온 데이터를 담을 변수]
가장 많이 하는 방식으로 HTML을 그냥 주는 것이 아니라 서버에서 프로그래밍해서 HTML을 동적으로 바꿔서 내림 (템플릿 엔진)
- API
안드로이드나 아이폰 클라이언트와 개발을 해야 한다면 서버 입장에서는 json이라는 데이터 포맷으로 내려준다. 또한 서버끼리 통신할 때는 HTML 필요가 없고 데이터가 흐를 때 API 방식을 사용한다.
@GetMapping("hello-string")
@ResponseBody
public String helloString(@RequestParam("name") String name){
return "hello " + name;
}
localhost:8080/hello-api?name=spring!!! 이라고 웹 브라우저에 검색하면 HTML파일 없이 hello spring!!! 이 출력된다.
@ResponseBody : HTML에 나오는 body tag가 아니라 HTTP에서 (header, body로 나뉨) body부에 이 데이터를 직접 넣어줌
템플릿 엔진과의 차이는 view와 같은 것이 없다. 그냥 이 문자 그대로 내려간다.
@GetMapping("hello-api")
@ResponseBody
public Hello helloApi(@RequestParam("name") String name){
Hello hello = new Hello();
hello.setName(name);
return hello;
}
객체를 받으면 {"name" : "spring!!!"} : json 방식인 key, value로 이루어진 구조로 출력된다.
@ResponseBody가 안 붙어있으면 viewResolver한테 던지고 맞는 것을 찾아달라고 한다. 붙어있으면 데이터를 그대로 넘긴다.
문자가 아니라 객체로 오면 json 방식으로 데이터를 만들어서 HTTP 응답에 반환한다.
HttpMessageConverter: JsonConverter (객체) , StringConverter (문자)
'Spring' 카테고리의 다른 글
MVC 프레임워크 구현하기 - 2 (0) | 2022.10.29 |
---|---|
MVC 프레임워크 구현하기 - 1 (0) | 2022.10.29 |
싱글톤 컨테이너 (모각소 4주차) (0) | 2022.07.24 |
웹 MVC (0) | 2022.07.18 |
스프링 빈과 의존관계 (0) | 2022.07.18 |