티스토리 뷰

Spring

웹 MVC - 1부 ~ 7부

kingsubin 2020. 7. 9. 17:11

1부 웹MVC 소개

스프링 부트에서는 자동 설정으로 웹 MVC에 대한 기본 설정들을 제공해준다.

그런데 확장하거나 재정의

하고싶을때는 어떻게 하는가 ?

 

확장은 @Configuration + implements WebMvcCOnfigurer 후에 메소드를 오버라이딩 해서 사용한다.

재정의는 잘 사용하지 않는데 @Configuration + @EnableWebMvc 를 사용한다.

 


 

 

2부 HttpMessageConverters

 

Http 요청 -> 객체, 객체 -> Http응답 으로 매핑하는데 사용한다.

사용하기 위해서는 @RequestBody, @ResponseBody를 사용한다.

ex)RestController의 경우

기본적으로 @Controller에서는 @ResponseBody를 사용하지만

 @RestController의 경우에는 HttpMessageConvert를 자동으로 처리해준다.

 

@RestController는 @Controller + @ResponseBody로 생각한다.

@Controller는 ViewResolver를 통해서 View리턴한다.

@RestController는 객체(VO,DTO)를 반환하면,

MessageConverter를 통해서 객체데이터는 application/json 형식의 HTTP ResponseBody에 직접 작성되게 된다.

test

 


3부 ViewResolver

 

서버로 들어오는 요청의 헤더에는 accept라는 키가 있다.

이 값에는 클라이언트가 원하는 응답의 형태가 값으로 담긴다.

 

ContentNegotiatingViewResolver는 이렇게 요청의 accept에 맞춰서 자동으로 응답을 변환시켜준다.

변환하는 작업을 하는게 바로 ContentNegotiatingViewResolver이다.

 

json의 경우 classpath에 내장되어 있는 기본 라이브러리를 통해 가능하지만,

xml의 경우 별도의 라이브러리가 필요하다.

 

 


4부 정적 리소스 지원

 

 

- 기본 리소스 위치

/static

/public

/resources/

/META-INF/resources

 

ex) localhost:8080/hello.html 요청 -> /static/hello.html 실행

 

application.properties에서 

spring.mvc.static-path-pattern 으로 맵핑 설정 변경가능 

스프링은 기본루트 설정이 / 인데 /soob 이런식으로 변경 할 수 있다. 쓸 일 별로 없다.

 

spring.mvc.static-locations : 리소스를 찾을 위치 변경이 가능 

-> 기본 리소스 위치를 안쓰게되니까 딱히 권장하지 않는다.

ex

이런식으로 addResourceHandlers로 추가하는걸 추천.

스프링부트가 제공하는 기본 리소스에 추가하는 것이다.

-> /m/hello.html로 요청하면 m디렉토리 안의 hello.html 실행한다.

 

 


5부 웹 JAR

ex

웹 JAR 란, 클라이언트에서 사용하는 웹 라이브러리를 JAR 파일 안에 패키징 한 것이다.

ex) jQuery

 

maven repository에서 jquery 의존성 추가.

html 파일에서 위와 같이 <script src="/webjars/jquery/3.4.1/dist/jquery.min.js"></script> 추가시 사용 가능하다.

만약 버전을 생략하고 사용하고싶다면 webjars-locator-core라는 의존성 추가가 필요하다.

 

추가후에는 <script src="/webjars/jquery/dist/jquery.min.js"></script> 이런식으로

버전을 명시하지 않고 사용 가능하다.

 


6부 index페이지와 파비콘

 

 

resources/ 내에서 index.html, favicon.ico라는 이름으로 있으면 스프링부트가 찾아서 바인딩 해준다.

 


7부 Thymeleaf

 

 

hello.html

위에 xmlns:th="http://www.thymeleaf.org 추가 

추후 사용할때 다시 타임리프 문법 및 설명 보기

 

test

 


 

 

 


※참조

dailyheumsi.tistory.com/175?category=874866#httpmessageconverters

www.inflearn.com/course/스프링부트/lecture/13546

'Spring' 카테고리의 다른 글

데이터 2부 : 인메모리 데이터베이스  (0) 2020.07.12
웹 MVC 8부 ~ 11부  (0) 2020.07.11
테스트  (0) 2020.07.08
로깅 - 1부, 2부  (0) 2020.07.08
Profile  (0) 2020.07.08