spring boot 설정 및 thymeleaf 연동
와오 한시간동안 삽질의 내용을 정리하고 발행하다가, 제목을 안써서 다 날아감ㅎㅎㅎㅎㅎㅎㅎㅎㅎㅎㅎㅎㅎㅎㅎㅎㅎㅎㅎㅎ
mysql 삽질을 끝내고 드디어 톰캣 서버가 시작했다는 내용을 볼 수 있었다ㅠㅠㅠㅠㅠㅠ
그러면, 내가 가지고 온 부트스트랩과 프로젝트를 연결해보기로 했다.
우선은 메인페이지가 뜨는지만 확인하려고 했는데 그것도 시간이 오래 걸렸다ㅠㅠ
1. jsp로 사용해서 페이지 열어보기(실패함)
우선 src/resources/static하위 디렉토리로 css/js/img 폴더를 넣어줬다.
html 페이지도 정적 페이지라면, 동일한 디렉토리로 위치시키면 된다.
나는 html페이지를 가공해서 사용할 예정으로, 정적 페이지로 취급(?)하지 않았다.
그러면? /src/main/webapp/WEB-INF/views/~.jsp 파일을 위치시키기 위해 해당 경로를 생성하고
모든 html파일을 jsp로 확장자를 변경했다....!
//build.gradle
dependencies {
implementation('org.apache.tomcat.embed:tomcat-embed-jasper')
implementation('javax.servlet:jstl:1.2')
}
//application.properties
spring.mvc.view.prefix=/WEB-INF/jsp/
spring.mvc.view.suffix=.jsp
그리고, 위에 의존성과 프로퍼티를 입력하고 실행했는데, 404 에러가 나왔다.
webapp/WEB-INF/views/ index.jsp 이 없다는 메시지가 나왔다😱
아니다 있는데ㅠㅠㅠㅠㅠㅠ 왜 없다고 나오는지...
해결하기 위해서 controller 어노테이션을 restcontroller로 변경도 해보고,(상관없다는 것 안다...)
별 짓을 다해봤지만 결국 해결은 안되었다.
아까는 무슨 방법을 해봤는지 더 자세히 적었지만 의욕을 상실했다ㅠㅠ....
그러다가, jsp를 대신해서 타임리프를 사용할 수 있다는 사실을 알았다.
타임리프를 이번에 적용해보라고 스터디 친구에게 들었는데 어떻게 적용하고 사용할지 모르다가, jsp를 대신해서 사용할 수 있다는 사실을 알았다. 코쿼에서 mustache를 사용했었는데 이를 대신해서 사용하면 된다는 얘기를 불과 이틀전에 해줬는데 삽질 후에 돌아왔당ㅎㅎㅎㅎㅎ
2. thymeleaf로 페이지 열어보기(성공)
우선 html 파일은 /src/main/resources/templates 하위에 두면 된다고 해서, jsp로 바꾼 파일을 다시 html으로 돌리고 이동했다.(혹시 몰라서 html파일을 별도로 보관하길 잘했다...)
build.gradle
dependencies {
implementation('spring-boot-starter-thymeleaf')
}
application.properties
#spring.thymeleaf.view-names=thymeleaf/*
#spring.thymeleaf.prefix=classpath:/templates/
#spring.thymeleaf.suffix=.html
#
#spring.thymeleaf.cache=false
#spring.thymeleaf.check-template-location=true
의존성과 프로퍼티를 추가했는데, 404 오류가 그대로 나왔다...
영문으로 된 사이트를 보니, 메인 메소드가 있는 클래스의 @SpringBootApplication 밑에
@ComponentScan(basePackages={"com.내프로젝트이름"})을 명시하라는 내용이 있었다.
그래서 해보니까 페이지가 나온다!!
근데? 컨트롤러에서 리턴하는 string값이 그대로 나온다..엥???????
어노테이션에도 remove하라는 알람이 떠서, 이 내용은 얼른 지우고 공식문서를 봤다.
그랬더니 html 파일 내에 태그를 달아줘야했다.
< html xmlns:th="http://www.thymeleaf.org" >
벨로그에서 태그를 읽어서 앞 뒤로 공백을 넣었다.
다시 실행하니 이번에는 500 에러!
경로를 못찾는다는 내용의 에러로, 구글링을 하니 인프런의 질문/답변이 나왔다.
김영한님께서 application.properties 내용을 지우면 된다는 답변을 주신 것을 확인하고
나도 내용을 지우고 다시 실행하니 정상적으로 페이지가 나온다!!!!
페이지가 이쁘게 나오지는 않았지만, 내부적인 경로를 다시 설정해주면 정상적으로 나올 일이니까~
우선 시작 준비가 드디어 끝났다ㅠㅠㅠㅠㅠㅠㅠㅠ갬동😭😭
참고한 블로그 및 사이트
https://goddaehee.tistory.com/204
https://www.technicalkeeda.com/spring-boot-tutorials/getting-whitelabel-error-page-with-status-404-while-running-spring-boot-application
https://www.inflearn.com/questions/61492
Author And Source
이 문제에 관하여(spring boot 설정 및 thymeleaf 연동), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@choitree_/미친-제목안써서-다날아감저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)