欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

SpringBoot 系列教程(五十七):SpringBoot跳转static目录下静态html页面

程序员文章站 2022-05-17 09:28:46
...

源码:https://github.com/Thinkingcao/SpringBootLearning/tree/master/springboot-html

前言

在src/main/resources下面有两个文件夹,static和templates,springboot默认static中放静态页面和静态资源文件,而templates中放动态页面,动态页面访问的话需要Thymeleaf的依赖动态页面需要从后台Controller跳转,静态页面直接类似于:http://127.0.0.1:8080/index.html 访问就可以了;如果static下的无法访问,首先你要保证了你这几个文件访问,不会被拦截器干掉

使用开发工具IDEA或者Eclipse创建SpringBoot项目的时候,Src目录下会自动有static和templates的文件夹的,这是SpringBoot框架约定俗成;

接下来我们创建如图所示的SpringBoot项目测试一下

SpringBoot 系列教程(五十七):SpringBoot跳转static目录下静态html页面

一、创建SpringBoot项目

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 https://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.2.1.RELEASE</version>
		<relativePath /> <!-- lookup parent from repository -->
	</parent>
	<groupId>com.example</groupId>
	<artifactId>springboot-html</artifactId>
	<version>0.0.1-SNAPSHOT</version>
	<name>springboot-html</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>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-thymeleaf</artifactId>
		</dependency>

		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-test</artifactId>
			<scope>test</scope>
			<exclusions>
				<exclusion>
					<groupId>org.junit.vintage</groupId>
					<artifactId>junit-vintage-engine</artifactId>
				</exclusion>
			</exclusions>
		</dependency>
	</dependencies>

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

</project>

2、application.yml配置

#HTML页面配置
spring:
  thymeleaf:
    prefix: classpath:/templates/
    suffix: .html

3、创建index.html页面和login.html页面

 index.html放到static目录下:

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>首页</title>
</head>
<body>
 <h2><p> 我是SpringBoot-Static目录下的页面</p></h2>
</body>
</html>

login.html放到templates目录下:

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>登录页面</title>
</head>
<body>
<h2><p> 我是SpringBoot-templates目录下的页面</p></h2>
</body>
</html>

4、创建LoginController访问templates下的login.html页面

因为login.html是存放在templates目录下面的,是一个动态页面,需要和后台的数据交互,所以需要从后端Controller控制器跳转

package com.example.demo.controller;

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

/**
 * <pre>
 * @Desc 
 * @author cao_wencao
 * @date 2019年11月13日 下午6:02:22
 * @version V1.0
 * </pre>
 */
@Controller
public class LoginController {

	
	@RequestMapping("/login")
	public String index() {
		return "login";
	}
}

启动项目,访问:http://127.0.0.1:8080/login    可以正常访问

SpringBoot 系列教程(五十七):SpringBoot跳转static目录下静态html页面

5. 关于static目录下的页面如何访问

 5.1、在思考页面存放在static目录下如何访问之前,我们先丢一张图片到static下面

  SpringBoot 系列教程(五十七):SpringBoot跳转static目录下静态html页面

 访问: http://127.0.0.1:8080/spring.png , 结果正常访问

SpringBoot 系列教程(五十七):SpringBoot跳转static目录下静态html页面

上面通过从controller跳转到templates目录下面的login.html ,是OK的,访问static目录下的静态资源图片也是OK的,那么如果有的静态Html页面是放在static静态资源目录下面的,我们该如何访问呢? 是否和正常的静态资源访问一样的,接下来我们测试下

 5.2、static目录下的页面访问形式

如果真的想跳转到static中的index.html,可以在Controllerreturn "redirect:index.html",但不建议这么做。 
return 的字符串是view的名称,会根据你配置的模板位置来查找,spring boot 默认的模板存放在 /resource/templates下,不会到 static 目录下去寻找。redirect其实就是重定向到外部资源

 方式一:直接当做静态资源目录访问,类似于访问图片一样

 访问: http://127.0.0.1:8080/index.html

 SpringBoot 系列教程(五十七):SpringBoot跳转static目录下静态html页面

方式二:可以从Controller跳转,上面开头说了,从Controller是重定向

 创建IndexController类,用于重定向到Index.html页面

package com.example.demo.controller;

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

/**
 * <pre>
 * @Desc 
 * @author cao_wencao
 * @date 2019年11月13日 下午6:02:07
 * @version V1.0
 * </pre>
 */
@Controller
public class IndexController {

	@RequestMapping("/thinkingcao")
	public String index() {
		return "redirect:index.html";
	}
}

 访问:http://127.0.0.1:8080/index   (这个是从Controller跳转的)

  SpringBoot 系列教程(五十七):SpringBoot跳转static目录下静态html页面

 

二、总结

 SpringBoot项目中static目录和templates目录,默认static中放静态资源文件,例如:img、js、css、font等等,如果静态html页面放在static下,一是可以直接当做静态资源访问;另外如果有一种情况,如果页面是放在static下面的,同时也需要从controller来跳转,那么可以采用重定向的方式,因为spring boot 默认的模板存放在 /resource/templates下,不会到 static 目录下去寻找。redirect其实就是重定向到外部资源;其实动态页面放在templates下,大家也都知道,需要从Controller来跳转访问,这些都是SpringBoot约定成俗的一些配置;

源码:https://github.com/Thinkingcao/SpringBootLearning/tree/master/springboot-html