Search
Duplicate

[Spring 입문] 스플링 웹 개발 기초 - 정적 컨텐츠, MVC와 템플릿 엔진

상태
스프링입문
담당자
속성 1
JAVA
Spring
MVC
속성
1
목차

정적 콘텐츠

웹브라우저에 파일을 그대로 전송해주는 방식
접근 순서 이미지
스프링 부트에서는 기본적으로 정적 콘텐츠를 제공해준다.
1.
main > resource > static 디렉터리를 생성
2.
static 디렉터리 밑에 hello-static.html 파일을 생성
url: http://localhost:8080/hello-static.html 바로 접근 가능하다.
접근 순서
1.
내장 톰캣 서버에서 요청을 받는다.
2.
스프링 컨테이너에서 관련 컨트롤러를 찾는다.
3.
없을 시 resources:static/hello-static.html을 찾는다.
4.
이후 웹 브라우저를 통해서 전송해준다.

MVC와 템플릿 엔진

서버에서 데이터를 변형해서 HTML형식으로 바꿔서 전송해주 방식API
json 데이터 포맷으로 데이터를 클라이언트에 전송해주는 방식
서버에서 통신할 때 사용
M : Model
V : view
C : Controller
관심사를 분리하기 위해 나온 패턴 과거에는 뷰안에서 데이터 접근과 로직을 같이 구성해서, 소스 관리가 너무 힘들었다.
현재는 화면 구성은 View에만, 비즈니스 로직과 서버에 관련된 영역은 Controller에, 화면에 필요한 데이터를 담을 때 에는 model을 사용해서 구성한다.
1.
Main> java> hello> hellospring> controller> HelloController.java 생성
2.
resources> templates> hello.html 생성
3.
작동 방식
Code
접근 순서
1.
웹브라우저에서 내장 톰캣 서버에서 요청을 받는다.
2.
스프링 컨테이너에서 관련 컨트롤러를 찾는다.
3.
HelloController의 @GetMapping("hello")를 접근한다.
4.
model.addAttribute를 통해서 data의 key 값에 value를 담는다.
5.
이후 ViewResolver를 통해 HTML로 변환 후 웹 브라우저에 출력해준다.

MVC와 템플릿 엔진에서 파라미터 전달방법

1.
Main> java> hello> hellospring> controller> HelloController.java의 GetMapping("hello-mvc")를 추가
2.
resources> templates> hello-mvc.html 생성
3.
매개변수 값으로 @RequestPara("name") String name으로 파라미터 값을 받을 수 있다. 주의해야 될 점은 RequestParam의 required값이 디폴트로 true가 설정이 되어있는데, 이는 파라미터 값을 전달해 주지 않으면 에러가 발생한다.
required 값을 flase로 주면 파라미터 값을 전달 안해도 html이 출력이된다.
Code
접근 순서
1.
웹브라우저에서 내장 톰캣 서버에서 요청을 받는다.
2.
스프링 컨테이너에서 관련 컨트롤러를 찾는다.
3.
HelloController의 @GetMapping("hello-mvc")를 접근한다.
4.
model.addAttribute를 통해서 data의 key 값에 value를 담는다.
5.
이후 ViewResolver를 통해 HTML로 변환 후 웹 브라우저에 출력해준다.

API

1.
Main> java> hello> hellospring> controller> HelloController.java의 GetMapping("hello-api")를 추가
2.
@ResponseBody를 추가
3.
응답으로 json형식으로 보낼 객체를 생성
4.
객체 반환
ResponseBody : http의 body 응답 부분에 값을 직접 넣어 주겠다.
Code
접근 순서
1.
웹브라우저에서 내장 톰캣 서버에서 요청을 받는다.
2.
스프링 컨테이너에서 관련 컨트롤러를 찾는다.
3.
HelloController의 @GetMapping("hello-api")를 접근한다.
4.
객체를 생성한다
5.
setter를 통해서 값을 넣고 객체를 반환한다.
6.
json형태의 데이터가 출력된다.
결론
스프링에서 내가 원하는 웹페이지, 혹은 데이터를 보내고자 할 때 Controller를 통해서 해당하는  구분 해서 보내 주면 된다. 구분하는 것은 GetMapping으로 값을 넣어주면 되고, 추가로 데이터를 보내주고자 할 때는 ResponseBody를 사용하자.
이 글은 인프런의
제목 : 스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
강사 : 김영한 님의 동영상을 참조해 만들었습니다.