아래의 포스트를 확인하면 된다.
Yaml 이란
application.yml은 Spring legacy에서의 web.xml, root-context.xml, servlet-context.xml의 합본이다.
즉, application.yml은 이 프로젝트에서 사용하는 설정값들을 관리하는 파일이다.
이전에 application.yml에 mysql 설정을 적은 적이 있다. (datasource 부분)
아래의 코드를 application.yml에 붙여넣을 것인데 datasource 부분만 이전에 사용했던 코드로 사용한다. (username, passowrd 때문)
server:
port: 8000
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: deannn
password: deannn123
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
서버에 접속하는 포트를 설정하는 것이다. 기본값은 8080이다. 이 포트를 8000으로 바꾸면 http://localhost:8000
으로 접속해야 한다.
context-path는 해당 프로젝트를 실행했을 때 root에 대당하는 URI를 지정해주는 것이다.
기본값은 /
이다. 따라서 여태까지는 http://localhost:8080
으로 접속하면 서버에 접속할 수 있었다.
context-path를 /blog
로 설정하게 되면 http://localhost:8080/blog
에 접속해야 서버로 접속할 수 있다.
이 상태에서 서버를 실행해서 localhost:8080/blog/http/lombok
에 접속하면 이전에 localhost:8080/http/lombok
에 접속한 것과 같은 결과를 보여주는것을 알 수 있다.
mvc - view 를 설명하기 전에,
@Controller
어노테이션은 @RestController
와 다르게 파일을 리턴해준다.
예를 들어
public class TempControllerTest {
@GetMapping("temp/home")
public String tempHome() {
return "/home.html";
}
}
이러한 클래스가 있다고 하면, localhost:8000/blog/temp/home
에 접속하면 파일 리턴의 기본 경로인 src/main/resources/static
에 파일명(리턴값)을 붙인 경로의 파일을 리턴한다.
위 경우에는 src/main/resources/static/home.html
을 리턴하는데, return 값 맨 앞에 /
가 없으면 파일 경로가 src/main/resources/statichome.html
로 되서 파일을 못찾게 된다.
그리고 static 폴더 아래에는 항상 브라우저가 인식할 수 있는 정적 파일만 넣어야 한다.
해당 프로젝트에서는 JSP를 사용할 것이다. Spring Boot에서 JSP를 정식으로 지원하지 않기 때문에 JSP 템플릿 엔진을 pom.xml에 따로 추가하고 주석했는데, 주적을 풀고 적용한다.
그리고 파일을 리턴해야 할 때(@Controller 어노테이션 사용)가 있는데, JSP 파일을 리턴해야 할 때도 있다. 하지만 static 폴더에는 정적 파일만 넣어야 하므로 jsp 파일을 넣게 되면 인식이 되지 않는다.
이를 해결하게 위해 src/main/webapp/WEB-INF/views
라는 경로의 디렉터리를 만든다. 그리고 그 안에 jsp 파일을 넣어준다.
그리고 static 디렉터리가 아닌 views라는 디렉터리를 향하도록 설정을 해야 한다.
위의 코드에서 mvc: view:
아래에 보면 prefix
와 suffix
가 있다. prefix는 접두어, suffix는 접미어라고 생각하여 prefix는 파일명 앞에 붙고 suffix는 파일명 뒤에 붙는다. 브라우저로 리턴할 파일의 경로가 된다.
위와 같이 test.jsp이라고 하고 리턴값이 test
이면 풀 경로가
/WEB-INF/views/test.jsp
가 된다.
테스트를 위해 src/main/java/com.***.blog/test
에 TempControllerTest.java
파일을 만들고 아래의 코드를 입력한다.
@Controller
public class TempControllerTest {
@GetMapping("/temp/jsp")
public String tempJsp() {
return "test";
}
}
그리고 위에서 설명한 것처럼 src/main/webapp/WEB-INF/views
에 test.jsp 파일을 만들고 안에 아무 내용이나 넣는다.
서버를 실행 후에 http://localhost:8000/blog/temp/jsp
에 접속한다.
위와 같이 test.jsp 안의 내용을 보여주는데, 이는 톰캣이 jsp 파일을 컴파일하여 html로 변환하여 리턴하는 것이다.
이렇게 yml 설정과 jsp 연결이 끝났다.