下面是完整攻略:
Spring Boot访问静态资源
什么是静态资源
静态资源(Static Resources),通常指不需要动态生成的文件,比如HTML、CSS、JS、图片等。静态资源一般存放在Web应用的WebRoot目录下。
Spring Boot静态资源访问配置
Spring Boot使用默认的静态资源路径,如下:
classpath:/META-INF/resources/
classpath:/resources/
classpath:/static/
classpath:/public/
这些默认的静态资源路径依次对应的是:
- Spring Boot内置的JAR包中的META-INF/resources目录;
- 项目根路径下的resources目录;
- 项目根路径下的static目录;
- 项目根路径下的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静态文件
- 在项目根路径下创建一个名为static的目录;
- 在static目录下创建一个名为index.html的文件;
- 在index.html文件中添加以下内容:
```
Home Page
```
- 启动Spring Boot应用,访问http://localhost:8080/index.html,即可看到页面上显示“Home Page”。
示例二:访问图片资源
- 在项目根路径下创建一个名为static的目录;
- 在static目录下创建一个名为images的目录;
- 在images目录下添加一张名为logo.png的图片;
- 在控制器中添加以下代码:
@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();
}
}
- 启动Spring Boot应用,访问http://localhost:8080/logo,即可看到页面上显示名为“logo”的图片。
这两个示例展示了如何访问不同类型的静态资源,建立了基本的静态资源访问机制。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Spring Boot访问静态资源css/js,你真的懂了吗 - Python技术站