2022. 8. 22. 17:14ㆍSpring
◎ 스프링 웹 개발 기초
-> thymleaf : html을 만들어주는 템플릿 엔진
-> 동작 환경
-> 웹브라우저에서 localhost:8080/hello을 내장 톰켓 서버가 요청 받고 스프링에 넘긴다. 스프링이 컨트롤러에서 hello가 있는지 찾아본다. 컨트롤러에서 리턴값으로 문자를 반환하면 뷰 리졸버가 화면을 찾아서 처리한다.
◎ 정적 컨텐츠 : 파일 그대로 웹 브라우저에 전달하는 방식
-> 실행
-> 페이지 소스를 확인하면 html파일이 그대로 전달된 것을 알 수 있다.
-> 정적 컨텐츠의 동작 과정
-> 웹브라우저에서 로컬호스트8080hello-static.html을 내장 톰켓 서버가 요청 받고 스프링에 넘긴다.
스프링은 컨트롤러에서 hello-static이 있는지 찾아보고 없으면 내부 resouces안에 있는 hello-static.html을 찾고, 그대로 반환한다.
◎ MVC : Mdel, View, Controller로 서버에서 변형하여 html을 전달하는 방식
-> Controller
-> View
-> 실행
-> 오류가 발생한다. helloMvc에서 @RequestParam의 require의 default값이 true다. 따라서 반드시 해당하는 값을 넣어여한다.
->템플릿 엔진 : 서버에서 html을 동적으로 바꿔주는 것
-> MVC, 템플릿 엔진 동작 과정
-> 로컬호스트 넘기면 스프링 부트를 띄울때 같이 띄우는 내장 톰켓 서버를 거치고 hell0-mvc를 스프링에 전달한다.
스프링은 그 메서드를 호출하고 리턴할 때 이름을 hello-template이라고하고 ,model에는 name:spring(key는 name 값은 spring) 한다. 이것을 스프링에 넘긴다. 이후 뷰리졸버가 templates/hello-template.html이라는 return의 스트링 네임과 같은 것을 찾아 타임리프에 넘긴다. 템플릿 엔진이 랜더링하여 변환한 html을 웹브라우저에 반환한다.
◎ API : 데이터 구조 포맷으로 클라이언트에게 데이터를 전달하는 방식
-> @ResopnseBody 문자 반환
-> @RespnseBody를 사용하면 뷰리졸버를 사용하지 않는다. html태그 없이 문자 그대로 전달된다.
-> http의 body에 문자 내용을 직접 반환한다.
-> 실행
-> 페이지 소스를 보면 html없이 문자 그대로 반환된 것을 알 수 있다.
-> @ResopnseBody 객체 반환
-> 실행
-> @ResponseBody를 사용하여 객체를 반환하면 key-value로 이루어진 json방식으로 객체가 변환된다.
-> @ResponseBody 동작 과정
-> ResponseBody를 받으면 hello객체를 넘기면 객체를 보고 뷰리졸버 대신 HttpMessageConverter가 동작한다. 만약 단순 문자면 StringConverter가 동작하고, 객체면 JsonConverter가 동작하여 객체를 json으로 변환한다. 이후 웹브라우저에 보낸다.
★ 참고 및 출처
스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술