SpringBoot(四)—— JSP集成及模板引擎

JSP集成

一般来说SpringBoot不建议直接使用JSP页面,但不排除在实际工作中碰到需要使用的场景,那么SpringBoot如何集成JSP呢?因为SpringBoot内置的Tomcat并没有集成对JSP的支持,也没有对EL表达式的支持,因此要使用JSP应该先把相关的依赖集成进来。

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

除了引入上述必要的依赖外,我们还需要配置视图解析图,有关视图解析器在SpringMVC中也进行了相关介绍,如下:
在这里插入图片描述


在SpringBoot中,我们只需要application.properties文件中进行相关配置即可

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

那么要是要求项目中支持多种视图解析器该如何进行设置呢?如需要支持html和jsp,之前我们在学习SpringMVC时,介绍的方式是在xml中进行配置的,如下:
在这里插入图片描述
在这里插入图片描述

那么我们在SpringBoot应该如何配置呢?我们可以不用web配置,其实和我们之前SpringMVC介绍不采用xml配置,采用注解的方法一致,之前的在SpringMVC采用注解配置方法如下:
在这里插入图片描述


接下来来看看SpringBoot中,如何设置多个视图截图器,可以看到其中添加了一个检查器,其实就和我们在xml中配置上一模一样
在这里插入图片描述

public class HandleResourceViewExists extends InternalResourceView {

    @Override
    public boolean checkResource(Locale locale) {
        File file = new File(this.getServletContext().getRealPath("/") + getUrl());
        return file.exists(); //判断页面是否存在
    }
}

然后我们只需要建立相应的路径文件就可以进行访问了
在这里插入图片描述

注意: 如果按照上述的设置,我们在进行测试时,如果首先未找到html文件,然后去访问了jsp文件,那没有问题,但是如果直接找到了html文件,进行访问,那就会报错,为什么呢?因为html属于静态资源呀,所以我们还需要进行相关的配置,以允许静态资源的访问
在这里插入图片描述




模板引擎

上述我们说到SpringBoot是不推荐使用JSP的,没错它更推荐我们使用模板引擎来渲染html,其中SpringBoot强烈推荐的是用thymeleaf,在SpringBoot中使用thymeleaf非常的简单,首先引入依赖

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

然后我们需要按照规范在resources文件下建立一个templates文件夹,如下:
在这里插入图片描述

其中index.html内容如下:

<!DOCTYPE html>
<html xmlns:th="http://www.w3.org/1999/xhtml">
<head lang="en">
    <meta charset="UTF-8"/>
</head>
<body>
<h1 th:text="${value}"/>
</body>
</html>

然后我们在Controller中创建一个访问请求即可,记得我们需要把上述配置的视图解析器给注释掉再进行测试哦

@Controller
//@RestController
public class DemoController {

    @RequestMapping("/index")
    public String testThymeleaf(ModelMap map) {
        map.addAttribute("value", "Hello World");
        return "index";
    }
}

在这里插入图片描述

发布了286 篇原创文章 · 获赞 12 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/newbie0107/article/details/105280149