STACKJAVA

Code ví dụ hiển thị file jsp với spring boot

Code ví dụ hiển thị file jsp với spring boot

(Xem thêm: so sánh JSP với Thymeleaf)

Spring Boot hỗ trợ auto-configuration cho các template engines:

Khi bạn sử dụng một trong các template engines trên với cấu hình mặc định, các template của bạn sẽ mặc định được lấy từ src/main/resources/templates.

Việc sử dụng JSP nên tranh nếu có thể, bởi việc sử dụng JSP trong Spring Boot sẽ gặp một số hạn chế khi sử dụng chúng với embedded servlet containers (JSPs known limitations)

Trong bài này mình sẽ làm ví dụ hiển thị view với JSP cho những trường hợp bắt buộc dùng, hoặc muốn hiển template JSP giống như vẫn làm với Spring MVC

Spring Boot JSP

Các công nghệ sử dụng:

Tạo Spring Boot Project:

Ở đây mình không sử dụng template engine nào cả, chỉ chọn tự động cấu hình cho phần web.

Kết quả:

Thêm thư viện sau để compile file .jsp

<!-- JSTL -->
    <dependency>
        <groupId>javax.servlet</groupId>
        <artifactId>jstl</artifactId>
    </dependency>
    <!-- To compile JSP files -->
    <dependency>
        <groupId>org.apache.tomcat.embed</groupId>
        <artifactId>tomcat-embed-jasper</artifactId>
        <scope>provided</scope>
    </dependency>

Tạo thư mục webapp/WEB-INF/views/jsp bên trong folder src/main để chứa các file jsp sẽ được dùng để hiển thị:

 

Cấu hình prefix và suffix của các view tương ứng folder đã tạo bên trên

package stackjava.com.springbootjsp.config;

import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.ViewResolverRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
import org.springframework.web.servlet.view.InternalResourceViewResolver;
import org.springframework.web.servlet.view.JstlView;

@Configuration
public class MvcConfig implements WebMvcConfigurer {

  @Override
  public void configureViewResolvers(final ViewResolverRegistry registry) {
    InternalResourceViewResolver resolver = new InternalResourceViewResolver();
    resolver.setPrefix("/WEB-INF/views/jsp/");
    resolver.setSuffix(".jsp");
    resolver.setViewClass(JstlView.class);
    registry.viewResolver(resolver);
  }
}

File Controller:

package stackjava.com.springbootjsp.controller;

import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;

@Controller
public class BaseController {

   @Value("${message.hello}")
  private String message;
  
  @RequestMapping("/")
  public String index(final Model model) {
    model.addAttribute("message", message);
    return "index";
  }
}

File application.properties:

message.hello=Demo Spring Boot JSP!

File view:

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<html>
<head>
<title>Spring Boot JSP</title>
</head>
<body>
  <h1>${message}</h1>
</body>
</html>

Kết quả:

Code ví dụ hiển thị file jsp với spring boot

Okay, Done!
Download code ví dụ trên tại đây.

 

References:

https://docs.spring.io/spring-boot/docs/current/reference/html/boot-features-developing-web-applications.html