SpringMVC注解开发详解
路径映射@RequestMapping
-
@RequestMapping("/user")
,用于映射 HTTP 请求到特定的处理方法(Controller 方法)上。它可以用于类级别和方法级别,用于定义处理请求的路径和其他相关属性。包括 GET、POST、PUT、DELETE 等。默认情况下,它适用于处理所有类型的请求。如果要限定@RequestMapping
的请求方法,可以使用method
属性指定所需的请求方法。例如:@ResponseBody @RequestMapping(value = "/users", method = RequestMethod.GET) public String getUserList() { // 处理用户列表 GET 请求 return "user-list"; }
-
需要注意的是,在 Spring 4.3 及以上版本,可以使用更简洁的语法来指定请求方法。例如:
@ResponseBody @GetMapping("/users") public String getUserList() { // 处理用户列表 GET 请求 return "user-list"; } @ResponseBody @PostMapping("/users") public String createUser() { // 处理创建用户 POST 请求 return "user-created"; }
返回类型@ResponseBody
-
@ResponseBody
是 Spring MVC 中的注解,用于指示方法或控制器返回的对象应作为响应的主体部分,而不是作为视图名称解析的一部分。它将方法的返回值直接转换为响应的内容,通常用于返回 JSON、XML 或其他格式的数据。Controller方法返回值默认表示要跳转的页面,没有对应的页面就会报错。如果不想跳转页面而是响应数据,那么就需要在方法上使用@ResponseBody注解。如果控制器类上已经使用了@RestController
注解,则该类中的所有方法都将默认使用@ResponseBody
注解,无需再单独添加@ResponseBody
注解。 - 使用
@ResponseBody
注解的方法可以返回各种类型的数据,包括:- Java 对象:Spring MVC会自动将其转换为 JSON、XML 或其他格式的数据,并设置正确的
Content-Type
头部。 - 字符串:直接将字符串作为响应的内容返回。
- 字节数组:将字节数组作为响应的内容返回。
- Java 对象:Spring MVC会自动将其转换为 JSON、XML 或其他格式的数据,并设置正确的
@RequestBody
-
可以作为json参数接受一个对象:
@PostMapping("/user") @ResponseBody public User createUser(@RequestBody User user) { // 处理创建用户的逻辑 return userService.createUser(user); }
配置类@Configuration
- 标识配置类:使用
@Configuration
注解将一个类标识为配置类,该类通常用于定义 Spring 应用程序的配置信息。 - 声明 Bean:在配置类中使用
@Bean
注解声明一个方法,该方法将返回一个对象实例,Spring 容器会将其注册为一个 Bean,并根据需要进行依赖注入。 - 组件扫描:使用
@ComponentScan
注解指示 Spring 容器在指定的包中扫描组件,自动将其识别为 Bean。 - 导入其他配置类:使用
@Import
注解导入其他配置类,实现配置的模块化和复用。
请求参数名称关联@RequestParam(“name”)
-
请求参数名与形参名不同时,使用@RequestParam注解关联请求参数名称与形参名称之间的关系
参数:
- required:是否为必传参数
- defaultValue:参数默认值
@RequestMapping("/update") @ResponseBody public String update(@RequestParam("name") String userName , int age){ return "{'module':'common param different name'}"; }
POJO类型参数自动封装
//POJO参数:请求参数与形参对象中的属性对应即可完成参数传递
@RequestMapping("/pojoParam")
@ResponseBody
public String pojoParam(User user){
System.out.println("pojo参数传递 user ==> "+user);
return "{'module':'pojo param'}";
}
- 请求参数key的名称要和POJO中属性的名称一致,否则无法封装。
- 嵌套POJO参数:请求参数名与形参对象属性名相同,按照对象层次结构关系即可接收嵌套POJO属性参数,即属性名 . 引用属性名进行传参。
@RequestBody与@RequestParam区别
- @RequestParam用于接收url地址传参,表单传参【application/x-www-formurlencoded】
- @RequestBody用于接收json数据【application/json】
- 后期开发中,发送json格式数据为主,@RequestBody应用较广如果发送非json格式数据,选用@RequestParam接收请求参数
日期类型@DateTimeFormat
接收形参时,根据不同的日期格式设置不同的接收方式 ,如下:
//日期参数 http://localhost:80/dataParam?date=2088/08/08&date1=2088-08-
18&date2=2088/08/28 8:08:08
//使用@DateTimeFormat注解设置日期类型数据格式,默认格式yyyy/MM/dd
@RequestMapping("/dataParam")
@ResponseBody
public String dataParam(Date date,@DateTimeFormat(pattern="yyyy-MM-dd") Date date1, @DateTimeFormat(pattern="yyyy/MM/dd HH:mm:ss") Date date2){
System.out.println("参数传递 date ==> "+date);
System.out.println("参数传递 date1(yyyy-MM-dd) ==> "+date1);
System.out.println("参数传递 date2(yyyy/MM/dd HH:mm:ss) ==> "+date2);
return "{'module':'data param'}";
}
响应页面
@Controller
public class UserController {
//响应页面/跳转页面
//返回值为String类型,设置返回值为页面名称,即可实现页面跳转
@RequestMapping("/toJumpPage")
public String toJumpPage(){
System.out.println("跳转页面");
return "page.jsp";
}
}
REST 风格
REST(Representational State Transfer),表现形式状态转换
- 传统风格资源描述形式
- http://localhost/user/getById?id=1
- http://localhost/user/saveUser
- REST风格描述形式
- http://localhost/user/1
- http://localhost/user
RESTful介绍
- 按照REST风格访问资源时使用行为-动作区分对资源进行了何种操作
- http://localhost/users 查询全部用户信息 (查询)
- http://localhost/users/1 查询指定用户信息(查询)
- http://localhost/users 添加用户信息(新增/保存)
- http://localhost/users 修改用户信息(修改/更新)
- http://localhost/users/1 删除用户信息(删除)
@Controller
public class UserController {
//设置当前请求方法为POST,表示REST风格中的添加操作
@RequestMapping(value = "/users",method = RequestMethod.POST)
@ResponseBody
public String save(RequestBody User user){
System.out.println("user save...");
return "{'module':'user save'}";
}
//设置当前请求方法为DELETE,表示REST风格中的删除操作
//@PathVariable注解用于设置路径变量(路径参数),要求路径上设置对应的占位符,并且占位符名称与方法形参名称相同
@RequestMapping(value = "/users/{id}",method = RequestMethod.DELETE)
@ResponseBody
public String delete(@PathVariable Integer id){
System.out.println("user delete..." + id);
return "{'module':'user delete'}";
}
//设置当前请求方法为PUT,表示REST风格中的修改操作
@RequestMapping(value = "/users",method = RequestMethod.PUT)
@ResponseBody
public String update(@RequestBody User user){
System.out.println("user update..."+user);
return "{'module':'user update'}";
}
//设置当前请求方法为GET,表示REST风格中的查询操作
//@PathVariable注解用于设置路径变量(路径参数),要求路径上设置对应的占位符,并且占位符名称与方法形参名称相同
@RequestMapping(value = "/users/{id}" ,method = RequestMethod.GET)
@ResponseBody
public String getById(@PathVariable Integer id){
System.out.println("user getById..."+id);
return "{'module':'user getById'}";
}
//设置当前请求方法为GET,表示REST风格中的查询操作
@RequestMapping(value = "/users",method = RequestMethod.GET)
@ResponseBody
public String getAll(){
System.out.println("user getAll...");
return "{'module':'user getAll'}";
}
}
@PathVariable介绍
绑定路径参数与处理器方法形参间的关系,要求路径参数名与形参名一一对应,使用 @PathVariable
注解时,需要在注解中指定路径变量的名称,并将其作为方法参数进行声明。当请求被映射到带有 @PathVariable
注解的处理方法时,Spring MVC 会自动将路径变量的值绑定到相应的方法参数上。
@RestController
@RequestMapping("/users")
public class UserController {
@GetMapping("/{id}")
public User getUserById(@PathVariable("id") Long id) {
// 根据用户ID查询用户信息
return userService.getUserById(id);
}
// 其他方法...
}
需要注意的是,@PathVariable
注解默认是必需的,即请求中必须包含路径变量的值。如果路径变量的值在请求中不存在,将会引发异常。如果希望路径变量是可选的,可以使用 required
属性进行配置。文章来源:https://www.toymoban.com/news/detail-498220.html
@GetMapping("/{id}")
public User getUserById(@PathVariable(value = "id", required = false) Long id) {
// ...
}
@RequestBody、@RequestParam、@PathVariable区别和应用
- 区别
- @RequestParam用于接收url地址传参或表单传参,
(@RequestParam("name") String userName , int age),(@RequestParam List<String> likes)
- @RequestBody用于接收json数据,
(@RequestBody User user)
- @PathVariable用于接收路径参数,使用{参数名称}描述路径参数
- @RequestParam用于接收url地址传参或表单传参,
- 应用
- 后期开发中,发送请求参数超过1个时,以json格式为主,@RequestBody应用较广如果发送非json格式数据,选用@RequestParam接收请求参数采用RESTful进行开发,当参数数量较少时,例如1个,可以采用@PathVariable接收请求路径变量,通常用于传递id值。
@RestController注解
设置当前控制器类为RESTful风格,等同于@Controller与@ResponseBody两个注解组合功能文章来源地址https://www.toymoban.com/news/detail-498220.html
到了这里,关于SpringMVC常用注解笔记的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!