在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小时内与您取得联系。