Spring_Boot专栏 | ||
---|---|---|
上一篇 | 主目录 | 下一篇 |
目录
- 1. 控制器方式映射
- 2 配置类方式映射
-
- 方式一
- 方式二
- REST风格
- 问题
-
- 1 put被当做post
【前言】
访问映射:在浏览器地址栏中输入http://localhost:8080/index,其中/index的请求映射到某方法进行处理或者映射到某个页面
访问映射又两种方式,控制器和配置类。
传统的
url
地址:http://localhost:8080/addEmp?id=01&name=shane&… ,而使用
REST
风格更能直观简介。
1. 控制器方式映射
在controller.HelloController.class类中【需要在类名标明@Controller】:
@RequestMapping({"/","/index"})
public String index(){
return "index";
}
这个方法将/和/index的请求映射到静态资源的index.html页面,由于是@RequestMapping()方法,会自动拼接上.html后缀。目录结构如下:
![](https://img.laitimes.com/img/_0nNw4CM6IyYiwiM6ICdiwiIyVGduV2YfNWawNyZuBnL1YjMyUTM0MTMxEjMxkTMwIzLc52YucWbp5GZzNmLn9Gbi1yZtl2Lc9CX6MHc0RHaiojIsJye.png)
映射结果为:
【注意】
如果在控制器类controller.HelloController.class中以
@ResponseBody
@RequestMapping("/hello")
public String hello(){
return "你好!";
}
@ResponseBody
@RequestMapping("/hello") 的方式给方法进行标注,则会在该请求页面返回“你好!”字符串。
步骤总结
1.编写控制类,标注@Controller
2.编写方法(方法名任意),标@RequestMapping({"/","/index"})
3.返回要映射到的页面等。return “index”:映射到index.html页面
2 配置类方式映射
方式一
1.配置类实现WebMvcConfigurer接口。注意标注@Configuration
2.重写addViewControllers()方法,@Override
3.注册视图控制器,将addViewController("/login")中/login映射到视图(页面)setViewName(“login”) login.html
@Configuration
public class MyMvcConfig implements WebMvcConfigurer {
@Override
public void addViewControllers(ViewControllerRegistry registry) {
registry.addViewController("/login").setViewName("login");
}
方式二
@Configuration
public class MyMvcConfig implements WebMvcConfigurer {
//所有的WebMvcConfiguration组件都会一起作用
@Bean//将组件注册在容器中
public WebMvcConfigurer webMvcConfigurer(){
WebMvcConfigurer webMvcConfigurer = new WebMvcConfigurer(){
@Override
public void addViewControllers(ViewControllerRegistry registry) {
registry.addViewController("/main.html").setViewName("dashboard");
}
};
return webMvcConfigurer;
}
REST风格
URI:/资源名称/资源标识 HTTP
请求方式
区分对资源CRUD操作
普通CRUD(uri来区分操作) | RestfulCRUD | |
---|---|---|
查询 | getEmp | emp—GET |
添加 | addEmp?xxx | emp—POST |
修改 | updateEmp?id=xxx&xxx=xx | emp/{id}—PUT |
删除 | deleteEmp?id=1 | emp/{id}—DELETE |
例如:
实验功能 | 请求URI | 请求方式 |
---|---|---|
查询所有员工 | emps | GET |
来到添加页面 | emp | GET |
添加员工 | emp | POST |
来到修改页面(查出员工进行信息回显) | emp/1 | GET |
修改员工 | emp | PUT |
删除员工 | emp/1 | DELETE |
问题
1 put被当做post
在实现 restful 的更新操作时,需要将表单数据以 PUT 方法提交:
当emp!=null,即需要put请求进行修改时,服务器却将其作为post来处理。
原因:
在 Spring Boot 的 META-INF/spring-configuration-metadata.json 配置文件中,默认是关闭 Spring 的 hiddenmethod 过滤器的,所以直接在表单提交的数据中添加 “_method” 数据并不起作用。:
{
"name": "spring.mvc.hiddenmethod.filter.enabled",
"type": "java.lang.Boolean",
"description": "Whether to enable Spring's HiddenHttpMethodFilter.",
"defaultValue": false
},
解决方式:
在 Spring Boot 的配置文件 application.properties 中将 hiddenmethod 过滤器设置为启用即可:
# 启用hiddenMethod过滤器
spring.mvc.hiddenmethod.filter.enabled=true