Spring Boot 技术探索

Spring Boot makes it easy to create stand-alone, production-grade Spring based Applications that you can "just run".

12、Spring Boot中JSP的使用

平台环境:

名称

版本号

Mac OS X

10.14.5

JDK

1.8.0_201

Apache Maven

3.6.0

IntelliJ IDEA

2019.1 (Ultimate Edition)

Spring Boot

2.1.6.RELEASE

 

  Spring Boot官方推荐使用thymeleaf模板引擎来展示web信息,并且明确声明不推荐使用JSP,但是在市面上的大部分java web项目中还是使用的JSP技术。因此还是有必要研究一下在Spring Boot中如何使用JSP。

 

Demo:

1、新建项目,并引入依赖包。

<?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>
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.1.6.RELEASE</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>
    <groupId>com.example</groupId>
    <artifactId>demo</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>demo</name>
    <description>Demo project for Spring Boot</description>

    <properties>
        <java.version>1.8</java.version>
    </properties>

    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>jstl</artifactId>
        </dependency>
        <dependency>
            <groupId>org.apache.tomcat.embed</groupId>
            <artifactId>tomcat-embed-jasper</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>

dependency解释:

  • jstl 是一个 JSP 标签集合,它封装了 JSP 应用的通用核心功能。
  • tomcat-embed-jasper 主要用来支持 JSP 的解析和运行。

 

2、手工新建文件夹,增加支持JSP的目录结构:

 

welcome.jsp内容:

<!DOCTYPE html>
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<html lang="en">
<body>
    Time: ${time}
    <br />
    Message: ${message}
</body>
</html>

 

3、在application.properties配置文件中增加配置项

spring.mvc.view.prefix: /WEB-INF/jsp/
spring.mvc.view.suffix: .jsp
  • spring.mvc.view.prefix 指明 jsp 文件在 webapp 下的哪个目录
  • spring.mvc.view.suffix 指明 jsp 以什么样的后缀结尾

 

4、新建测试控制器

package com.example.demo.controller;


import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;

import java.util.Date;
import java.util.Map;

@Controller
public class WelcomeController
{
    @GetMapping("/")
    public String welcome(Map<String, Object> model)
    {
        model.put("time", new Date());
        model.put("message", "hello world");
        return "welcome";
    }
}

代码解释:

  • @GetMapping是一个组合注解,是@RequestMapping(method = RequestMethod.GET)的缩写
  • @PostMapping是一个组合注解,是@RequestMapping(method = RequestMethod.POST)的缩写

 

启动项目,测试

访问地址http://localhost:8080

显示:

Time: Tue Jul 16 13:50:30 CST 2019 
Message: hello world

 

如果报404,就通过命令启动。

mvn clean spring-boot:run

 


 

补充内容:

通过HttpServletRequest返回数据

  HttpServletRequest,用户获取客户端(例如:浏览器)请求的数据。并且可以把数据传递给JSP页面处理。传递的数据只会存在于Web容器内部,在具有转发关系的Web组件之间共享。

 

代码:

package com.example.demo.controller;


import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;

import javax.servlet.http.HttpServletRequest;
import java.util.Date;
import java.util.Map;

@Controller
public class WelcomeController
{
    @GetMapping("/welcome2")
    public String welcome(HttpServletRequest request)
    {
        request.setAttribute("time", new Date());
        request.setAttribute("message", "hello world2");
        return "welcome";
    }
}

request.setAttribute的数据可以在JSP页面中获取到。

 

访问地址:http://127.0.0.1:8080/welcome2

显示:

Time: Tue Jul 16 13:55:18 CST 2019 
Message: hello world2

 

 

 

Bootstrap Thumbnail Second
MySQL

MySQL is the world's most popular open source database.

GO

Bootstrap Thumbnail Third
算法基础

本书介绍了什么是计算机算法,如何描述它们,以及如何来评估它们。

GO