반응형
컨트롤러와 화면은 연결하고 싶어서 처음엔 ModelAndView를 사용하다 잘 안돼서 찾아보니 예전 방식이라고 하여 그럼 익숙한 문자열 형태인 jsp파일 이름을 반환하는 방식으로 바꾸기로 하였다.
그러나 아래와 같은 에러가 나타났다.사실 ModelAndView객체를 이용하는 방법도 뷰 이름을 setViewName으로 지정하여 반환해주면 되지만, 뷰 파일의 위치를 어떻게 해도 해결하지 못해 방법을 바꾼 것이었다. 참고로 template아래에 위치시켜주면 된다.
ResourceHttpRequestHandler :Path with "WEB-INF" or "META-INF" ...
먼저 controller와 화면을 연결시키기 위해선 아래와 같이 application.poperties를 추가해줘야 한다.
spring.mvc.view.prefix=/WEB-INF/views/
spring.mvc.view.suffix=.jsp
또한 jsp파일이 알맞은 경로에 있도록 해야 한다.
src/main/webapp/WEB-INF/views/파일.jsp
WEB-INF에 들어있는 파일은 브라우저로 접근할 수 없고 서버에서만 접근이 가능하다. (브라우저에서 url에 web-inf를 지나는 파일 경로를 치면 접근 불가능하다.)
위와 같이 해주었지만 나타난 ResourceHttpRequestHandler :Path with "WEB-INF" or "META-INF" ... 에러의 이유는 spring boot에 내장되어있는 tomcat이 있는데 이 톰캣은 jsp를 처리를 하는 jsp servlet이 없기 때문에 발생한 것이다.
스프링에선 jsp사용을 권하지 않는다나..
그리고 spring과 html 파일을 맵핑하고 싶은 거라면 이 방식으론 할 수 없다. 왜냐면 jsp servlet은 html을 처리하는 servlet이 없기 때문이다.
maven에서는 아래처럼, jstl도 사용한다면 두 번째 dependecy도 추가해줘야 한다.
<dependency>
<groupId>org.apache.tomcat.embed</groupId>
<artifactId>tomcat-embed-jasper</artifactId>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>jstl</artifactId>
</dependency>
gradle일 경우는 아래와 같다. tiles는 프론트에서 많이 쓰는 기본 프레임을 제공해준다고 한다.
implementation('org.apache.tomcat.embed:tomcat-embed-jasper')
implementation('org.apache.tiles:tiles-jsp:3.0.4')
implementation('javax.servlet:jstl:1.2')
다른 기능이 필요하지 않은 이상, jasper만 추가해주면 된다.
반응형
'spring | spring boot > 오류 해결' 카테고리의 다른 글
SpringBoot - security : localhost에서 리디렉션한 횟수가 너무 많습니다. (0) | 2022.03.31 |
---|---|
[spring boot] js로 body넘겨줄때 controller에서 null값으로 받는 현상(swagger의 @RequestBody를 import 함) (6) | 2022.03.14 |
SpringBoot h2 데이터베이스 연결 안됨, spring security영향때문.. (0) | 2022.02.25 |
spring security - Error creating bean with name 'springSecurityFilterChain' (0) | 2022.02.20 |
spring(?)-뷰 맵핑시 한글 깨짐 현상, javascript 연결, 약간의 vue문법문제 (0) | 2022.01.28 |
댓글