-
(스프링 입문) 2 - 스프링 웹 개발 기초 (정적 컨텐츠 + MVC와 템플릿 엔진 + API)개발/Spring 2023. 7. 29. 23:07
■ 정적 컨텐츠
static 정적 컨텐츠는 파일 그대로 고객에게 웹 브라우저에 나타내는 방법이다.
다음과 같이 html 파일을 만들어주면 화면 그대로 보여줄 수 있다.
* 에러해결
html 을 생성했음에도 화면에 안나오는 오류 발견
이는 포트 중복으로 cmd 에서 프로세스 종료 후 다시 프로젝트 실행하면 해결된다.
현재 8080 포트로 실행중인 프로세스 ID 찾기
netstat -ano | findstr 8080
프로세스 ID로 프로세스 강제 종료하기
taskkill /f /pid 프로세스ID
웹브라우저가 hi-static.html 톰켓 서버가 명령 받은것 스프링에게 넘긴다.
스프링 부트 컨트롤러에서 있는지 찾는다 (우선 순위 먼저 가짐)
그러나 맵핑된 컨트롤러가 없어서 리소스에서 이것을 찾고 이를 다시 반환한다.
■ MVC와 템플릿 엔진
jsp, php 등을 템플릿 엔진이라 부르고 이는 html 동적으로 나타내는 것이다.
즉 서버에서 변형해서 html 내보내는 형식
MVC : 모델 뷰 컨트롤러
View : 화면을 그리는 데 모든 역량 집중
컨트롤러 모델 : 비즈니스 로직, 내부 로직 처리하는데 집중해야 함
@RequestPharam "name" 이라는 것으로 받고 이를 model 통해서 값을 넣는다.
그리고 이를 hi-template.html 로 반환한다.
이제 name 값이 hello! 받은 값으로 치환돼서 나온다.
그러나 화면 안뜨는 것은 파라미터 name 이 존재하지 않는다.
Ctrl + P 통해서 자세히 보자
String name 으로 담긴 내용이 "name" 으로 담기게 된다.
이 담긴 내용은 동적으로 자유롭게 입력받은 값으로 변하게 된다.
hi-mvc 를 톰켓 서버가 받아서 스프링 부트로 넘기는데,
여기에는 hi-mvc 맵핑 처리를 했기 때문에 return hi-template 로 model name spring 으로 가져간다.
viewResolver 화면 해결자가 동작하는데 뷰를 찾아주고 연결시킨다.
return 값과 똑같은 hi-template.html 을 Thymeleaf 템플릿 엔진한테 처리해달라고 한다.
그러면 템플릿 엔진이 랜더링을 해서 변환을 한 HTML을 웹브라우저에 보낸다.
■ API
json 데이터 구조 포맷
뷰, 리액트
서버끼리 통신할 때 사용한다.
@ResponseBody http 헤드 바디로 나눠져있는데,
바디부에 return 데이터를 직접 넣어주겠다는 뜻이다.
html 태그 없이 문자 그대로 출력된다.
json 방식으로 출력된다.
key value 로 이루어진 구조이다.
ResponseBody 있으니 그대로 던지는데 문자가 아니라 객체이다.
객체이면 HttpMessageConverter 가 동작한다.
단순 문자면 string컨버터, 객체이면 json 컨버터 방식으로 데이터를 json 으로 바꾼 뒤 웹브라우저에 응답한다.
json으로 만들어주는 것은 Jackson2 라는 라이브러리 있다.
'개발 > Spring' 카테고리의 다른 글
(스프링 기본) 6 - spring 으로 전환하기 (0) 2024.10.07 (스프링 기본) 5 - 객체 지향 설계와 스프링 (2) 2024.10.02 (스프링 기본) 4 - 좋은 객체 지향 설계 5가지(SOLID) (1) 2024.10.02 (스프링 입문) 3 - 회원 관리 예제 : 백엔드 개발 (비즈니스 요구사항 정리 + 회원 도메인과 리포지토리 만들기 + 회원 리포지토리 테스트 케이스 작성 + 회원 서비스 개발 + 회원 서비스 테스트) (0) 2023.07.30 (스프링 입문) 1 - 프로젝트 환경설정(프로젝트 생성 + 라이브러리 살펴보기 + View 환경설정 + 빌드하고 실행하기) (0) 2023.07.29