728x90

취업 전 교육을 받을 때는 프론트와 백이 각각 Next.js와 springBoot로 나뉘어져 있어서 JSP의 존재를 몰랐지만 취업을 하고 나서 프로젝트들이 모두 JSP로 되어있었기에 공부하고 조금 더 알아볼 겸 연동하는 방법을 정리한 글입니다.


1. 의존성 추가

build.gradle (dependencies 안에 추가)

implementation 'javax.servlet:jstl'
implementation 'org.apache.tomcat.embed:tomcat-embed-jasper'

pom.xml (<dependencies> </dependencies> 사이에 추가)

<!-- jstl -->
<dependency>
    <groupId>javax.servlet</groupId>
    <artifactId>jstl</artifactId>
</dependency>

<!-- tomcat-embed-jasper -->
<dependency>
    <groupId>org.apache.tomcat.embed</groupId>
    <artifactId>tomcat-embed-jasper</artifactId>
</dependency>
  • jstl - JSP의 라이브러리
  • tomcat-embed-jasper - 스프링부트에서 JSP템플릿엔진을 사용할 수 있게 해주는 라이브러리

2. view 경로 수정

application.properties

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

application.yml

spring:
  mvc:
    view:
      prefix: /WEB-INF/views/
      suffix: .jsp
  • prefix - view(페이지)들이 있는 기본 경로
  • suffix - view(페이지) 확장자

3. 프로젝트 구조(디렉토리) 수정

디렉토리 구조

기존 프로젝트의 [src] - [main] 하위에 [webapp] 디렉토리를 생성하고 앞서 설정한 view 기본 경로를 똑같이 생성해준다.


4. 페이지 추가 및 컨트롤러 생성

index.jsp (위치: [src] - [main] - [webapp] - [WEB-INF] - [views] - [index.jap])

<%--
  Created by IntelliJ IDEA.
  User: user
  Date: 2023-10-30
  Time: 오전 11:08
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
<h1>메인 페이지</h1>
</body>
</html>

MainController.java

@Controller
@Slf4j
public class MainController {

    /**
     * 메인 페이지
     *
     * @param httpServletRequest HttpServletRequest
     * @return /
     */
    @RequestMapping("/")
    public String mainPage(HttpServletRequest httpServletRequest) {
        log.info(httpServletRequest.getRequestURI());
        return "/index";
    }
}
  • 이 때 return 의 값은 보여줄 페이지의 jsp파일명(확장자 제외)으로 작성해준다.
  • view 기본경로가 /WEB-INF/views/ 이므로 해당 경로를 생략하고 하위의 디렉토리 및 파일 명을 작성한다.

결과

메인 페이지


팁1 .jsp 파일 생성할 때 기본 템플릿 나오게 하는 법 (인텔리제이)

웹 리소스 디렉터리에 webapp 추가

+ Recent posts