全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

SpringBoot加载静态资源的方式

在SpringBoot中加载静态资源和在普通的web应用中不太一样。默认情况下,spring Boot从classpath下一个叫/static(/public,/resources或/META-INF/resources)的文件夹或从ServletContext根目录提供静态内容。下面我们来写个例子看一下就会一目了然了:首先看一下项目的目录结构:

我们在resources下面的templates目录下建一个home.html的文件,完整目录为:src/main/resources/templates/home.html。内容如下:

<!DOCTYPE HTML> 
<html xmlns:th="http://www.thymeleaf.org"> 
<head> 
  <meta charset="utf-8"/> 
  <title>ConanZhang的首页</title> 
</head> 
<body> 
我是首页: 
<!--<image th:src="@{/image/267862-1212151Z12099.jpg}"/> --> 
</body> 
</html> 

如果我们想要访问home.html应该怎么做呢?我们先来看第一种方式:

1、我们在web.controller这个包下面建一个Controller类:ThymeleafTestController.代码内容如下:

package com.zkn.learnspringboot.web.controller; 
 
import org.springframework.stereotype.Controller; 
import org.springframework.web.bind.annotation.RequestMapping; 
 
/** 
 * Created by wb-zhangkenan on 2016/11/30. 
 */ 
@Controller 
@RequestMapping("thymeleaf") 
public class ThymeleafTestController { 
 
  @RequestMapping("home") 
  public String getHome(){ 
 
    return "home"; 
  } 
} 

写到这里你一定非常眼熟,这不就是SpringMVC的写法吗?没错就是SpringMVC的写法:下面我们来访问一下:http://localhost:8003/thymeleaf/home。结果如图所示:

因为SpringBoot集成了Thymeleaf,所以它会默认查找resources下面的templates这个目录下的文件。templates这个目录的名字不要写错了。接着我又有了这样的需求,假设我想在我的home.html中引入一些其他的静态资源文件,比如我想在home.html中引入一张图片:那我们应该怎么做呢?

首先,我们需要在resources下面建一个static或者public的目录,你不建立目录也行,直接放到resources下面,接着我们再建立一个image的目录,最终的目录结构如图所示:

我们在image这个目录下放入一张图片,然后我们在home.html中引入一下这张图片,最终的代码如下:

<!DOCTYPE HTML> 
<html xmlns:th="http://www.thymeleaf.org"> 
<head>WebMvcConfigurerAdapter 
  <meta charset="utf-8"/> 
  <title>ConanZhang的首页</title> 
</head> 
  <body> 
我是首页: 
  <image th:src="@{/image/267862-1212151Z12099.jpg}" width="100px" height="50px" /> 
  </body> 
</html> 

看到上面的写法你可能会有些奇怪,th:src和@{}这都是什么鬼。其实这是Thymeleaf的语法。@{}是引入外部资源用的。下面我们再来访问一下,结果如下图所示:

这样我们就访问到了image目录下的图片了。

可能会有人说难道我只能放到static、public或者直接放到resources下面吗?我换个目录就不行了吗?那当然不是这样的,下面我们来换另外一种写法:

在我现在的这个项目中前台是用React-redux写的,后台SpringBoot只是用来提供接口的,我只需要一个首页来把编译后的react-redux引入到项目中就可以了,如果我想直接访问这个首页那我应该怎么做呢?SpringMVC为我们提供了这样的一个类:WebMvcConfigurerAdapter。我们就是借助于这个类来实现我们需要的功能的。我们写一个类来继承这个类,代码如下:

package com.zkn.learnspringboot.config; 
 
import org.springframework.context.annotation.Configuration; 
import org.springframework.util.ResourceUtils; 
import org.springframework.web.servlet.config.annotation.EnableWebMvc; 
import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry; 
import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter; 
 
/** 
 * Created by wb-zhangkenan on 2016/11/30. 
 */ 
@EnableWebMvc 
@Configuration 
public class WebConfig extends WebMvcConfigurerAdapter { 
 
  @Override 
  public void addResourceHandlers(ResourceHandlerRegistry registry) { 
 
    registry.addResourceHandler("/templates/**").addResourceLocations(ResourceUtils.CLASSPATH_URL_PREFIX+"/templates/",ResourceUtils.CLASSPATH_URL_PREFIX+"/image/"); 
    super.addResourceHandlers(registry); 
  } 
   
} 

我们重写了addResourceHandlers这个方法来重新注册了一个资源处理器。接着我们在来访问一下看看:http://localhost:8003/templates/home.html。结果如下图所示:

注意了这里我们是直接访问的home.html这个文件。和我们预期的效果是一样的。接着可能会有人说:如果我也想在home.html中引入静态资源要怎么办呢?比如说上面的那个例子,我要引入一个一张图片。也简单,那我们就再注册一个资源处理器就OK了。Java代码如下:

package com.zkn.learnspringboot.config; 
 
import org.springframework.context.annotation.Configuration; 
import org.springframework.util.ResourceUtils; 
import org.springframework.web.servlet.config.annotation.EnableWebMvc; 
import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry; 
import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter; 
 
