본문 바로가기
코테 및 다른 코딩 공부

[Spring Boot] 스프링 부트 웹페이지를 만들어보자 - 2(JSP 파일을 생성 & JSP 기본 경로 설정하는 방법, JAVA로 만든 Controller로 JSP 호출하기)

by 넴넴L 2025. 3. 23.
728x90

 

JSP 파일 생성하기

생성할 프로젝트에 src에 main이라는 폴더가 있는데 그 밑에 찾아보니까 

 

src -> main -> webapp -> WEB-INF -> views로 경로를 만들어주자

그리고 views에 test.jsp를 만들어주자

 

이제 test.jsp가 어디에 있는지 경로를 지정해줘야 하는데

src/main/resources 폴더 밑에 properties 파일이 있는데

 

그 쪽에 

spring.mvc.view.prefix=/WEB-INF/views/
spring.mvc.view.suffix=.jsp

이 2개를 넣어주자

이러면 controller를 추가해서 test.jsp 파일을 호출하면 실제 웹페이지처럼 개발할 수 있다.

 

그러면 이제 controller 파일을 만들어보자

src/main/java package가 있는데

원래 만들어져 있는 com.springBootWeb.demo가 있을것이다.

비슷한 이름으로 com. springBootWeb.demo.main(뒤에 main만 넣어보자)

그리고 .main을 ctrl + n을 하고 class를 검색 후 만들어준다.

MainController 라는 이름을 만들고 finish를 하면

 

자연스럽게 MainController.java로 만들어진다.

 

만들어진 class위에 @Controller를 넣어주자.

그러면 빨간색이 뜨는데

ctrl + space bar를 누르면

'org.springframework.stereotype'

이게 뜨는데 엔터를 누르자

 

그러면 이렇게 import 되어있을 거다.

그리고 만든 MainController에 

@GetMapping(value = "/main")

public String test() {
    return "test";
}

 

위처럼 적어보자.

물론 이것도 import를 해야한다.

 

그러고 Spring boot를 실행하고(나는 보통 디버깅을 한다.)

켜졌으면 저번에 url에서 뒤에 /main을 붙여보자

localhost:8080/main

 

참고로 test/test 되어있으면 위에서 만든 src/main/webapp/WEB-INF/test/test.jsp 이렇게 되니
return에는 test만 기입하자(jsp 명이 test.jsp이기 때문이다.)

 

그런데..

whiteLabel Error Page 404가 뜬다..

"Path with "WEB-INF" or "META-INF": [WEB-INF/views/test.jsp]"

console을 보면 이렇게 뜨게 되는데

 

에러 해결 방법을 찾다 보니

문제 : .jsp 파일을 찾을 수 없다는 것이였고

원인 : 내장된 tomcat에 jsp를 처리하는 서블릿이 없다는것이었다.

해결방법 : build.gradle이나 pom.xml 등에 jsp를 처리하는 서블릿을 추가하고 refresh를 해주는 것이었다.

 

내가 에러 해결을 위해 참고한 방법은 아래에 기재에 해놨다.

참고 : https://copycoding.tistory.com/279

 

[Spring Boot] Path with "WEB-INF" or "META-INF"

Spring Boot에서 jsp로 화면을 만들고 Controller에서 View로 리턴을 하였는데 jsp 파일을 찾지 못하는 경우 ResourceHttpRequestHandler :Path with "WEB-INF" or "META-INF" 이런 식으로 발생하는 오류입니다. 브라우저에

copycoding.tistory.com

 

나는 maven이니 pom.xml에 해야한다.


<dependency>
<groupId>org.apache.tomcat.embed</groupId>
<artifactId>tomcat-embed-jasper</artifactId>
</dependency>

이걸 넣어주자.

 

종속성을 넣고 refresh를 해줘야 한다.

근데 나는 refresh를 해줘도 계속 똑같이 에러가 떠서.. 아예 서버를 껐다가 켰다.

(참고로 refresh하는 방법은 pom.xml을 클릭 후 우클릭하고 refresh하거나 F5 누르면 된다.)

저걸 누르면 디버깅인데 재시작 하는거랑 똑같다고 보면 된다.

그러고 'localhost:8080/main' 을 쳐보면

에러 해결 완료로 변경하고

 

웹페이지에서 refresh하면

이렇게 뜬다. 에러 해결 완료!