soowanlog

JSP 본문

백엔드/Java

JSP

개발자솬
백엔드/Java

JSP

개발자솬 2024. 4. 2. 11:04
728x90
반응형
  • JSP란?

JavaServer Pages의 약자로 Java를 기반으로 하는 동적 웹 페이지를 생성하기 위한 Java 웹 개발 기술 중 하나입니다.

 

JSP는 HTML 내부에 Java 코드가 있기 때문에 코드를 읽고 쓰기에 편리합니다.

  • JSP의 동작방식

먼저 Client가 URI를 통해 요청을 보내면 JSP Container로 전송합니다.

 

JSP Container는 .jsp 파일을 Java Servlet 파일로 변환합니다.

 

Servlet 파일은 일반적인 Java 파일처럼 동작하며 서버에서 실행됩니다.

 

Servlet은 .jsp 파일에 포함된 Java 코드를 실행하여 작업을 수행한 뒤 생성된 결과를 HTML 문서에 삽입합니다.

 

최종적으로 Servlet은 HTML 문서로 완성된 결과물을 Client에게 반환합니다.

  • Spring boot의 JSP 설정

- dependencies 추가 :

Spring boot 프로젝트의 build.grable 파일에 JSP에 대한 의존성을 추가합니다.

dependencies {
  implementation 'org.springframework.boot:spring-boot-starter-web'
  implementation 'org.apache.tomcat.embed:tomcat-embed-jasper'
}

 

- JSP 지원 설정 :

Spring boot에서는 기본적으로 JSP를 지원하지 않기 때문에 'application.properties' 또는 'application.yml' 파일을 통해 설정해주어야 합니다.

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

// application.yml
spring:
  mvc:
    view:
      prefix=/WEB-INF/jsp/
      suffix=.jsp

 

prefix의 WEB-INF의 하위 디렉토리명(예시에서는 jsp)은 원하는 데로 설정하면 됩니다.

 

- JSP 파일 추가 :

설정한 prefix에 맞춰 'src/main/webapp/WEB-INF/jsp/' 디렉토리를 추가합니다.

해당 디렉토리에 .jsp파일을 추가합니다.

  • 예제

위와 같은 설정을 맞췄다고 가정하고 간단한 예제를 보여드리겠습니다.

@Controller
@RequestMapping("exam")
public class MyController {

  @RequestMapping("test1")
  public void method1(Model model) {
    
    model.addAttribute("fruits", List.of("apple", "banana"));
  }
}

 

해당 controller는 Model객체를 통해 'src/main/webapp/WEB-INF/jsp/exam/test1.jsp'에 'fruits'라는 key를 갖고 있는 정보를 전달합니다.

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
  <title>Example</title>
</head>
<body>
<h1>${fruits[0]}</h1>
<p>${fruits[1]}</p>
</body>
</html>

 

해당 정보는 test1.jsp내에서 위와 같이 사용할 수 있습니다.

하지만 method1()메서드의 반환 값이 없기 때문에 실제로 Client가 해당 경로로 요청하더라도 View를 응답받을 순 없습니다.

@Controller
@RequestMapping("exam")
public class MyController {

  @RequestMapping("test1")
  public String method1(Model model) {
    
    model.addAttribute("fruits", List.of("apple", "banana"));
    return "test1";
  }
}

 

최종적으로 String을 반환함으로써 원하는 View를 Client에게 전달할 수 있습니다.

 

즉, 반환 값이 없는 메서드를 통해 특정 로직을 수행하고 그 결과를 .jsp에 전달하여 가공한 뒤 String을 반환하는 메서드를 통해 Client에게 응답할 수 있습니다.

참    고    자    료

- JSP란 무엇인가 | joy-baek

728x90
반응형

'백엔드 > Java' 카테고리의 다른 글

Servlet  (2) 2024.04.01
JVM  (0) 2024.03.08
Garbage Collector  (0) 2024.03.07
Java 버전 별 특징  (2) 2024.03.07
Java  (0) 2024.03.07