参考项目:https://github.com/WeisonWei
静态资源访问
1、静态资源目录
只要静态资源放在 /static or /public or /resources or /META-INF/resources类路径下,即可通过当前项目根路径/ + 静态资源名 访问静态资源
原理: 静态映射/**。
请求进来,先去找Controller看能不能处理。不能处理的所有请求又都交给静态资源处理器。静态资源也找不到则响应404页面
2、改变默认的静态资源路径
spring:
resources:
static-locations: [classpath:/haha/]
3、修改静态资源访问前缀
默认无前缀
spring:
mvc:
static-path-pattern: /res/**
欢迎页支持
1、在静态资源路径下放 index.html ,http://localhost:8080/index.html 可直接访问index.html
可以配置静态资源路径
但是不可以配置静态资源的访问前缀。否则导致 index.html不能被默认访问
spring:
# mvc:
# static-path-pattern: /res/** 这个会导致welcome page功能失效
resources:
static-locations: [classpath:/haha/]
2、controller能处理/index
自定义网站图标
将favicon.ico 放在静态资源目录下即可,图标名字必须是favicon
禁用所有静态资源
spring:
resources:
add-mappings: false 禁用所有静态资源规则
请求映射
@RequestMapping相关的请求映射
@GetMapping
@PostMapping
@PutMapping
@DeleteMapping
Rest风格请求
1、使用HTTP请求方式动词来表示对资源的操作
2、Rest原理(表单提交要使用REST的时候)
// 开启页面表单的Rest功能, 可选项
spring:
mvc:
hiddenmethod:
filter:
enabled: true
• 表单提交会带上_method=PUT
• 请求过来被HiddenHttpMethodFilter拦截
• 请求是否正常,并且是POST
• 获取到_method的值。
• 兼容以下请求;PUT.DELETE.PATCH
• 原生request(post),包装模式requesWrapper重写了getMethod方法,返回的是传入的值。
• 过滤器链放行的时候用wrapper。以后的方法调用getMethod是调用requesWrapper的。
3、使用postman等客户端工具访问Rest接口时不会通过HiddenHttpMethodFilter拦截
请求映射原理
SpringMVC功能分析都从 org.springframework.web.servlet.DispatcherServlet-》doDispatch()
常用参数注解
@PathVariable 路径变量
@RequestParam 获取请求参数(指问号后的参数,url?a=1&b=2)
@RequestBody 获取请求体[POST]
@RequestHeader 获取请求头
@CookieValue 获取Cookie值
@RequestAttribute 获取request域属性
@MatrixVariable 矩阵变量
@ModelAttribute