全网整合营销服务商

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

免费咨询热线: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如何加载静态图片  # 首页  # 我是  # 我想  # 怎么做  # 所示  # 会有  # 目录下  # 人说  # 看一下  # 如下图  # 如图所示  # 这是  # 就会  # 我要  # 在我  # 下载地址  # 不太  # 请点击  # 我只  # 来访问 


相关文章: 详解jQuery停止动画——stop()方法的使用  广德云建站网站建设方案与建站流程优化指南  深圳网站制作的公司有哪些,dido官方网站?  如何通过山东自助建站平台快速注册域名?  专业网站建设制作报价,网页设计制作要考什么证?  如何在云指建站中生成FTP站点?  javascript中对象的定义、使用以及对象和原型链操作小结  如何彻底删除建站之星生成的Banner?  建站主机类型有哪些?如何正确选型  香港服务器建站指南:免备案优势与SEO优化技巧全解析  开封网站制作公司,网络用语开封是什么意思?  武汉网站设计制作公司,武汉有哪些比较大的同城网站或论坛,就是里面都是武汉人的?  深圳 网站制作,深圳招聘网站哪个比较好一点啊?  已有域名如何快速搭建专属网站?  贸易公司网站制作流程,出口贸易网站设计怎么做?  建站之星后台密码遗忘或太弱?如何重置与强化?  如何快速搭建FTP站点实现文件共享?  家庭建站与云服务器建站,如何选择更优?  如何获取免费开源的自助建站系统源码?  深圳网站制作案例,网页的相关名词有哪些?  C++中引用和指针有什么区别?(代码说明)  制作网站的过程怎么写,用凡科建站如何制作自己的网站?  ,想在网上投简历,哪几个网站比较好?  韩国网站服务器搭建指南:VPS选购、域名解析与DNS配置推荐  如何通过云梦建站系统实现SEO快速优化?  c# 服务器GC和工作站GC的区别和设置  网页设计网站制作软件,microsoft office哪个可以创建网页?  智能起名网站制作软件有哪些,制作logo的软件?  高防网站服务器:DDoS防御与BGP线路的AI智能防护方案  枣阳网站制作,阳新火车站打的到仙岛湖多少钱?  网站制作怎么样才能赚钱,用自己的电脑做服务器架设网站有什么利弊,能赚钱吗?  建站之星如何实现PC+手机+微信网站五合一建站?  已有域名和空间如何快速搭建网站?  哈尔滨网站建设策划,哈尔滨电工证查询网站?  北京网页设计制作网站有哪些,继续教育自动播放怎么设置?  如何选择最佳自助建站系统?快速指南解析优劣  宝华建站服务条款解析:五站合一功能与SEO优化设置指南  如何在阿里云高效完成企业建站全流程?  建站主机选哪种环境更利于SEO优化?  如何快速搭建高效WAP手机网站?  建站上传速度慢?如何优化加速网站加载效率?  建站为何优先选择香港服务器?  零基础网站服务器架设实战:轻量应用与域名解析配置指南  建站之星在线版空间:自助建站+智能模板一键生成方案  文字头像制作网站推荐软件,醒图能自动配文字吗?  东莞市网站制作公司有哪些,东莞找工作用什么网站好?  如何在云主机上快速搭建网站?  高端云建站费用究竟需要多少预算?  制作网站的公司有哪些,做一个公司网站要多少钱?  建站之星后台管理:高效配置与模板优化提升用户体验 

您的项目需求

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