#8 스프링 부트의 yml과 jsp파일 리턴
우선 시작 전에, 혹시 sts4에서 jsp나 html 파일을 생성할 수 없는 경우
플러그인을 설치해주어야 한다.


마켓에서 이 플러그인을 설치하면 된다.
이제 yml에 대해 알아보자
내가 기존에 만들던 스프링 레거시 게시판에서는
web.xml, root-context.xml, servlet-context.xml 파일들이 있었다.
하지만 스프링 부트에선 이 세 파일들의 합본으로 application.yml을 사용한다.
application.yml
server:
port: 9090
servlet:
context-path: /blog
encoding:
charset: UTF-8
enabled: true
force: true
spring:
mvc:
view:
prefix: /WEB-INF/views/
suffix: .jsp
datasource:
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://localhost:3306/blog?serverTimezone=Asia/Seoul
username: cos
password: cos1234
jpa:
open-in-view: true
hibernate:
ddl-auto: create
naming:
physical-strategy: org.hibernate.boot.model.naming.PhysicalNamingStrategyStandardImpl
use-new-id-generator-mappings: false
show-sql: true
properties:
hibernate.format_sql: true
jackson:
serialization:
fail-on-empty-beans: false
코드 :
server:
port: 9090
servlet:
context-path: /blog
encoding:
charset: UTF-8
enabled: true
force: true
설명 :
context-path라는 것은 내 프로젝트에 들어가기 위한 진입점이다.
미설정시 context-path: /
설정 이전에 주소 예시 http://localhost:9090/http/lombok
설정 이후 http://localhost:9090/blog/http/lombok
코드 :
spring:
mvc:
view:
prefix: /WEB-INF/views/
suffix: .jsp
설명 :
이해를 위해 우선 TempControllerTest.java를 작성한다.

실행시키면

찾을 수 없다는 오류가 발생한다. home.html.jsp ??
이건 지금 application.yml 파일에 작성되어 있는
spring:
mvc:
view:
prefix: /WEB-INF/views/
suffix: .jsp
이 코드 때문이다.
이 코드를 드래그해 다음과 같이 주석처리를 해주고,


이제 다시 실행해보면

해당 오류가 발생한다.
왜냐하면 @Controller는 해당 경로 이하에 있는 파일을 리턴하는데

지금 코드로는 이와 같이 src/main/resources/statichome.html과 같이 리턴하기 때문이다.
따라서 리턴명에 다음과 같이 반드시 슬래시(/)를 붙여줘야 한다.

이제 실행해보면

제대로 실행되는 것을 확인할 수 있다.
이와 같이 @RestController 가 문자 그 자체를 리턴했다면
@Controller 는 해당 경로 이하에 있는 파일을 리턴해준다.
이제는 html이 아니라 jsp를 리턴해보겠다.
그런데 스프링 부트는 기본적으로 jsp 지원을 하지 않는다.
jsp 파일을 리턴해도 스프링 부트가 정상적으로 동작하지 않는다.
부트에서 jsp파일 인식
그래서 첫 번째로 필요한 것이 pom.xml에서 JSP 템플릿 엔진의 의존성 설정을 해주는 것이다.
그래야 jsp가 부트에서 동작할 수 있다.

그리고 src/main/webapp/WEB-INF/views 디렉토리를 생성해서 jsp파일을 둔다.
jsp파일은 정적 파일이 아니므로 웹서버인 아파치가 처리하지 못한다.
톰캣이 대신 컴파일해서 웹브라우저에게 전달한다.

application.yml 주석처리 했던 코드들의 주석을 다시 해제한다.


prefix와 suffix는 이렇게 앞 뒤로 붙게된다.
이제 jsp파일을 리턴해보면

스프링 부트에서 jsp파일이 제대로 리턴되는 것을 확인할 수 있다.
참고자료 : https://youtu.be/U9OnYKiSf4g