⭐ 作者:小胡_不糊涂
🌱 作者主页:小胡_不糊涂的个人主页
📀 收录专栏:JavaEE
💖 持续更文,关注博主少走弯路,谢谢大家支持 💖
注解
- 1. MVC定义
- 2. 注解
- 2.1 @RequestMapping
- 2.2 @RequestParam
- 2.3 RequestBody
- 2.4 PathVariable
- 2.5 Controller
1. MVC定义
MVC 是 Model View Controller 的缩写,它是软件⼯程中的⼀种软件架构设计模式,它把软件系统分为模型、视图和控制器三个基本部分:
- View(视图) 指在应⽤程序中专⻔⽤来与浏览器进⾏交互,展⽰数据的资源。
- Model(模型) 是应⽤程序的主体部分,⽤来处理程序中数据逻辑的部分。
- Controller(控制器) 可以理解为⼀个分发器,⽤来决定对于视图发来的请求,需要⽤哪⼀个模型来处理,以及处理完后需要跳回到哪⼀个视图。即⽤来连接视图和模型。
2. 注解
2.1 @RequestMapping
@RequestMapping的作用是建立请求URL和处理方法之间的对应关系
@RequestMapping可以作用在方法和类上
作用在类上:第一级的访问目录
作用在方法上:第二级的访问目录
@RequestMapping的属性
path-指定请求路径的URL
value属性和path属性是一样的
mthod 指定该方法的请求方式
params 指定限制请求参数的条件
headers 发送的请求中必须包含的请求头
示例:
@RequestMapping("/user")@RestControllerpublic class UserController {@RequestMapping("/hello")public String hello(){return "hello,Spring MVC";}
}
访问地址:http://127.0.0.1:8080/user/hello
@RequestMapping 的URL 路径最前⾯加不加 / (斜杠)都可以,Spring程序启动时,会进⾏判断,如果前⾯没有加 / ,Spring会拼接上⼀个 / 。
2.2 @RequestParam
用于将指定的请求参数赋值给方法中的形参。
三个属性:
value:请求参数名(必须配置)
required:是否必需,默认为 true,即请求中必须包含该参数,如果没有包含,将会抛出异常(可选配置)
defaultValue:默认值,如果设置了该值,required 将自动设为 false,无论你是否配置了required,配置了什么值,都是 false(可选配置)
示例:URL中的参数名必须为value
错误示例:
2.3 RequestBody
主要用来接收前端传递给后端的json字符串中的数据的(请求体中的数据的)。
GET方式无请求体,所以使用@RequestBody接收数据时,前端不能使用GET方式提交数据,而是用POST方式进行提交。
在后端的同一个接收方法里,@RequestBody与@RequestParam()可以同时使用,@RequestBody最多只能有一个,而@RequestParam()可以有多个。
示例:
@RestController
public class UserController {@PostMapping("/users")public ResponseEntity<User> createUser(@RequestBody User user) {// 在这里处理 user 对象// ...return ResponseEntity.status(HttpStatus.CREATED).body(user);}
}
上述示例中,@RequestBody 注解标识的 User 参数会自动从请求体中解析,然后映射为 User 对象。
2.4 PathVariable
这个注解主要作⽤在请求URL路径上的数据绑定。
默认传递参数写在URL上,SpringMVC就可以获取到。
示例:
@RequestMapping("/user/{id}/{name}")
public String method8(@PathVariable Integer id, @PathVariable("name") String usereturn "解析参数id:"+id+",name:"+userName;
}
使用浏览器发起请求:http://127.0.0.1:8080/getmessage/user/1/zhangsan
在输入URL时,需要传递需要的参数,这样后端才能正确获取到URL中的参数。
如果⽅法参数名称和需要绑定的URL中的变量名称⼀致时,可以简写,不⽤给@PathVariable的属性赋值,如上述例⼦中的id变量。
如果⽅法参数名称和需要绑定的URL中的变量名称不⼀致时。需要@PathVariable的属性value赋值,如上述例⼦中的userName变量。
2.5 Controller
@Controller 用于标记在一个类上,使用它标记的类就是一个SpringMVC Controller 对象。
- 分发处理器将会扫描使用了该注解的类的方法,并检测该方法是否使用了@RequestMapping 注解。
- @Controller 只是定义了一个控制器类,而使用@RequestMapping 注解的方法才是真正处理请求的处理器。