本篇文章主要介绍了SpringMVC一些常用注解
目录
SpringMVC中常用的注解包括:
一.@Controller:
标记一个类为SpringMVC的Controller,处理HTTP请求和响应。
下面是一个使用Spring MVC框架的@Controller示例:
@Controller
public class UserController {
@Autowired
private UserService userService;
@RequestMapping(value = "/users", method = RequestMethod.GET)
public String userList(Model model) {
List<User> users = userService.getAllUsers();
model.addAttribute("users", users);
return "users";
}
@RequestMapping(value = "/users/{id}", method = RequestMethod.GET)
public String userDetails(@PathVariable("id") int id, Model model) {
User user = userService.getUserById(id);
model.addAttribute("user", user);
return "userDetails";
}
@RequestMapping(value = "/users", method = RequestMethod.POST)
public String addUser(@ModelAttribute("userForm") User user) {
userService.addUser(user);
return "redirect:/users";
}
@RequestMapping(value = "/users/{id}", method = RequestMethod.PUT)
public String updateUser(@PathVariable("id") int id, @ModelAttribute("userForm") User user) {
user.setId(id);
userService.updateUser(user);
return "redirect:/users";
}
@RequestMapping(value = "/users/{id}", method = RequestMethod.DELETE)
public String deleteUser(@PathVariable("id") int id) {
userService.deleteUser(id);
return "redirect:/users";
}
}
上述示例中,@Controller注解标注了UserController类,并且使用@Autowired注解注入了一个UserService对象。
使用@RequestMapping注解可以将方法映射到相应的URL上。例如,userList()方法映射到了URL "/users",userDetails()方法映射到了URL "/users/{id}"。
在userList()方法中,我们从UserService中获取用户列表,将其添加到Model中,然后返回"users"视图名。
在userDetails()方法中,我们从UserService中获取指定id的用户对象,将其添加到Model中,然后返回"userDetails"视图名。
在addUser()方法中,我们使用@ModelAttribute注解将前端提交的表单数据绑定到User对象上,然后调用UserService的addUser()方法保存用户对象。
在updateUser()方法中,我们使用@PathVariable注解获取URL中的id参数,再使用@ModelAttribute注解绑定前端提交的表单数据到User对象上,最后调用UserService的updateUser()方法更新用户对象。
在deleteUser()方法中,我们使用@PathVariable注解获取URL中的id参数,然后调用UserService的deleteUser()方法删除指定id的用户对象。
以上就是一个简单的Spring MVC的@Controller示例。
二.@RequestMapping:
标记一个方法处理的HTTP请求的URL路径,可以绑定多个URL路径。
@RequestMapping是Spring MVC中的注解之一,用于定义请求URL与处理方法之间的映射关系。
示例:
@Controller
@RequestMapping("/user")
public class UserController {
@RequestMapping(value = "/{id}", method = RequestMethod.GET)
public String viewUser(@PathVariable("id") String userId, Model model) {
// 处理方法体
return "userView";
}
@RequestMapping(value = "/add", method = RequestMethod.POST)
public String addUser(@ModelAttribute("user") User user) {
// 处理方法体
return "redirect:/user/" + user.getId();
}
@RequestMapping(value = "/{id}/update", method = RequestMethod.POST)
public String updateUser(@PathVariable("id") String userId, @ModelAttribute("user") User user) {
// 处理方法体
return "redirect:/user/" + user.getId();
}
@RequestMapping(value = "/{id}/delete", method = RequestMethod.GET)
public String deleteUser(@PathVariable("id") String userId) {
// 处理方法体
return "redirect:/user";
}
}
以上示例中,@RequestMapping注解设置url为/user,全局默认url都会以/user开头。在类级别上,@RequestMapping注解设置了/user,表示该类中的所有方法都在/user下面。在方法级别上,@RequestMapping注解使用value参数定义了具体的url,并使用method参数限制了HTTP请求方法。
(1)GetMapping
@Get mapping注解是Spring框架中用于处理HTTP GET请求的注解,它可以用于标识一个方法,当发起一个HTTP GET请求时,Spring框架会自动调用被该注解标识的方法来响应该请求。
使用@Get mapping注解时,需要指定该方法能够响应的URL路径,例如:
@GetMapping("/user/{id}")
public User getUser(@PathVariable Integer id) {
// 处理获取用户的逻辑
}
该示例中,@GetMapping注解标识的方法能够响应的URL路径是"/user/{id}",其中{id}是一个路径参数,用于指定要获取的用户的ID。当访问URL路径为"/user/123"时,Spring框架会自动调用getUser方法,并将123作为参数传入该方法中,以便获取对应的用户信息。
(2)PostMapping
@PostMapping是一个Spring注解,用于将HTTP POST请求映射到特定的处理程序方法上。它可以用于接收来自客户端的POST请求,并将请求的数据解析成Java对象,然后使用这些数据执行业务逻辑代码。通常结合@RequestParam注解使用,用于处理表单提交等操作。它可以接收@RequestParam注解传递的参数,也可以接收RequestBody注解传递的JSON数据。在Spring MVC中,@PostMapping是@Controller注解的一部分,它允许开发人员编写处理POST请求的控制器方法。
下面是@PostMapping注解的示例:
@PostMapping("/example")
public void handleExamplePostRequest(@RequestBody ExampleDto exampleDto) {
// 处理请求的代码
}
在上述示例中,@PostMapping注解将HTTP的POST请求映射到/example路径上,并将请求的正文映射到ExampleDto对象上。处理程序方法handleExamplePostRequest将负责处理该请求,并根据需要进行逻辑处理。
三.@RequestParam:
获取HTTP请求参数的值,适用于GET和POST请求。
@RequestParam是Spring MVC中的注解,用于提取请求参数的值并将其绑定到方法的参数上。当浏览器向服务器发送请求时,它通常会带有一些查询字符串参数,例如searchTerm=apple&numResults=10。@RequestParam注解告诉Spring MVC框架将这些查询字符串参数提取为方法的参数,并且可以指定参数的名称和是否为必需参数。例如:
@GetMapping("/search")
public String search(@RequestParam("searchTerm") String term,
@RequestParam(value = "numResults", defaultValue = "10") int numResults) {
// Code to perform search
}
在上面的例子中,@RequestParam("searchTerm")告诉Spring MVC将查询字符串参数"searchTerm"的值绑定到方法的term参数上。@RequestParam注解还可以接受其他参数,例如defaultValue,用于指定参数的默认值。
四.@PathVariable:
获取URL路径中的参数值。
五.@ModelAttribute:
绑定HTTP请求参数到一个JavaBean中,可以作用于方法参数和方法体内部变量。
以下是一个在Spring MVC中使用@ModelAttribute注解的示例:
@ModelAttribute("user")
public User setUpUserForm() {
return new User();
}
@RequestMapping("/user/register")
public String registerUser(@ModelAttribute("user") User user) {
// 处理用户注册逻辑
return "success";
}
在这个示例中,@ModelAttribute注解被用来在请求处理方法之前执行一个方法,即setUpUserForm()方法。该方法返回一个User对象,并将其添加到模型中,模型的名称为"user"。这个模型对象可以在请求处理方法中使用,即registerUser()方法中的@ModelAttribute("user") User user参数。
在registerUser()方法中,@ModelAttribute("user")注解告诉Spring MVC从模型中获取名为"user"的对象,并将其作为方法参数传递给该方法。这个对象可以被用于处理用户提交的数据,例如用户注册表单的数据。
通过使用@ModelAttribute注解,我们可以避免重复的代码,同时也可以更方便地处理表单数据。
六.@ResponseBody:
标记一个方法返回值为响应体内容,可以自动将Java对象转换为JSON/XML格式。
@ResponseBody注解是Spring MVC框架中的一个注解,用于将返回值自动转换为JSON或XML格式的响应体。
例如,我们定义一个Controller类:
@RestController
@RequestMapping("/example")
public class ExampleController {
@GetMapping("/hello")
@ResponseBody
public String sayHello() {
return "Hello World!";
}
}
在这个示例中,我们使用@GetMapping注解来映射HTTP GET请求到sayHello()方法上,并用@ResponseBody注解来告诉Spring MVC将方法的返回值转换为响应体。如果不使用@ResponseBody注解,则返回值将被解释为视图的名称,然后由视图解析器处理。
当浏览器发出GET请求/example/hello时,Spring MVC将调用sayHello()方法并将返回的字符串"Hello World!"自动转换为JSON或XML格式,并将其作为响应体返回给浏览器。
七.@ResponseStatus:
设置HTTP响应的状态码和原因短语。
八.@SessionAttributes:
用来指定模型属性放到Session中,可以用于多个请求之间共享模型数据。
九.@InitBinder:
用于数据绑定,可以在Controller类中定义一个方法,用于自定义类型转换器和数据格式化。
十.@ExceptionHandler:
标记一个方法为异常处理方法,用于在Controller内部处理异常,可以指定具体的异常类型。