티스토리 뷰
* 개요
- JSP 적용시 참고한 블로그
https://jsijsi99.tistory.com/10
Controller 에서 jsp 읽도록 설정했지만 JSP 읽어오지 못하는 경우
- LOG 에 다음 오류 보이며 (WARN 레벨이므로 직접 원인은 아님)
nio-8080-exec-2 o.s.w.s.r.ResourceHttpRequestHandler : Path with "WEB-INF" or "META-INF":
- 접속한 페이지에서는 Whitelabel Error Page 보임
* 해결
- 여러 접근방법이 있었는데 실제 적용된것은 다음과 같음.
하지만 중요한건, 적용 당시에는 바로 안 되었고, 껐다 켜니 됨
ㅅㅂ
0. 일단... 컨트롤러는 만들었는가?
@Controller
public class MainController {
@RequestMapping(value="/")
public String main() throws Exception {
return "/index";
}
}
1. JSP 를
src/main/webapp/WEB-INF/views 에 위치
2. application.properties 에 선언
spring.mvc.view.prefix: /WEB-INF/views
spring.mvc.view.suffix: .jsp
3. 의존성 추가 (gradle)
compile('org.apache.tomcat.embed:tomcat-embed-jasper')
compile('javax.servlet:jstl:1.2')
(한 다음엔 꼭 Gradle > Refresh Gradle Project)
https://stackoverflow.com/questions/20602010/jsp-file-not-rendering-in-spring-boot-web-application
- maven 은
<dependency>
<groupId>org.apache.tomcat.embed</groupId>
<artifactId>tomcat-embed-jasper</artifactId>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>jstl</artifactId>
<version>1.2</version>
</dependency>
* 별로 필요 없었던 것들.
1. Spring boot 1.3 이후로는 JSP 지원 안 하고
버전 낮추거나
WAR 로 배포해야 한다는 의견 있었음. (apply plugin: 'war')
상관 없었음.
2. InternalViewResolver 를 따로 지정하는 방법 역시 효과 없음
https://culinarydeveloper.tistory.com/16
3. JSP 를 resources 아래 넣어야 한단 의견.. 효과 없음
https://stackoverflow.com/questions/29782915/spring-boot-jsp-404
4. webapp 을 source folder 로 바꾸는 방법 효과 없음
5. ModelAndView 선언해서 setViewName() 바로 해주는 방법은 오류 불러왔음
* 기타 - viewName 을 return 했지만 String 만 보이는 경우
메서드에 지정된 @ResponseBody 있다면 지워야 함
컨트롤러에 @RestController 로 지정되어있다면 @Controller 로 바꿔야 함.
JSP 같은 뷰 표시 아닌 JSON 반환을 위한 설정바법