SpringBoot项目中视图解析器存在哪两种常见问题?

2026-05-26 04:531阅读0评论SEO资讯
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计1212个文字,预计阅读时间需要5分钟。

SpringBoot项目中视图解析器存在哪两种常见问题?

前言:SpringBoot官方推荐使用HTML视图解析器,但根据个人的具体业务需求,也可能需要使用到JSP视图解析器。因此,这里简单介绍一下这两种视图解析器的具体使用。

一、解析成JSP页面

1. HTML视图解析器:主要适用于简单的页面展示,可以直接将HTML内容渲染到页面上。

2. JSP视图解析器:适用于复杂页面,可以结合JSP标签和Java代码进行动态页面渲染。

具体使用步骤如下:

1. 在SpringBoot项目中,添加依赖:

xml org.springframework.boot spring-boot-starter-thymeleaf

2. 配置视图解析器:

java@Configurationpublic class WebConfig implements WebMvcConfigurer {

@Bean public ViewResolver viewResolver() { InternalResourceViewResolver resolver=new InternalResourceViewResolver(); resolver.setPrefix(/WEB-INF/views/); resolver.setSuffix(.jsp); return resolver; }}

3. 创建JSP页面,放在`src/main/resources/WEB-INF/views/`目录下。

4. 在Controller中返回视图:

SpringBoot项目中视图解析器存在哪两种常见问题?

java@Controllerpublic class TestController {

@GetMapping(/test) public String test() { return test; }}

5. 访问`/test`路径,即可看到解析后的JSP页面。

二、解析成HTML页面

1. HTML视图解析器:主要适用于简单的页面展示,可以直接将HTML内容渲染到页面上。

2. Thymeleaf视图解析器:适用于复杂页面,可以结合Thymeleaf标签和Java代码进行动态页面渲染。

具体使用步骤如下:

1. 在SpringBoot项目中,添加依赖:

xml org.springframework.boot spring-boot-starter-thymeleaf

2. 配置视图解析器:

java@Configurationpublic class WebConfig implements WebMvcConfigurer {

@Bean public ViewResolver viewResolver() { ThymeleafViewResolver resolver=new ThymeleafViewResolver(); resolver.setTemplateEngine(templateEngine()); resolver.setPrefix(/WEB-INF/templates/); resolver.setSuffix(.); return resolver; }

@Bean public TemplateEngine templateEngine() { SpringTemplateEngine engine=new SpringTemplateEngine(); engine.setTemplateResolver(templateResolver()); return engine; }

@Bean public ITemplateResolver templateResolver() { ServletContextTemplateResolver resolver=new ServletContextTemplateResolver(); resolver.setPrefix(/WEB-INF/templates/); resolver.setSuffix(.); resolver.setTemplateMode(HTML); resolver.setCacheable(true); return resolver; }}

3. 创建HTML页面,放在`src/main/resources/WEB-INF/templates/`目录下。

4. 在Controller中返回视图:

java@Controllerpublic class TestController {

@GetMapping(/test) public String test() { return test; }}

5. 访问`/test`路径,即可看到解析后的HTML页面。

前言:SpringBoot官网推荐使用HTML视图解析器,但是根据个人的具体业务也有可能使用到JSP视图解析器,所以这里我给大家简单介绍一下这两种视图解析器的具体使用

一、解析成JSP页面

1.在pom.xml文件中添加相关依赖

<dependency> <groupId>javax.servlet</groupId> <artifactId>javax.servlet-api</artifactId> </dependency> <dependency> <groupId>javax.servlet</groupId> <artifactId>jstl</artifactId> </dependency> <!-- tomcat的支持--> <dependency> <groupId>org.apache.tomcat.embed</groupId> <artifactId>tomcat-embed-jasper</artifactId> </dependency>

2.在application.properties配置文件中配置前缀与后缀

spring.mvc.view.prefix=/jsp/ spring.mvc.view.suffix=.jsp

