Spring Boot访问静态资源css/js,你真的懂了吗

yizhihongxing

下面是完整攻略:

Spring Boot访问静态资源

什么是静态资源

静态资源(Static Resources),通常指不需要动态生成的文件,比如HTML、CSS、JS、图片等。静态资源一般存放在Web应用的WebRoot目录下。

Spring Boot静态资源访问配置

Spring Boot使用默认的静态资源路径,如下:

classpath:/META-INF/resources/
classpath:/resources/
classpath:/static/
classpath:/public/

这些默认的静态资源路径依次对应的是:

  1. Spring Boot内置的JAR包中的META-INF/resources目录;
  2. 项目根路径下的resources目录;
  3. 项目根路径下的static目录;
  4. 项目根路径下的public目录。

如果项目中需要访问自定义的静态资源,可以在application.properties文件中进行配置,如下:

# 添加自定义的静态资源路径
spring.resources.static-locations=classpath:/static/,file:/opt/static/

上述配置表示访问静态资源时,会先访问项目根路径下的static目录,如果没有找到,则会访问/opt/static/目录。

访问静态资源

在Spring Boot中访问静态资源很简单,只需要在HTML页面中添加相应的链接即可。

以访问CSS文件为例,可以在HTML页面中添加以下代码:

<link rel="stylesheet" type="text/css" href="/css/style.css">

假设项目根路径下有一个名为style.css的文件夹,上面代码中href属性的值为/css/style.css,其中前面的"/"表示项目根路径,后面的"/css/style.css"表示相对于项目根路径下的css文件夹。如果没有在application.properties文件中进行配置,则默认访问项目根路径下的static目录。

除了在HTML页面中添加URL链接,还可以在Spring MVC的控制器方法上加上@RequestMapping注解,来访问静态资源:

@RequestMapping(value = "/static/img/{imgName}", method = RequestMethod.GET)
public void showImage(@PathVariable("imgName") String imgName, HttpServletResponse response) {
    // 读取图片文件
    byte[] data = readFile("/static/img/" + imgName);
    try {
        // 写入响应流中
        response.getOutputStream.write(data);
        response.getOutputStream.flush();
    } catch (IOException e) {
        e.printStackTrace();
    }
}

上述代码中,@RequestMapping指定了请求的路径为/static/img/{imgName},其中{imgName}为参数,用于匹配URL中的文件名。在方法体中,首先通过readFile方法,读取了项目根路径下的static/img目录下的imgName文件的二进制内容,并写入响应流中。这样,用户在访问时就会得到相应的图片。

示例

下面是两个示例:

示例一:访问HTML静态文件

  1. 在项目根路径下创建一个名为static的目录;
  2. 在static目录下创建一个名为index.html的文件;
  3. 在index.html文件中添加以下内容:

```



Home Page

Home Page


```

  1. 启动Spring Boot应用,访问http://localhost:8080/index.html,即可看到页面上显示“Home Page”。

示例二:访问图片资源

  1. 在项目根路径下创建一个名为static的目录;
  2. 在static目录下创建一个名为images的目录;
  3. 在images目录下添加一张名为logo.png的图片;
  4. 在控制器中添加以下代码:

@RequestMapping(value = "/logo", method = RequestMethod.GET)
public void showImage(HttpServletResponse response) {
// 读取图片文件
byte[] data = readFile("/static/images/logo.png");
try {
// 设置响应类型为图片
response.setContentType("image/png");
// 写入响应流中
response.getOutputStream.write(data);
response.getOutputStream.flush();
} catch (IOException e) {
e.printStackTrace();
}
}

  1. 启动Spring Boot应用,访问http://localhost:8080/logo,即可看到页面上显示名为“logo”的图片。

这两个示例展示了如何访问不同类型的静态资源,建立了基本的静态资源访问机制。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Spring Boot访问静态资源css/js,你真的懂了吗 - Python技术站

(0)
上一篇 2023年6月27日
下一篇 2023年6月27日

