day06-静态资源访问&Rest风格
SpringBoot之静态资源访问&REST风格请求
1.SpringBoot静态资源访问
1.1基本介绍
只要静态资源是放在类路径下的:/static、/public、/resources、/META-INF/resources,则可以直接被访问。根据是:
SpringBoot在启动的时候会去解析WebProperties.java文件:
private static final String[] CLASSPATH_RESOURCE_LOCATIONS = new String[]{"classpath:/META-INF/resources/", "classpath:/resources/", "classpath:/static/", "classpath:/public/"};
//注意这里不能直接访问classpath:类路径,也就是说不能直接访问项目的resources目录
类路径:如maven的类路径就是:src/main/resources目录,因为在该目录的资源文件运行后会直接放在target/classes目录下
常见的静态资源:JS,CSS,图片(.jpg .png .gif .bmp .svg),字体文件(Fonts)等
访问方式,默认情况下:项目根路径/+静态资源名,如
http://localhost:8080/hi.html
可以通过配置文件去修改WebMvcProperties.java中的路径:

1.2快速入门
创建SpringBoot相关环境,在pom.xml中导入如下依赖
<!--导入SpringBoot父工程-->
<parent>
<artifactId>spring-boot-starter-parent</artifactId>
<groupId>org.springframework.boot</groupId>
<version>2.5.3</version>
</parent> <dependencies>
<!--导入场景启动器-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
</dependencies>
创建相关静态资源目录,并放入测试图片

编写主程序并启动
package com.li; import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication; /**
* @author 李
* @version 1.0
*/
@SpringBootApplication
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class,args);
}
}
在浏览器分别访问
http://localhost:8080/2.png、http://localhost:8080/4.png、http://localhost:8080/5.png、http://localhost:8080/6.png,都可以访问到图片。注意在默认情况下,不能直接访问到项目resources目录的资源


1.3注意事项和细节
静态资源访问原理:静态映射为
/**,也就是对所有请求进行拦截,服务端接收到请求后,先看Controller能不能处理(即先去找有没有对应映射路径的Controller),不能处理的请求交给静态资源处理器,如果静态资源找不到,则响应404页面路径冲突问题:因为SpringBoot先走Controller的映射,然后走静态资源处理器。两者可能存在路径冲突。这时我们就需要修改默认的静态资源访问路径,解决路径冲突。
解决路径冲突,改变静态资源访问前缀:在配置文件中设置
static-path-pattern属性,如下:spring:
mvc:
static-path-pattern: /myres/** #修改静态资源访问的前缀
这样静态资源访问的前缀就变为/myres/,
http://localhost:8080/2.png===>http://localhost:8080/myres/pen.png修改默认的静态资源路径:比如我们希望在类路径下增加img目录,并能访问到资源。解决方法同样是在配置文件中修改属性,如下:


在浏览器访问
http://localhost:8080/myres/pen.png即可访问到pen.png图片1.如果你配置了static-location属性,那么以你指定的路径为准,原来的默认路径不再生效
2.请保证运行时资源已经拷贝到了target目录下
2.REST风格请求处理
2.1基本介绍
Rest风格支持,就是使用HTTP请求方式动词表示对资源的操作
- GET-获取资源(查)
- DELETE-删除资源(删)
- PUT-修改资源(改)
- POST-保存资源(增)
2.2应用实例
演示SpringBoot中如何实现Rest风格的增删改查
(1)创建Controller
package com.li.controller;
import org.springframework.web.bind.annotation.*;
/**
* @author 李
* @version 1.0
*/
@RestController//Controller+ResponseBody
public class MonsterController {
//因为请求方式不同,因此url不会冲突
@GetMapping("/monster")
public String getMonster() {
return "GET-查询妖怪";
}
@PostMapping("/monster")
public String saveMonster() {
return "POST-保存妖怪";
}
@PutMapping("/monster")
public String putMonster() {
return "PUT-修改妖怪";
}
@DeleteMapping("/monster")
public String delMonster() {
return "DELETE-删除妖怪";
}
}
(2)使用postman,分别使用不同的方式请求

需要注意,postman是直接发出不同的请求,如果是表单请求,需要创建过滤器将post转化为不同的请求
(3)使用页面表单进行rest风格的请求
- 使用表单进行rest风格请求需要配置文件启用filter功能(见2.3)
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Rest</title>
</head>
<body>
<h1>Rest风格的请求</h1>
<form action="/monster" method="post">
<!--通过隐藏域发送_method指定值-->
<input type="hidden" name="_method" value="put"><!--其他请求同理-->
u:<input type="text" name="name"><br/>
<input type="submit" value="提交表单">
</form>
</body>
</html>