/** 
 * Created by wb-zhangkenan on 2016/11/30. 
 */ 
@EnableWebMvc 
@Configuration 
public class WebConfig extends WebMvcConfigurerAdapter { 
 
  @Override 
  public void addResourceHandlers(ResourceHandlerRegistry registry) { 
 
    registry.addResourceHandler("/templates/**").addResourceLocations(ResourceUtils.CLASSPATH_URL_PREFIX+"/templates/"); 
    registry.addResourceHandler("/static/**").addResourceLocations(ResourceUtils.CLASSPATH_URL_PREFIX+"/static/"); 
    super.addResourceHandlers(registry); 
  } 
 
} 

home.html中的内容如下所示:

<!DOCTYPE HTML> 
<html xmlns:th="http://www.thymeleaf.org"> 
<head> 
  <meta charset="utf-8"/> 
  <title>ConanZhang的首页</title> 
</head> 
  <body> 
我是首页: 
  <image src="/static/image/267862-1212151Z12099.jpg" width="100px" height="50px" /> 
  </body> 
</html> 

接着我们再访问以下看看什么效果:http://localhost:8003/templates/home.html

和之前的效果是一模一样的吧?

前几天在网上找了一个SpringBoot的中文开发指南,有需要的请点击这里下载吧。

这篇文章的完整版代码,github地址如下:https://github.com/zhangconan/LearnSpringBoot

项目下载地址:LearnSpringBoot_jb51.rar

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。


# spring  # boot  # 静态资源  # springboot中静态资源  # spring加载静态资源  # spring boot 本地图片不能加载(图片路径)的问题及解决方法  # 在SpringBoot中静态资源访问方法  # Springboot如何加载静态图片  # 首页  # 我是  # 我想  # 怎么做  # 所示  # 会有  # 目录下  # 人说  # 看一下  # 如下图  # 如图所示  # 这是  # 就会  # 我要  # 在我  # 下载地址  # 不太  # 请点击  # 我只  # 来访问 


相关文章: 重庆市网站制作公司,重庆招聘网站哪个好?  制作电商网页,电商供应链怎么做?  学校为何禁止电信移动建设网站?  视频网站app制作软件,有什么好的视频聊天网站或者软件?  如何在阿里云虚拟机上搭建网站?步骤解析与避坑指南  在线ppt制作网站有哪些软件,如何把网页的内容做成ppt?  宝盒自助建站智能生成技巧:SEO优化与关键词设置指南  如何通过免费商城建站系统源码自定义网站主题与功能?  家族网站制作贴纸教程视频,用豆子做粘帖画怎么制作?  南京网站制作费用,南京远驱官方网站?  如何确保西部建站助手FTP传输的安全性?  宝华建站服务条款解析:五站合一功能与SEO优化设置指南  海南网站制作公司有哪些,海口网是哪家的?  临沂网站制作公司有哪些,临沂第四中学官网?  网站制作服务平台,有什么网站可以发布本地服务信息?  如何通过主机屋免费建站教程十分钟搭建网站?  Bpmn 2.0的XML文件怎么画流程图  建站之星如何保障用户数据免受黑客入侵?  宁波免费建站如何选择可靠模板与平台?  网站制作的方法有哪些,如何将自己制作的网站发布到网上?  潮流网站制作头像软件下载,适合母子的网名有哪些?  如何在服务器上配置二级域名建站?  网站设计制作公司地址,网站建设比较好的公司都有哪些?  如何快速配置高效服务器建站软件?  建站主机选购指南:核心配置与性价比推荐解析  如何通过.red域名打造高辨识度品牌网站?  已有域名如何免费搭建网站?  香港服务器部署网站为何提示未备案?  招贴海报怎么做,什么是海报招贴?  成都网站制作价格表,现在成都广电的单独网络宽带有多少的,资费是什么情况呢?  如何选择高效响应式自助建站源码系统?  儿童网站界面设计图片,中国少年儿童教育网站-怎么去注册?  如何在万网主机上快速搭建网站?  seo网站制作优化,网站SEO优化步骤有哪些?  手机钓鱼网站怎么制作视频,怎样拦截钓鱼网站。怎么办?  如何快速生成高效建站系统源代码?  建站之星Pro快速搭建教程:模板选择与功能配置指南  正规网站制作公司有哪些,目前国内哪家网页网站制作设计公司比较专业靠谱?口碑好?  大连网站制作公司哪家好一点,大连买房网站哪个好?  Android自定义控件实现温度旋转按钮效果  香港网站服务器数量如何影响SEO优化效果?  建站VPS配置与SEO优化指南:关键词排名提升策略  攀枝花网站建设,攀枝花营业执照网上怎么年审?  Swift中switch语句区间和元组模式匹配  义乌企业网站制作公司,请问义乌比较好的批发小商品的网站是什么?  制作网站哪家好,cc、.co、.cm哪个域名更适合做网站?  建站之星体验版:智能建站系统+响应式设计,多端适配快速建站  建站之星展会模板:智能建站与自助搭建高效解决方案  如何快速查询域名建站关键信息?  如何批量查询域名的建站时间记录? 

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。