让我们来详解一下SpringMVC常用的5种注解。
1. @RequestMapping
@RequestMapping注解可以定义控制器方法的URL值。 一个控制器可以有多个方法,并且它们都可以映射到不同的URL值。 示例代码:
@Controller
@RequestMapping("/users")
public class UserController {
@RequestMapping(method = RequestMethod.GET, value = "/")
public String getAllUsers(ModelMap model) {
// 处理获取所有用户的逻辑
return "users";
}
@RequestMapping(method = RequestMethod.GET, value = "/{userId}")
public String getUser(@PathVariable("userId") Long userId, ModelMap model) {
// 处理获取指定用户的逻辑
return "user";
}
}
这里的@Controller注解指明了这是一个控制器,@RequestMapping注解指明了控制器的根URL值为"/users"。在getAllUsers方法中,@RequestMapping注解指明了获取所有用户的URL值为"/"。在getUser方法中,@RequestMapping注解指明了获取指定用户的URL值为"/{userId}"。{userId}
是路径变量的形式,我们通过@PathVariable注解来把这个变量绑定到方法参数中。
2. @RequestParam
@RequestParam注解可以指定请求参数的名称和默认值。 示例代码:
@Controller
@RequestMapping("/orders")
public class OrderController {
@RequestMapping(method = RequestMethod.GET, value = "/")
public String getOrders(@RequestParam(value = "status", required = false, defaultValue = "new") String status, ModelMap model) {
// 处理获取订单的逻辑
return "orders";
}
}
这里的@Controller注解指明了这是一个控制器,@RequestMapping注解指明了控制器的根URL值为"/orders"。在getOrders方法中,@RequestParam注解指明了请求参数的名称为"status",required属性设为false表示这个参数不是必须的,defaultValue属性指定了默认值为"new"。
3. @PathVariable
@PathVariable注解可以将URL中的路径变量绑定到方法参数中。 示例代码:
@Controller
@RequestMapping("/books")
public class BookController {
@RequestMapping(method = RequestMethod.GET, value = "/{bookId}")
public String getBook(@PathVariable("bookId") Long bookId, ModelMap model) {
// 处理获取指定书籍的逻辑
return "book";
}
}
这里的@Controller注解指明了这是一个控制器,@RequestMapping注解指明了控制器的根URL值为"/books"。在getBook方法中,@PathVariable注解指明了路径变量为"bookId",把这个变量绑定到方法参数中。
4. @ResponseBody
@ResponseBody注解表示方法返回的对象会被转成目标格式,比如JSON或XML,并写入到响应主体中。 示例代码:
@RestController
public class HelloController {
@RequestMapping(method = RequestMethod.GET, value = "/hello")
public String hello() {
return "Hello, world!";
}
@RequestMapping(method = RequestMethod.GET, value = "/user")
public User getUser() {
// 返回一个User对象
return new User("Tom", 20);
}
}
这里的@RestController注解表示这是一个RestController(这个注解包含@Controller和@ResponseBody注解),@RequestMapping注解指明了两个URL值。在hello方法中,返回的字符串会被直接写入到响应主体中。在getUser方法中,返回的User对象会被转成JSON格式并写入到响应主体中。
5. @RequestBody
@RequestBody注解表示请求主体中的数据会被转成Java对象,并且绑定到方法参数中。 示例代码:
@RestController
public class UserController {
@RequestMapping(method = RequestMethod.POST, value = "/users")
public void addUser(@RequestBody User user) {
// 把传入的User对象保存到数据库中
}
}
这里的@RestController注解表示这是一个RestController,@RequestMapping注解指明了URL值为"/users"。在addUser方法中,@RequestBody注解指明了请求主体中的数据会被转成User对象,并且绑定到方法参数中。
通过以上5种常用注解的讲解,相信大家都已经掌握了SpringMVC中的一些基本注解用法。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:详解springmvc常用5种注解 - Python技术站