2.3注意事项和细节
如果客户端是postman,它可以直接发送PUT、DELETE等请求,可以不设置Filter
如果要SpringBoot支持页面表单的Rest功能,则需要注意:
Rest风格请求的核心Filter:HiddenHttpMethodFilter,表单请求会被该Filter拦截,获取到该表单的_method值,再判断是否为PUT/DELETE/PATCH(PATCH是新引入的,用来对已知资源进行局部更性)
如果要SpringBoot支持页面表单的Rest功能,需要在配置文件中启用filter功能,否则Rest风格在页面表单上无效。配置如下:
spring:
mvc:
hiddenmethod:
filter:
enabled: true #开启页面表单的Rest风格请求功能
注意@RestController是@Controller+@ResponseBody注解的组合,如果只有@Controller,那么方法返回的字符串会:
(1)没有配置视图解析器时,和其他方法的映射路径匹配
(2)配置了视图解析器,视图解析器解析转发到匹配名称的资源,配置方法如下:
spring:
mvc:
view: #视图解析器
suffix: .html
prefix: / #注意这里需要和当前的static-path-pattern属性匹配
day06-静态资源访问&Rest风格的更多相关文章
- SpringMVC REST 风格静态资源访问配置
1 在web.xml中使用默认servlet处理静态资源,缺点是如果静态资源过多,则配置量会比较大,一旦有遗漏,则会造成资源无法正常显示或404错误. <!-- 静态资源访问控制 --> ...
- spring mvc官网下最新jar搭建框架-静态资源访问处理-注解-自动扫描
1.从官网下载spring相关jar http://spring.io/projects 点击SPRING FRAMEWORK
- 【SpringMVC】静态资源访问的问题
在项目中经常会用到一些静态的资源,而一般我们在配置SpringMVC时会让SpringMVC接管所有的请求(包括静态资源的访问), 那么我们怎样才能最简单的来配置静态资源的访问呢? 一,在web.xm ...
- 关于linux下部署JavaWeb项目,nginx负责静态资源访问,tomcat负责处理动态请求的nginx配置
1.项目的运行环境 linux版本 [root@localhost ~]# cat /proc/version Linux version -.el6.x86_64 (mockbuild@x86-.b ...
- Spring MVC 使用介绍(十一)—— 跨域与静态资源访问
一.跨域 服务端须在响应中添加相应响应头,从而允许跨域,具体可通过 public class CorsFilter extends OncePerRequestFilter { @Override p ...
- Spring Boot 静态资源访问原理解析
一.前言 springboot配置静态资源方式是多种多样,接下来我会介绍其中几种方式,并解析一下其中的原理. 二.使用properties属性进行配置 应该说 spring.mvc.static-pa ...
- 避免图片路径访问405,可以用图片控件来显示局部相对路径,不需要域名就不会出现jpg静态资源访问错误
<asp:Image ID="Image1" runat="server"/> protected void Page_Load(object se ...
- 7.Spring MVC静态资源访问
在SpringMVC中常用的就是Controller与View.但是我们常常会需要访问静态资源,如html,js,css,image等. 默认的访问的URL都会被DispatcherServlet所拦 ...
- Django1.7如何配置静态资源访问
Django是非常轻量级的Web框架,今天散仙来看下如何在Django中配置静态的资源访问路径,一个中等规模的网站,可能就会有很多静态的资源需要访问,无论是html,txt,还是压缩包,有时候访问这些 ...
- SpringBoot静态资源访问+拦截器+Thymeleaf模板引擎实现简单登陆
在此记录一下这十几天的学习情况,卡在模板引擎这里已经是四天了. 对Springboot的配置有一个比较深刻的认识,在此和大家分享一下初学者入门Spring Boot的注意事项,如果是初学SpringB ...
随机推荐
- 计算机网络复习小结(3)-IPv4
IPv4分组 一个IP分组由首部和数据两部分组成,首部前一部分的长度固定,共20B,是所有IP分组必须具有的.在IP数据报首部中有三个关于长度的标记,一个是首部长度,一个是总长度,一个是片偏移,基本单 ...
- 访问提示'staticfiles' is not a registered tag library. Must be one of: admin_list admin_modify admin_urls cache i18n l10n log static tz
解决方法 前端模板中{% load staticfiles %}都修改为{% load static %} 因为在django3.x中这部分做了修改,前者无法识别,只能用后者
- TypeScript系列 -> 遇到报错 Cannot find name ‘console‘. Do you need to change your target library?ging the ‘lib‘ compiler option
学习ts遇到的报错 Cannot find name 'console'. Do you need to change your target library?ging the 'lib' compi ...
- Selenium+Python上传文件方法大全
转自:https://www.jianshu.com/p/fba37cc5d5e2
- 写一些Linux文件夹操作的一些感悟。
rwx 权限 对目录的作用 读权限(r) 表示具有读取目录结构列表的权限,也就是说,可以看到目录中有哪些文件和子目录.一旦对目录拥有 r 权限,就可以在此目录下执行 ls 命令,查看目录中的内容. 写 ...
- 自动化测试工具selenium的常用定位方法
定位方法不仅限于这些,我也会随时补充,大家有其他补充或建议可以在评论区一起讨论哦!!! [打开链接]drive.get("https://www.baidu.com") ...
- hbuliter x 连接雷电模拟器
adb 路径 E:\HBuilderX\plugins\launcher\tools\adbs 也可以配置环境变量 配置环境变量:将adb.exe所在路径,放在Path中计算机(右键)→属性→高级系 ...
- 记一次线上DB被打挂
这周刚新上了需求,在慢慢写代码的时候,突然报警群的消息多了,组长让我看看咋回事. 一开始没当回事,因为faas任务的错误日志一直很多,但是发现新的日志和以前大不相同,显示的是上游faas实例的连接被m ...
- 网易面经-hashmap是否能存null(debug源码)
面试时一定要坚持自己的认知,不要让面试官两三下pua了. 结果是可以的 null作为key时被放在了tab下标为0的位置,只能有一个null null作为value时不受限制 虽然说value为nul ...
- java mysql删除表中多余的重复记录(多个字段),只留有id最小的记录
mysql 删除表中多余的重复记录(多个字段),只留有id最小的记录 DELETE FROM 表1 f WHERE (f.字段1,f.字段2) IN ( SELECT 字段1,字段2 FROM 表1 ...