betacode

Руководство Spring Boot и JSP

  1. Цель статьи
  2. Создать проект Spring Boot
  3. Конфигурация pom.xml
  4. Конфигурация JSP View
  5. Controller & JSP
  6. Запуск приложения

1. Цель статьи

Spring является известным framework, так как поддерживает многие технологии для слоя View (View Layer). Технологии которые поддерживает Spring для слоя View являются JSP, Thymeleaf, Freemarker,...
Благодаря простоте Thymeleaf, он считается технологией по умолчанию, использующимся для слоя View, и автоматически конфигурируется с помощью Spring Boot. Поэтому если вы выбираете JSP для слоя View, вам нужно его конфигурировать.
В данной статье я покажу вам как создать веб приложение с Spring Boot, и использовать JSP для отображения данных. Содержания будут упомянуты в этой статье:
  • Конфигурация для использования JSP для слоя View (View Layer)
  • Объяснение принципа работы Controller & JSP.

2. Создать проект Spring Boot

На Eclipse создать проект Spring Boot.
Ввести:
  • Name: SpringBootJSP
  • Group: org.o7planning.org
  • Description: Spring Boot + JSP
  • Package: org.o7planning.sbjsp
Выбрать технологии и библиотеки для использования:
  • Web
OK, Project создан.
SpringBootJspApplication.java
package org.o7planning.sbjsp;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class SpringBootJspApplication {

    public static void main(String[] args) {
        SpringApplication.run(SpringBootJspApplication.class, args);
    }
}

3. Конфигурация pom.xml

Конфигурация необходимых библиотек для JSP/Servlet в файле pom.xml:
<dependency>
    <groupId>org.apache.tomcat.embed</groupId>
    <artifactId>tomcat-embed-jasper</artifactId>
</dependency>

<dependency>
    <groupId>javax.servlet</groupId>
    <artifactId>jstl</artifactId>
</dependency>
Полное содержание файла pom.xml:
pom.xml
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
        http://maven.apache.org/xsd/maven-4.0.0.xsd">
        
    <modelVersion>4.0.0</modelVersion>

    <groupId>org.o7planning</groupId>
    <artifactId>SpringBootJSP</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <packaging>jar</packaging>

    <name>SpringBootJSP</name>
    <description>Spring Boot + JSP</description>

    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.0.0.RELEASE</version>
        <relativePath /> <!-- lookup parent from repository -->
    </parent>

    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
        <java.version>1.8</java.version>
    </properties>

    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

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

        <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>jstl</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>

</project>

4. Конфигурация JSP View

В папке src/main создайте подпапку webapp/WEB-INF/jsp, ваши файлы JSP будут расположены в данной папке.
В следующем шаге вам нужно конфигурировать, чтобы сказать Spring Boot где вы расположите файлы JSP. OK, откройте файл application.properties и добавьте следующие свойства:
application.properties
# =============================================
# VIEW RESOLVER
# =============================================

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

5. Controller & JSP

Связь между Controller и View объяснена в изображении ниже:
Person.java
package org.o7planning.sbjsp.model;

public class Person {

    private String firstName;
    private String lastName;

    public Person() {

    }

    public Person(String firstName, String lastName) {
        this.firstName = firstName;
        this.lastName = lastName;
    }

    public String getFirstName() {
        return firstName;
    }

    public void setFirstName(String firstName) {
        this.firstName = firstName;
    }

    public String getLastName() {
        return lastName;
    }

    public void setLastName(String lastName) {
        this.lastName = lastName;
    }

}
MainController.java
package org.o7planning.sbjsp.controller;

import java.util.ArrayList;
import java.util.List;

import org.o7planning.sbjsp.model.Person;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;

@Controller
public class MainController {

    private static List<Person> persons = new ArrayList<Person>();

    static {
        persons.add(new Person("Bill", "Gates"));
        persons.add(new Person("Steve", "Jobs"));
    }

    @RequestMapping(value = { "/", "/index" }, method = RequestMethod.GET)
    public String index(Model model) {

        String message = "Hello Spring Boot + JSP";

        model.addAttribute("message", message);

        return "index";
    }

    @RequestMapping(value = { "/personList" }, method = RequestMethod.GET)
    public String viewPersonList(Model model) {

        model.addAttribute("persons", persons);

        return "personList";
    }

}
index.jsp
<!DOCTYPE HTML>
<html>
   <head>
      <meta charset="UTF-8" />
      <title>Welcome</title>
      <link rel="stylesheet" type="text/css"
                href="${pageContext.request.contextPath}/css/style.css"/>
   </head>
   <body>
      <h1>Welcome</h1>
      <h2>${message}</h2>
      
    
        
      <a href="${pageContext.request.contextPath}/personList">Person List</a>  
      
   </body>
  
</html>
personList.jsp
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>

<!DOCTYPE HTML>
<html>
  <head>
    <meta charset="UTF-8" />
    <title>Person List</title>
    <link rel="stylesheet" type="text/css" href="${pageContext.request.contextPath}/css/style.css"/>
  </head>
  <body>
    <h1>Person List</h1>
   
    <br/><br/>
    <div>
      <table border="1">
        <tr>
          <th>First Name</th>
          <th>Last Name</th>
        </tr>
        <c:forEach  items="${persons}" var ="person">
        <tr>
          <td>${person.firstName}</td>
          <td>${person.lastName}</td>
        </tr>
        </c:forEach>
      </table>
    </div>
  </body>
 
</html>

6. Запуск приложения

На Eclipse нажмите на правую кнопку мыши на project, выберите:
  • Run As/Spring Boot App

Руководства Spring Boot

Show More