SPRING BOOT

[스프링부트 6] Spring MVC View 만들기 (JSP)

내. 일. 을 바꾸는 업무 자동화 2021. 11. 10. 16:10
반응형

지난 시간에는 스프링 컨트롤러에 대해 알아보았습니다. 

이제, 이번 시간부터는 VIEW에 대해 실습을 진행하며 알아보도록 합시다. 

 

[먼저, JSP 연동하기]

 

먼저, 스프링부트에서는 jsp가 자동설정되지 않으며 권장되지도 않습니다. 

왜 스프링부투에서는 jsp를 권장하지 않을까요? 

일단 jsp를 사용하면 JAR 패키징을 할 수 없고, 최근에 만들어진 서블릿 엔진이 JSP를 지원하지 않는 등 제약사항이 발생하기 때문입니다. 

 

하지만, 간단한 설정을 통해 jsp 파일을 동작하게 만들 수 있습니다. 

먼저 프로젝트의 pom.xml 파일을 수정해 주도록 합시다. 

pom.xml 파일을 열어 구조에 맞게 아래의 코드를 추가 합니다. (POM : Project Object Mode의 약자)

1
2
3
4
5
6
7
8
9
10
11
12
<!-- jsp 사용을 위해 추가함 (jasper) -->
<dependency>
    <groupId>org.apache.tomcat.embed</groupId>
    <artifactId>tomcat-embed-jasper</artifactId>
</dependency>
 
<!-- jsp 사용을 위해 추가함 (jstl) -->
<dependency>
    <groupId>javax.servlet</groupId>
    <artifactId>jstl</artifactId> 
</dependency>     
cs

 

maven Dependencies(의존성) 을 관리하는 파일이 pom.xml파일이며

jasper과 jstl을 추가해 주면 jsp를 동작하게 만들 준비가 완료 되게 됩니다. 

* jasper : 실제 jsp 페이지의 파일 구문을 분석하여 서블릿으로 Java코드로 컴파일)
* jstl : 자주쓰는 taglib를 인터페이스하여 구현한 것)

아래와 같이 작성이 완료되었으면 저장합니다. 

저장까지 완료되었다면, 마우스 오른쪽을 클릭하여 아래와 같이 나타나는 항목에서 Maven - Reload project를 선택하여

maven 의존성을 리로딩 합니다. 

여기까지 완료되었다면 이제 스프링부트에서 jsp 파일이 동작하게 됩니다. 

다만 아래의 폴더 구조를 이해하여야 합니다. 

resources 폴더 하위에는 기본적으로 static와 templates 폴더가 존재하는데 해당 영역은 아래와 같은 역할을 담당합니다. 

이 두 폴더(static, templates)에 jsp파일을 넣어도 작동하지 않기 때문에 아래와 같이 폴더를 생성해 줍니다. 

(src/main하위에 webapp/WEB-INF/views로 생성)

헷갈리실까봐 아래와 같이 캡쳐하여 두었으니 비교해 보시기 바랍니다. 

jsp 파일의 접근을 위해 prefix(접두사), suffix(접미사) 설정을 해 주어야 합니다. 

앞으로 자주 사용하게 될 설정파일인 application.properties 파일을 열어 봅시다. 

해당 파일을 열면 아무것도 없는 공백 페이지로 나오게 될 텐데요

이 곳에 우리가 작업하는 어플리케이션의 환경변수가 위치하게 된다고 이해하시면 됩니다. 

아래의 코드를 작성하고 저장합니다. 

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

딱 두 줄 입니다.  

모든 준비는 끝났습니다. 

그럼 이제 컨트롤러를 생성하여 jsp파일이 동작하는지 아래의 예제를 통해 진행해 보도록 하겠습니다. 

SampleController.java를 열어 아래의 코드를 추가 작성 합시다. 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
    /*
     * 스프링부트에서의 jsp 호출 테스트
     */
    @RequestMapping("/jspSample")
    public ModelAndView jspSample() throws Exception{
        ModelAndView mav = new ModelAndView("jspSample");
        mav.addObject("name""홍길동");
 
        List<String> jspSample = new ArrayList<String>();
        jspSample.add("국어 : 100점");
        jspSample.add("수학 : 90점");
        jspSample.add("영어 : 75점");
 
        mav.addObject("list", jspSample);
        return mav;
    }
cs

View 페이지를 jsp로 만들어야 화면에 표현이 되겠죠? 

아래와 같은 경로에 간단한 jsp 파일(jspSample.jsp)을 생성합니다. 

혹시 파일 생성을 어떻게 하는지 모르실까봐 아래의 설명을 덧붙입니다. 

이제 해당 jspSample.jsp 파일의 내용에 아래와 같이 코드를 작성해 봅시다. 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
 
<html>
<head>
<meta charset="UTF-8">
    <title>JSP Sample Page</title>
</head>
    <body>
 
       <div>[${name}]님의 시험성적입니다.</div>
 
        <c:forEach var="item" items="${list}">
         ${item} <br />
        </c:forEach>
 
    </body>
</html>
cs

저장을 완료 한 후, 서버를 재시작 하고 브라우저에서 http://localhost:8080/jspSample 를 호출하여

아래와 같은 화면이 나왔다면 스프링부트에 jsp 연동까지 완료 된 것 입니다. 

다음 포스팅에서는 Thymeleaf (타임리프)를 사용하여 View를 구성해 보도록 하겠습니다. 

 

(23/12/19 추가) 스프링부트, 탐캣, jstl 버전 변경에 따라 오류가 발생할 경우 아래의 링크를 확인해 처리해 주세요~

https://shallow-learning.tistory.com/entry/Error-javaxservletjsptagextTagLibraryValidator-%EC%98%A4%EB%A5%98%EB%A5%BC-%ED%95%B4%EA%B2%B0%ED%95%B4-%EB%B3%B4%EC%9E%90

반응형