注:如果是使用官网的SpringBoot项目,这里可能出现一个小问题,如果不借助任何模板引擎( thymeleaf )的话,JSP页面放在resources目录下(包括缺省的几个子目录)是访问不到的!,那么这时候就得自己配置一个目录去存放JSP页面

解决方案:

(1)可以在resources目录下新建一个 META-INF 目录,然后在 META-INF 目录下创建一个resources目录,然后把需要的jsp页面放在这个目录下面,接着在application.properties 配置文件中配置一下访问路径,就可以访问到jsp文件了:



(2)在 resources 目录同级别的目录下面创建 webapp 目录,然后把需要的jsp页面放在webapp目录下面,也是可以访问的:



(3)经过测试发现,如果以上两个目录都存在,优先访问的是与resources目录同级别的webapp目录下的jsp页面:



(4)使用模板引擎 thymeleaf 来测试一下直接放在 resources 目录下的templates 目录下的jsp页面:

1)在pom.xml中配置模板引擎thymeleaf 依赖

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

2)在 application.properties 文件中配置 thymeleaf 相关属性值,最后在 templates 目录下创建 jsp文件就可以了:



二、解析成HTML页面

1.在pom.xml中引入模板引擎 thymeleaf依赖

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

2.在 application.properties 文件中配置 thymeleaf 相关属性值,最后在 templates 目录下创建html文件就可以了:



三、总结

当JSP视图解析器与模板引擎thymeleaf共存的时候,SpringBoot会默认解析模板引擎thymeleaf的配置。在模板引擎thymeleaf的配置中,如果都不配置的话,会默认解析templates目录下的HTML文件,即默认前缀为"/templates/",默认后缀为".html",最后强调一点,在SpringBoot中,根据官网推荐,我们最好使用模板引擎和HTML页面来编写代码!

到此这篇关于SpringBoot项目中的视图解析器问题(两种)的文章就介绍到这了,更多相关SpringBoot 视图解析器内容请搜索易盾网络以前的文章或继续浏览下面的相关文章希望大家以后多多支持易盾网络!

本文共计1212个文字,预计阅读时间需要5分钟。

SpringBoot项目中视图解析器存在哪两种常见问题?

前言:SpringBoot官方推荐使用HTML视图解析器,但根据个人的具体业务需求,也可能需要使用到JSP视图解析器。因此,这里简单介绍一下这两种视图解析器的具体使用。

一、解析成JSP页面

1. HTML视图解析器:主要适用于简单的页面展示,可以直接将HTML内容渲染到页面上。

2. JSP视图解析器:适用于复杂页面,可以结合JSP标签和Java代码进行动态页面渲染。

具体使用步骤如下:

1. 在SpringBoot项目中,添加依赖:

xml org.springframework.boot spring-boot-starter-thymeleaf

2. 配置视图解析器:

java@Configurationpublic class WebConfig implements WebMvcConfigurer {

@Bean public ViewResolver viewResolver() { InternalResourceViewResolver resolver=new InternalResourceViewResolver(); resolver.setPrefix(/WEB-INF/views/); resolver.setSuffix(.jsp); return resolver; }}

3. 创建JSP页面,放在`src/main/resources/WEB-INF/views/`目录下。

4. 在Controller中返回视图:

SpringBoot项目中视图解析器存在哪两种常见问题?

java@Controllerpublic class TestController {

@GetMapping(/test) public String test() { return test; }}

5. 访问`/test`路径,即可看到解析后的JSP页面。

二、解析成HTML页面

1. HTML视图解析器:主要适用于简单的页面展示,可以直接将HTML内容渲染到页面上。

2. Thymeleaf视图解析器:适用于复杂页面,可以结合Thymeleaf标签和Java代码进行动态页面渲染。

具体使用步骤如下:

1. 在SpringBoot项目中,添加依赖:

xml org.springframework.boot spring-boot-starter-thymeleaf

2. 配置视图解析器:

