SpringBoot에서 JSP 설정하기

devdo·2021년 4월 11일
0

SpringBoot

목록 보기
6/41
post-thumbnail

springBoot는 기본적으로 jsp를 지원하지 않는다.

SpringBoot에서 JSP를 쓰지 않는 이유

Thymeleaf와 달리 JSP는 스프링부트가 자동 설저을 지원하지 않으며 권장하지도 않는다.

왜 SpringBoot는 JSP를 권장하지 않을까?

우선 JSP를 사용하면 JAR 패키징을 할 수 없어 WAR 패키징을 해야 한다. 물론,
WAR 패키징으로도 임베디드 톰켓으로 실행할 수 있고 배포도 가능하다.

하지만 Undertow라는 최근에 만들어진 서블릿 엔진이 JSP를 지원하지 않는 제약사항도 생겼다.

그리고 JSP는 의존성에도 문제가 있다. 이런 이유들로 JSP를 쓰지 않는 것이다.

그러나 지금까지 Servelt 중심의 Java 개발을 많이 한 역사가 많은 한국의 Java IT 시장에서는 아직까지도 프론트 탬플릿으로 JSP를 많이 사용하고 있다. SpringBoot 내에서 JSP 사용법도 알아 두면 좋을 것이다.

그래서 jsp를 사용하기 위해 따로 설정하는 방법은 다음과 같다.


JSP 설정법

1. 디팬더시

  • pom.xml(maven)
        <dependency>
            <groupId>org.apache.tomcat.embed</groupId>
            <artifactId>tomcat-embed-jasper</artifactId>
        </dependency>
        <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>jstl</artifactId>
        </dependency>
  • build.gradle
implementation 'org.apache.tomcat.embed:tomcat-embed-jasper'
implementation 'javax.servlet:jstl'

2. application.yml

spring:
  mvc:
    view:
      prefix: /WEB-INF/views/  # 변경가능
      suffix: .jsp				

✅ 실행시 .jsp까지 함께 적어주어야 하지만 이 설정을 하면,
이제 Controller 단에서 요청시 .jsp를 뺄 수가 있다.


3. jsp 파일 경로

아래 그림처럼 src/main폴더 하위에 webapp/WEB-INF/views 폴더를 만들고 이 위치에 놓는다.


예시)

IndexController

// prefix : /WEB-INF/views/
// suffix : jsp
// 풀네임 : /WEB-INF/views/index.jsp

@Controller
public class IndexController {
    @GetMapping
    public String index() {
        return "index";
    }
}

main/webapp/WEB-INF/views/index.jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
	<title>Title</title>
</head>
<body>

  <form action="/WEB-INF/views/save.jsp" method="post">
	username: <input type="text" name="username" />
	age: <input type="text" name="age" />
	<button type="submit">전송</button>
  </form>
</body>
</html>
  • <%@ page contentType="text/html;charset=UTF-8" language="java" %>
    => 첫줄은 JSP문서라는 뜻이다. JSP 문서는 이렇게 시작해야 한다

  • application.yml prefix 설정 안할시
    => 실행시 .jsp 까지 함께 적어주어야 한다.
    http://localhost:8080/WEB-INF/views/index.jsp

profile
배운 것을 기록합니다.

0개의 댓글