核心功能
# 核心功能
# yaml
用于写properties的k-v值。缩进表示层级关系;对象采用{属性名字: 值,...}的方式,数组或者list采用[],属性名+冒号后加空格。
public class Person {
private String userName;
private Boolean boss;
private Integer age;
private Pet pet;
private String[] interests;
private List<String> animal;
private Map<String, Object> score;
private Set<Double> salarys;
private Map<String, List<Pet>> allPets;}
-------
person:
user-name: cungu
boss: false
age: 15
interests: [ss,s16s,5]
animal: [sk,ssl,8,5]
score:
{jisn: 5,sjf: 5}
salarys: [51,61115.333]
all-pets:
{sjnek: [{name: 88},{name: 89}],dog: []}
pet:
name: nie
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
其中String加了双引号则会转义为换行...,单引号全部解析为字符串。
# 静态资源访问
静态资源目录resources/static,resources/resources
原理:静态资源映射的路径是/**,请求时先去找RestController能不能处理,如果不能处理再把路径当成静态资源去找。开发时习惯把静态资源路径映射/resources/**
spring: mvc: static-path-pattern: /resources/**1
2
3welcome页(index.html)若在默认静态资源目录下,直接访问静态资源路径不加index.html能直接访问。
自定义Favicon,在静态资源添加favicon.ico图标,浏览器页能显示自定义图标。
# 请求变量处理
- 请求路径/user/{id},采用RestFul+@PathVariable("id")
- 如果请求路径包含请求参数/user?id=2,使用@RequestParam("id")
- 如果是通过post表单传到服务器,也可以使用@RequestParam("id")
- 如果处理方法参数名和请求里变量名相同,则形参可以不加注解,springboot自动绑定
- 当需要进行页面跳转时,只能@Controller,此时return “redirect:/”才会生效,然后在需要把变量写到浏览器页面的方法用@responseBody,当且仅当controller所有方法都需要显示在页面才使用@RestController
- session->jsessionid放入cookie->然后每次请求携带这个cookie,因此能找到对应会话存的变量。
- 分号;后矩阵变量@MatrixVariable(springBoot默认禁用,需要手动开启)
# 响应处理
返回值解析器,判断是不是异步返回值
返回值处理器根据返回值类型,找到匹配的返回值处理器。
- @ResponseBody
- 内容协商,浏览器告诉服务器它能接受什么样的内容数据
- 服务器生产对应内容类型数据
- SpringMVC遍历消息转换器HttpMessageConverter,看谁能处理(支不支持将Person类转成json)
请求头Accepter可以指示浏览器接受的数据类型
# Thymeleaf
创建一个包含公共块儿的公共页面common.html,并自定义声明片段
<div th:fragment="headermenu" class="header-section"> </div> --------id形式------------- <div id="headermenu" class="header-section"> </div>1
2
3
4
5然后在其他页面使用th:insert(common代码块所有内容插入到a标签行内),th:replace(common代码块整体替代a标签)导入
<a th:replace="common::headermenu"></a> <a th:insert="common::headermenu"></a> ------id形式------ <a th:replace="common::#headermenu"></a>1
2
3
4
# 拦截器
拦截器配置步骤:
- 编写拦截器配置类并放置在容器中(实现WebMvcConfigurer接口),配置中指明加载哪些拦截器,拦截哪些路径
- addPathPatterns("/**"):表示拦截所有请求路径,包括静态资源
- excludePathPatterns
- 编写拦截器,实现HandleInterceptor接口
- preHandle方法,在Controller方法之前执行
- postHandle方法,在Controller方法之后执行
- afterCompletion方法,在页面渲染结束之后执行
# 文件上传
前端表单type="file",如果上传的文件数量有多个,则添加multiple
<input type="file" name="photos" multiple>
1
Controller中,使用springboot封装好的的MultipartFile类来接收文件,服务器通过transferTo(new File(path+getOriginalFilename))方法来将文件保存到指定的路径。通过getOriginalFilename获取文件名。
@PostMapping("/upload")
public String upload(String email, String username, MultipartFile headerImg, MultipartFile[] photos) throws IOException {
if(!headerImg.isEmpty())
headerImg.transferTo(new File("/"+headerImg.getOriginalFilename()));
return "main";
}
1
2
3
4
5
6
2
3
4
5
6
编辑 (opens new window)
上次更新: 2023/12/15, 15:49:57