java@Configurationpublic class WebConfig implements WebMvcConfigurer {

@Bean public ViewResolver viewResolver() { ThymeleafViewResolver resolver=new ThymeleafViewResolver(); resolver.setTemplateEngine(templateEngine()); resolver.setPrefix(/WEB-INF/templates/); resolver.setSuffix(.); return resolver; }

@Bean public TemplateEngine templateEngine() { SpringTemplateEngine engine=new SpringTemplateEngine(); engine.setTemplateResolver(templateResolver()); return engine; }

@Bean public ITemplateResolver templateResolver() { ServletContextTemplateResolver resolver=new ServletContextTemplateResolver(); resolver.setPrefix(/WEB-INF/templates/); resolver.setSuffix(.); resolver.setTemplateMode(HTML); resolver.setCacheable(true); return resolver; }}

3. 创建HTML页面,放在`src/main/resources/WEB-INF/templates/`目录下。

4. 在Controller中返回视图:

java@Controllerpublic class TestController {

@GetMapping(/test) public String test() { return test; }}

5. 访问`/test`路径,即可看到解析后的HTML页面。

前言:SpringBoot官网推荐使用HTML视图解析器,但是根据个人的具体业务也有可能使用到JSP视图解析器,所以这里我给大家简单介绍一下这两种视图解析器的具体使用

一、解析成JSP页面

1.在pom.xml文件中添加相关依赖

<dependency> <groupId>javax.servlet</groupId> <artifactId>javax.servlet-api</artifactId> </dependency> <dependency> <groupId>javax.servlet</groupId> <artifactId>jstl</artifactId> </dependency> <!-- tomcat的支持--> <dependency> <groupId>org.apache.tomcat.embed</groupId> <artifactId>tomcat-embed-jasper</artifactId> </dependency>

2.在application.properties配置文件中配置前缀与后缀

spring.mvc.view.prefix=/jsp/ spring.mvc.view.suffix=.jsp

注:如果是使用官网的SpringBoot项目,这里可能出现一个小问题,如果不借助任何模板引擎( thymeleaf )的话,JSP页面放在resources目录下(包括缺省的几个子目录)是访问不到的!,那么这时候就得自己配置一个目录去存放JSP页面

解决方案:

(1)可以在resources目录下新建一个 META-INF 目录,然后在 META-INF 目录下创建一个resources目录,然后把需要的jsp页面放在这个目录下面,接着在application.properties 配置文件中配置一下访问路径,就可以访问到jsp文件了:



(2)在 resources 目录同级别的目录下面创建 webapp 目录,然后把需要的jsp页面放在webapp目录下面,也是可以访问的:



(3)经过测试发现,如果以上两个目录都存在,优先访问的是与resources目录同级别的webapp目录下的jsp页面:



(4)使用模板引擎 thymeleaf 来测试一下直接放在 resources 目录下的templates 目录下的jsp页面:

1)在pom.xml中配置模板引擎thymeleaf 依赖

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

2)在 application.properties 文件中配置 thymeleaf 相关属性值,最后在 templates 目录下创建 jsp文件就可以了:



二、解析成HTML页面

1.在pom.xml中引入模板引擎 thymeleaf依赖

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

2.在 application.properties 文件中配置 thymeleaf 相关属性值,最后在 templates 目录下创建html文件就可以了:



三、总结

当JSP视图解析器与模板引擎thymeleaf共存的时候,SpringBoot会默认解析模板引擎thymeleaf的配置。在模板引擎thymeleaf的配置中,如果都不配置的话,会默认解析templates目录下的HTML文件,即默认前缀为"/templates/",默认后缀为".html",最后强调一点,在SpringBoot中,根据官网推荐,我们最好使用模板引擎和HTML页面来编写代码!

到此这篇关于SpringBoot项目中的视图解析器问题(两种)的文章就介绍到这了,更多相关SpringBoot 视图解析器内容请搜索易盾网络以前的文章或继续浏览下面的相关文章希望大家以后多多支持易盾网络!