springboot(02)

Web开发

静态资源访问

访问类路径下的 /static /public /resource /META-INF/resource 目录都可以直接访问到静态资源

访问路径: 当前项目根路径/ + 静态资源名

可以通过修改配置文件 spring.mvc.static-path-pattern=/自定义前缀/**改变访问路径

可以通过修改配置文件spring.resource.static-locations = classpath:/自定义文件夹/

请求参数处理

表单隐藏提交 <input name="_method" type="hidden" value="自定义">并且form表单提交方式为post

自定义支持PUT、DELETE、PATRCH请求

修改配置文件spring.mvc.hiddenmethod.filter.enable=true

RestFul风格请求单个参数

访问请求localhost:8080/api/1

解析到后台

1
2
3
4
5
6
7
8
@RestController
public class MyController {
@ResponseBody
@GetMapping("/api/{id}")
public String helloWorld(@PathVariable("id") Integer id){
return ""+id;
}
}
RestFul风格请求多个参数

访问请求localhost:8080/user/root/password/123456

解析到后台

1
2
3
4
5
6
7
8
9
10
11
12
13
@RestController
public class MyController {
@GetMapping("/user/{name}/password/{password}")
public Map<String,Object> helloWorld(@PathVariable("name") String name,
@PathVariable("password") String password,
@PathVariable Map<String,String> kv){
Map<String, Object> map = new HashMap<>();
map.put("name",name);
map.put("password",password);
map.put("kvmap",kv);
return map;
}
}
常规请求多个参数

访问请求localhost:8080/hello?name=root&password=123456

解析到后台

1
2
3
4
5
6
7
8
9
10
@GetMapping("/hello")
public Map<String,Object> helloWorld02(@RequestParam("name") String name,
@RequestParam("password") String password,
@RequestParam Map<String,String> kv){
Map<String, Object> map = new HashMap<>();
map.put("name",name);
map.put("password",password);
map.put("kvmap",kv);
return map;
}
矩阵变量请求

访问请求localhost:8080/matrix/user01;name=root;tag=student,boy

springboot开启矩阵变量请求两种方式

1
2
3
4
5
6
7
8
9
@Configuration(proxyBeanMethods = false)
public class MyConfig implements WebMvcConfigurer {
@Override
public void configurePathMatch(PathMatchConfigurer configurer){
UrlPathHelper urlPathHelper = new UrlPathHelper();
urlPathHelper.setRemoveSemicolonContent(false);
configurer.setUrlPathHelper(urlPathHelper);
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
@Configuration(proxyBeanMethods = false)
public class MyConfig {
@Bean
public WebMvcConfigurer webMvcConfigurer(){
return new WebMvcConfigurer() {
@Override
public void configurePathMatch(PathMatchConfigurer configurer) {
UrlPathHelper urlPathHelper = new UrlPathHelper();
urlPathHelper.setRemoveSemicolonContent(false);
configurer.setUrlPathHelper(urlPathHelper);
}
};
}
}

解析到后台

1
2
3
4
5
6
7
8
@GetMapping("/matrix/{user01}")
public Map<String,Object> helloWorld03(@MatrixVariable("name") String name,
@MatrixVariable("tag")List<String> tag){
Map<String,Object> map = new HashMap<>();
map.put("name",name);
map.put("tag",tag);
return map;
}

访问请求localhost:8080/matrix02/user01;name=root/user02;name=admin

解析到后台

1
2
3
4
5
6
7
8
@GetMapping("/matrix02/{user01}/{user02}")
public Map<String,Object> helloWorld04(@MatrixVariable(value = "name",pathVar = "user01") String user01Name,
@MatrixVariable(value = "name",pathVar = "user02") String user02Name){
Map<String,Object> map = new HashMap<>();
map.put("user01Name",user01Name);
map.put("user02Name",user02Name);
return map;
}

响应参数处理

map、model、request数据是直接存在相应里面的

自定义封装

用来将接收到的数据自定义封装成一个对象

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
@Bean
public WebMvcConfigurer webMvcConfigurer(){
@Override
public void addFormatters(FormatterRegistry registry){
registry.addConverter(new Converter<String, Person>() {
//自定义封装
@Override
public Person convert(String s) {

return null;
}
});
}
};
}

Json返回

jackson.jar + @ResponseBody

可以给前端直接返回json数据