SpringMVC面试题及答案(41-45)

41、SpringMVC中如何使用@RequestBody注解?
使用@RequestBody注解可以将请求体的数据绑定到一个Java对象上,通常用于处理POST请求的JSON数据。在处理器方法上使用@RequestBody注解,SpringMVC会将请求体的JSON数据转换成指定的Java对象,这个Java对象可以作为处理器方法的参数。

例如:

@PostMapping("/add")
@ResponseBody
public User addUser(@RequestBody User user) {
    // 处理user对象
}

42、SpringMVC中如何使用@ResponseBody注解?
使用@ResponseBody注解可以将处理器方法的返回值直接写入响应体中,不需要再通过视图解析器进行渲染。通常用于处理Ajax请求或者返回JSON数据。

例如:

@GetMapping("/get")
@ResponseBody
public User getUser() {
    User user = userService.getUser();
    return user;
}

43、SpringMVC中如何使用@ResponseStatus注解?
使用@ResponseStatus注解可以设置处理器方法的响应状态码和响应状态信息。通常用于在处理器方法中处理异常时,设置异常的响应状态码和响应状态信息。

例如:

@ExceptionHandler(UserNotFoundException.class)
@ResponseStatus(HttpStatus.NOT_FOUND)
public void handleUserNotFound() {
    // 处理用户不存在的异常
}

44、SpringMVC中如何使用@RequestParam注解?
使用@RequestParam注解可以将请求参数绑定到处理器方法的参数上。可以指定请求参数的名称、是否必须、默认值等属性。

例如:

@GetMapping("/get")
@ResponseBody
public User getUser(@RequestParam("id") Long userId) {
    User user = userService.getUserById(userId);
    return user;
}

45、SpringMVC中如何使用@SessionAttributes注解?
使用@SessionAttributes注解可以将处理器方法的返回值放到Session中。可以指定Session中的名称、需要放入Session中的属性名等属性。

例如:

@ModelAttribute("user")
public User getUser() {
    User user = new User();
    user.setUsername("admin");
    user.setPassword("123456");
    return user;
}

@GetMapping("/get")
@ResponseBody
public User getUser(@SessionAttribute("user") User user) {
    return user;
}

在这个例子中,getUser()方法会返回一个User对象,并将它放到Session中,名称为”user”。getUser()方法会从Session中获取名为”user”的属性,并作为参数返回。