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数据