相关文章

  • wp8.1预览版什么时候推送?wp8.1开发者预览版怎么使用?

    让我为您详细讲解一下关于 “wp8.1预览版什么时候推送?wp8.1开发者预览版怎么使用?” 的攻略。 wp8.1预览版推送时间 在正式发布Windows Phone 8.1之前,微软会提供维护更新的预览版给开发者和技术爱好者使用。这个预览版的推送时间是在2014年4月14日。 wp8.1开发者预览版的使用 步骤1:注册Windows Phone开发者 首先…

    other 2023年6月26日
    00
  • Android自定义dialog简单实现方法

    Android自定义dialog的简单实现方法,以下是完整攻略: 什么是自定义dialog 在Android中,dialog常用于展示特定的信息或者功能。默认的dialog数量有限,若想定制化自定义的dialog,则需要使用自定义dialog。 如何实现自定义dialog 1.使用Dialog类并使用自定义Layout Dialog类提供了一些可以为我们准备…

    other 2023年6月25日
    00
  • 电脑高手必读 服务器基础知识大全(图文)

    电脑高手必读 服务器基础知识大全(图文)攻略 简介 本文主要介绍了服务器基础知识,包括:什么是服务器、服务器的种类及其功能、服务器的软硬件配置、服务器的安装和调试、以及常见的服务器应用等内容。文章中配有图片、图表,易于理解和掌握。 什么是服务器? 服务器是一种能够接受客户端请求并向其提供服务的计算机系统,是用于支持网络或互联网应用的硬件和软件集合。服务器通常…

    other 2023年6月27日
    00
  • 魅蓝note无限重启是什么原因?如何解决?

    魅蓝note无限重启是什么原因?如何解决? 魅蓝note无限重启是指魅族手机开机后无法正常进入系统,反复出现重启的情况。这可能是由多种因素引起的,包括软件故障、硬件故障、系统崩溃等。 以下是解决魅蓝note无限重启的完整攻略: 一、清除缓存和数据 1.1 清除缓存 清除缓存可以解决一些常见的手机问题。操作步骤如下: 关机 按住“音量+”和“开机键”同时按下,…

    other 2023年6月27日
    00
  • 怎么实现LOGO文件导入cad变成线条?

    怎么实现LOGO文件导入CAD变成线条? 要将LOGO文件导入CAD并转换为线条,可以按照以下步骤进行操作: 步骤一:准备工作 确保你已经安装了CAD软件,比如AutoCAD、SolidWorks等。 确保你已经拥有LOGO文件的源文件,比如矢量图形文件(如SVG、AI、EPS等)或者位图文件(如JPEG、PNG等)。 步骤二:导入LOGO文件 打开CAD软…

    other 2023年7月28日
    00
  • MySQL中使用去重distinct方法的示例详解

    MySQL中使用去重distinct方法的示例详解 在MySQL中,distinct方法可以用来去重,即只显示不重复的数据。本文将详细介绍在MySQL中使用distinct方法的方法和示例。 语法格式 SELECT DISTINCT column_name, column_name FROM table_name; 参数说明 column_name: 数据库…

    other 2023年6月25日
    00
  • 深入理解java中的重载和覆盖

    关于“深入理解java中的重载和覆盖”这个话题,我可以给你一些详细的讲解和示例,帮助你更好地理解这两个概念。 重载(Overloading) 在Java中,重载指的是同一个类中定义的多个方法,它们具有相同的名称但参数不同的情况。也就是说,重载实现了方法的复用。 在重载的时候,需要注意以下几点: 方法名必须相同 参数列表必须不同(个数不同或类型不同或顺序不同)…

    other 2023年6月27日
    00
  • 剑指Offer之Java算法习题精讲链表与二叉树专项训练

    剑指Offer之Java算法习题精讲链表与二叉树专项训练攻略 1. 确定题目类型 本专项训练主要包含链表与二叉树两种数据结构,因此在解题过程中需要先确定题目属于哪种类型。对于链表题目,需要掌握链表的基本操作,比如遍历、插入、删除等。对于二叉树题目,需要掌握二叉树的遍历方式、求最大深度、判断是否为平衡二叉树等基本操作。 2. 制定解题计划 在确定题目类型后,需…

    other 2023年6月27日
    00
合作推广
合作推广
分享本页
返回顶部