해당 게시글은 아래 강의, 김영한님의 스프링 입문 강의를 정리한 글입니다.
https://www.inflearn.com/course/%EC%8A%A4%ED%94%84%EB%A7%81-%EC%9E%85%EB%AC%B8-%EC%8A%A4%ED%94%84%EB%A7%81%EB%B6%80%ED%8A%B8/dashboard
스프링 부트가 제공하는 기능
resources/static/index.html 과 같이 index.html을 작성하면 스프링이 index.html파일을 자동으로 welcome page로 설정해준다.
+ 스프링 부트가 제공하는 다양한 기능은 spring.io 사이트를 이용하자.
스프링 웹 개발에는 크게 다음과 같은 3가지 방법이 있다.
- 정적 컨텐트
- MVC와 템플릿 엔진
- API
정적 컨텐츠
- 서버에서 하는 것 없이 그냥 파일을 그대로 웹 브라우저에 내려주는 것
MVC와 템플릿 엔진
- 과거 jsp, php 같은 것들을 템플릿 엔진이라고 한다.
- html을 그냥 주는 것이 아니라 서버 사이드에서 동적으로 바꾸어 웹 브라우저에 내려주는 것을 템플릿 엔진이라고 한다. 이것을 수행하기 위해서 model, view, controller 패턴을 이용하는 것이다.
API
- 서버에서 json data format으로 클라이언트(안드로이드, 아이폰)에게 데이터를 전달하는 방식이다.
Static Content
스프링은 정적 컨텐츠 기능을 기본으로 제공한다.
resources - static에 파일을 생성하면 된다.
웹 브라우저에서 http://localhost:8080/hello-static.html을 요청했을 때 hello-static.html파일을 웹브라우저로 받는 과정은 다음과 같다.
- 웹브라우저에서 url을 요청한다.
- 내장 톰켓 서버가 이 요청을 받는다.
- 톰켓 서버는 이 요청을 스프링으로 넘긴다.
- 스프링 컨테이너에서 hello-static 관련 컨트롤러를 찾는다.
- 오잉 없네
- resources-static에서 hello-static.html을 찾는다.
- 찾았당
- 찾은 html파일을 웹 브라우저로 내려준다.
MVC와 템플릿 엔진
MVC: Model, View, Controller
과거에는 view와 Controller를 분리하지 않고 view를 작성했었다.
템플릿 엔진 - thymeleaf
을 추가하자. 윗 줄이 있어야 타임리프 문법을 사용할 수 있다.
@GetMapping("hello")
public String hello(Model model){
model.addAttribute("data","hello!!");
return "hello";
}
Model은 스프링이 알아서 주입해준다.
컨트롤러에서 리턴 값으로 문자를 반환하면 viewResolver가 화면을 찾아서 처리한다.
+템플릿 엔진을 사용할 때 html파일에서의 th: thymeleaf의 약자
API
@ResponseBody는 HTTP의 body에 문자 내용을 직접 반환한다.
@ResponseBody가 붙어 있으면 HttpMessageConverter가 작동하는데,
return값이 String이면 StringConverter가 처리하고, 객체이면 JsonConverter가 이를 처리한다.
? MappingJackson2HttpMessageConverter
왜냐면~
위에서 말했듯이 @ResponseBody는 문자 내용을 반환하므로 객체가 return값으로 오게 되면 데이터를 json타입으로 웹브라우저/서버로 주게된다.
~ 배경 지식 ~
1.
서블릿은 컨트롤러를 만드는데 사용된다.
타임 리프가 아닌 또 다른 템플릿 엔진인 JSP는 HTML 코드 안에서 동적으로 변환이 필요한 부분만, 스크립트 형태의 자바 코드로 작성한다.
JSP는 View 작성에 사용된다.
2. 아파치, 톰캣, 아파치 톰캣 ?
아파치는 웹 서버, 톰캣은 WAS, 아파치 톰캣은 톰캣을 지칭하는 말이다. 톰캣과 같은 WAS는 정적인 웹페이지를 처리하는 기능을 포함하고 있기에 그렇게 부른다.
'Spring' 카테고리의 다른 글
HttpServletResponse와 HttpOutputMessage (0) | 2024.09.11 |
---|---|
서블릿에서 HTTP Response 보내기 (0) | 2024.08.31 |
영속성 관리(ORM 표준 기술 {3} ) (0) | 2023.07.06 |
JPA(자바 ORM 표준 JPA 프로그래밍-기본편) { 2 } (0) | 2023.07.05 |
JPA(자바 ORM 표준 JPA 프로그래밍-기본편) { 1 } (0) | 2023.07.05 |