JSP 연동

JSP 연동

Controller에서 프로그래밍 로직을 수행한 뒤 JSP 화면으로 포워드(forward) 되도록 설정할 수 있다. Spring Legacy에서는 JSP가 표준이므로 기본 설정되어 있으나 Spring Boot는 View 초기 설정이 존재하지 않는다.

Spring Boot에서는 여러 종류의 View 설정이 가능하며, 이 문서에서는 JSP 설정 방법을 살펴본다.

의존성 추가

JSP를 사용하기 위해서는 다음 의존성이 필요하다.

  • javax.servlet.jstl

  • org.apache.tomcat.embed.tomcat-embed-jasper

pom.xml<dependencies>에 다음과 같이 추가한다.

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

JSP 생성

Spring Boot에서는 WEB-INF, META-INF 등의 기존 폴더들을 초기 생성하지 않는다. 따라서 필요한 경우 수동으로 생성해야 한다. JSP의 경우 사용자의 직접 접근을 차단하고 컨트롤러와 연결된 경우만 접근이 가능하도록 WEB-INF 폴더 내부에 보관하는 것이 일반적이다.

Spring Legacy의 기본 JSP 경로와 동일한 위치에 JSP를 보관할 수 있는 폴더를 생성한다.

생성 메뉴에서 JSP가 보이지 않는다면 다음 문서를 참고하여 플러그인 설치를 해야한다.

page* JSP 생성불가 문제

생성한 폴더에 연결될 JSP 파일을 생성한다(welcome.jsp)

컨트롤러 매핑 작성

컨트롤러에 다음 코드를 추가한다.

HomeController.java
@RequestMapping("/welcome")
public String welcome(){
    return "/WEB-INF/views/welcome.jsp";
}

@ResponseBody를 사용하지 않으면 반환되는 값이 View의 경로로 처리된다. 따라서 welcome 메소드 실행 후 welcome.jsp로 이어진다. 이를 포워드(Forward)라고 한다. 내부적으로는 DispatcherServlet에서 처리해주며 구조는 다음과 같다.

접속 확인

Spring Boot App이 실행중인지 확인하고 브라우저에서 다음 주소에 접속한다.

설정이 잘 되었다면 위와 같이 연결된 JSP 화면이 나오며, 오타 등 코드에 문제가 발생한 경우 다음과 같이 404 Error 화면이 나온다.

View Resolver 설정

JSP를 /WEB-INF/views 폴더에 계속 생성할 예정이므로 앞으로 생성될 컨트롤러의 반환 주소는 반드시 /WEB-INF/views/???.jsp 형태가 된다. 반복적이고 비효율적인 작업을 피하기 위해 앞부분의 접두사 /WEB-INF/views/와 뒷부분의 접미사 .jsp를 자동 입력되도록 설정할 수 있다.

설정하는 방법은 여러 가지가 있으며, application.properties에 설정하는 방법으로 진행한다.

application.properties
#view resolver
spring.mvc.view.prefix=/WEB-INF/views/
spring.mvc.view.suffix=.jsp

/ 혹은 . 등을 누락하면 오류가 발생하므로 정확하게 작성해야 한다.

위와 같이 설정을 하고 나면 Controller에서 반환하는 주소에 자동으로 접두사(prefix)와 접미사(suffix)가 추가되므로 주소를 변경해야 한다.

HomeController.java
@RequestMapping("/welcome")
public String welcome() {
	return "welcome";
}

View Resolver를 사용하면 주소의 공용 부분을 효율적으로 처리할 수 있다.

Last updated