📌 yml 설정하기
1. yml 이란
https://www.inflearn.com/questions/16184
2. yml 설정
server:
port: 8081
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
(1) server & context-path
server:
port: 8081
servlet:
context-path: /blog
encoding:
charset: UTF-8
enabled: true
force: true
- 즉, 이것은 localhost:8081/blog/ 형식으로 들어가야한다는 뜻
(2) spring boot의 동작원리에 대해 알아보자
spring:
mvc:
view:
prefix: /WEB-INF/views/
suffix: .jsp
1. 우선 TempControllerTest라는 클래스를 하나 만든다
package com.cos.blog.test;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
@Controller
public class TempControllerTest {
// http://localhost:8081/blog/temp/home
@GetMapping("/temp/home")
public String tempHome() {
System.out.println("tempHome()");
return "home.html";
}
}
2. 실행시켜보면 404가 뜨는데, home.html.jsp파일을 찾을 수 없다는 문구가 뜬다.
그 이유는 우리가 아까 yaml에서 경로를 따로 저장해놓았기 때문이다.
3. 다시 yaml 파일에 들어가서 우리가 지정한 경로부분을 주석처리하고 다시 저장한다.
#spring:
# mvc:
# view:
# prefix: /WEB-INF/views/
# suffix: .jsp
4. 그런다음 resources/ static 에서 home.html 파일을 하나 만든다
5. 재실행해보면 다시 404가 뜨는데, 이번에는 아까와 달리 경로가 뜨질 않는다.
'no message available'
6. 일반적으로 @Controller라는 어노테이션이 붙으면 아래 테스로 만든
tempHome이라는 메서드는 파일을 리턴하게 되는데,
그 중에서도 기본적인 리턴경로는 src/main/resources/static에 있는 것을 리턴한다.
하지만, static에 아까 html파일을 만들었음에도 불구하고 리턴되지 않았던 이유는
경로명을 정확히 뒤에 home.html을 붙여야 하기때문이다.
package com.cos.blog.test;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
@Controller
public class TempControllerTest {
// http://localhost:8081/blog/temp/home
@GetMapping("/temp/home")
public String tempHome() {
System.out.println("tempHome()");
// 파일리턴 기본경로가 : src/main/resources/static
// 리턴명을 /home.html이라고 해야 반응한다.
// 즉, return 다음에 슬래시를 붙여서 /home.html이라 리턴명을 쳐줘야 파일을 읽는다는 것이다
// 풀경로 : src/main/resources/static/home.html
return "/home.html";
}
}
**여기서 @RestController와 차이점을 알수있는데,
@RestController는 리턴값의 문자 그대로를 반환하였다면,
@Controller는 src/main/resources/static 경로 아래의 파일을 리턴한다.
*** 그래서 우리는 보통 jsp파일을 리턴하는데 보통 springboot에서는 jsp파일을 인식하지 않기에
pom.xml에 jsp 를 dependcy로 추가하는 것이고,
또한 static에 jsp파일을 넣으면 인식이 안되는데 왜냐면 static에 들어갈 파일들은 정적인 파일인 반면에
jsp파일은 동적인 파일이기 때문이다. 그렇기에 jsp파일을 읽기위해서 경로를 바꿔주어야 하는데
7. src/main에다가 webapp/WEB-INF/view라는 폴더를 생성한다.
그런다음 view안에다가 jsp파일을 넣고
8. yml파일에서 아까 주석처리 한것을 푼다.
여기서 prefix란 controller가 리턴을 할때 앞의 경로를 뜻하고
suffix란 뒤에 붙는 경로를 뜻하는데.
즉,
prefix : /WEB-INF/views/
suffix : .jsp
풀네임 : /WEB-INF/views/test.jsp
가 되는 것이다.
'Spring > Spring 블로그만들기' 카테고리의 다른 글
[Springboot] 나만의 블로그 만들기 - 11. 연관관계의 주인 (0) | 2022.03.21 |
---|---|
[Springboot] 나만의 블로그 만들기 - 10. 테이블 생성(User, Board, Reply) (0) | 2022.03.21 |
[Springboot] 나만의 블로그 만들기 - 8. Lombok 세팅하기 (0) | 2022.03.21 |
[Springboot] 나만의 블로그 만들기 - 7. HTTP1.1 체험하기 (0) | 2022.03.10 |
[Springboot] 나만의 블로그 만들기 - 6. Git 세팅 (0) | 2022.03.08 |