Spring框架的Web模块,主要用于处理HTTP请求和响应。这个Web模块提供了一系列的注解来简化SpringMVC开发过程和请求参数绑定。其中,@RestController、@RequestMapping、@RequestBody、@RequestParam和@RequestHeader等是SpringMVC最常用的注解之一。同时,@RequestScope、@RequestAttribute和@RequestType等注解也是可选的,并且与Web上下文相关。在实际使用中可以根据具体的需求选择合适的注解来构建应用程序。
Spring框架的Web模块所有注解:
-
@Controller:将类标记为SpringMVC控制器。
-
@RestController:结合了@Controller和@ResponseBody注解的功能,表示这是一个控制器,并且返回值会直接转换为JSON或XML格式。
-
@RequestMapping:用于映射HTTP请求到特定的处理方法或控制器类上。可以指定URI、请求方法、请求头信息等等。
-
@PathVariable:从URI中获取参数值,并将其绑定到处理器方法的参数上。
-
@RequestParam:将HTTP请求参数映射到处理器方法的参数上。可以设置默认值、是否必须、参数名称等等。
-
@RequestBody:从HTTP请求体中读取参数,并将其作为Java对象进行解析。
-
@ResponseBody:表示返回值应该作为HTTP响应体的内容传输给客户端。可以指定返回内容的类型如JSON或XML。
-
@RequestHeader:获取HTTP请求头信息的值,并将其注入到处理器方法的参数上。
-
@CookieValue:获取HTTP请求中指定Cookie的值,并将其注入到处理器方法的参数上。
-
@SessionAttributes:将模型属性透明地保存在HTTP会话中,以便多个请求之间共享数据。
-
@ModelAttribute:将前端传来的数据填充到JavaBean中,并将这个Bean作为模型对象传递给处理器方法。
-
@InitBinder:自定义的数据绑定,例如将日期字符串转换为Java Date类型。
-
@ExceptionHandler:定义全局异常处理程序,可以在其中定义应该如何处理不同类型的异常。
-
@ResponseStatus:指定响应状态码和原因。
-
@SessionAttribute:将模型属性注入到HTTP会话中,以便多个请求之间共享数据。
-
@RequestPart:从HTTP请求正文中获取多部分(即文件)数据。通常情况下,使用@RequestPart注解来处理上传文件。
-
@RequestBodyAdvice:允许对@RequestBody参数进行自定义前置操作。
-
@ResponseBodyAdvice:允许对@RequestBody方法返回值进行自定义后置操作。
其中,SpringWeb模块用于处理HTTP请求和响应注解包括:
@Controller:用于将类标记为SpringMVC控制器。
@RestController:结合了@Controller和@ResponseBody注解的功能,表示这是一个控制器,并且返回值会直接转换为JSON或XML格式。
@RequestMapping:用于映射HTTP请求到特定的处理方法或控制器类上。可以指定URI、请求方法、请求头信息等等。
@PathVariable:用于从URI中获取参数值,并将其绑定到处理器方法的参数上。
@RequestParam:用于将HTTP请求参数映射到处理器方法的参数上。可以设置默认值、是否必须、参数名称等等。
@RequestBody:用于从HTTP请求体中读取参数,并将其作为Java对象进行解析。
@ResponseBody:表示返回值应该作为HTTP响应体的内容传输给客户端。可以指定返回内容的类型如JSON或XML。
@RequestHeader:用于获取HTTP请求头信息的值,并将其注入到处理器方法的参数上。
@CookieValue:用于获取HTTP请求中指定Cookie的值,并将其注入到处理器方法的参数上。
@SessionAttributes:用于将模型属性透明地保存在HTTP会话中,以便多个请求之间共享数据。
@ModelAttribute:用于将前端传来的数据填充到JavaBean中,并将这个Bean作为模型对象传递给处理器方法。
@InitBinder:用于自定义的数据绑定,例如将日期字符串转换为Java Date类型。
@ExceptionHandler:用于定义全局异常处理程序,可以在其中定义应该如何处理不同类型的异常。
这些注解提供了很多方便的功能,可以使得SpringMVC开发更加简单和高效。以下为部分代码示例。
1.@Controller
该注解用于将类标记为SpringMVC控制器。
示例代码:
@Controller
public class UserController {
//控制器方法
}
2.@RestController
该注解结合了@Controller和@ResponseBody注解的功能,表示这是一个控制器,并且返回值会直接转换为JSON或XML格式。
示例代码:
@RestController
public class UserController {
//控制器方法
}
3.@RequestMapping
该注解用于映射HTTP请求到特定的处理方法或控制器类上。可以指定URI、请求方法、请求头信息等等。
示例代码:
@RequestMapping(value = "/user", method = RequestMethod.GET)
public String getUser(@RequestParam("id") int id) {
//处理请求方法
}
4.@PathVariable
该注解用于从URI中获取参数值,并将其绑定到处理器方法的参数上。
示例代码:
@RequestMapping(value = "/user/{id}", method = RequestMethod.GET)
public String getUser(@PathVariable("id") int id) {
//处理请求方法
}
5.@RequestParam
该注解用于将HTTP请求参数映射到处理器方法的参数上。可以设置默认值、是否必须、参数名称等等。
示例代码:
@RequestMapping(value = "/user", method = RequestMethod.GET)
public String getUser(@RequestParam("id") int id) {
//处理请求方法
}
6.@RequestBody
该注解用于从HTTP请求体中读取参数,并将其作为Java对象进行解析。
示例代码:
@RequestMapping(value = "/user", method = RequestMethod.POST)
public void addUser(@RequestBody User user) {
//处理请求方法
}
7.@ResponseBody
该注解表示返回值应该作为HTTP响应体的内容传输给客户端。可以指定返回内容的类型如JSON或XML。
示例代码:
@RequestMapping(value = "/user/{id}", method = RequestMethod.GET)
@ResponseBody
public User getUser(@PathVariable("id") int id) {
//处理请求方法
}
8.@RequestHeader
该注解用于获取HTTP请求头信息的值,并将其注入到处理器方法的参数上。
示例代码:
@RequestMapping(value = "/user", method = RequestMethod.GET)
public String getUser(@RequestHeader("User-Agent") String userAgent) {
//处理请求方法
}
9.@CookieValue
该注解用于获取HTTP请求中指定Cookie的值,并将其注入到处理器方法的参数上。
示例代码:
@RequestMapping(value = "/user", method = RequestMethod.GET)
public String getUser(@CookieValue("username") String username) {
//处理请求方法
}
10.@SessionAttributes
该注解用于将模型属性透明地保存在HTTP会话中,以便多个请求之间共享数据。
示例代码:
@Controller
@SessionAttributes("user")
public class UserController {
//控制器方法
}
11.@ModelAttribute
该注解用于将前端传来的数据填充到JavaBean中,并将这个Bean作为模型对象传递给处理器方法。
示例代码:
@RequestMapping(value = "/user", method = RequestMethod.POST)
public void addUser(@ModelAttribute("user") User user) {
//处理请求方法
}
12.@InitBinder
该注解用于自定义的数据绑定,例如将日期字符串转换为Java Date类型。
示例代码:
@InitBinder
public void initBinder(WebDataBinder binder) {
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
binder.registerCustomEditor(Date.class, new CustomDateEditor(dateFormat, true));
}
13.@ExceptionHandler
该注解用于定义全局异常处理程序,可以在其中定义应该如何处理不同类型的异常。
示例代码:
@ControllerAdvice
public class GlobalExceptionHandler {
@ExceptionHandler(Exception.class)
public ModelAndView handleException(Exception ex) {
ModelAndView modelAndView = new ModelAndView();
modelAndView.setViewName("error");
modelAndView.addObject("message", ex.getMessage());
return modelAndView;
}
}
补充:org.springframework.web.bind.annotation包下八个@Request注解
@RequestMapping:该注解用于将HTTP请求映射到处理器方法或控制器类。通过使用@RequestMapping注解,开发人员可以定义一个URI(或URL)模板以及与之相关联的方法或类,当用户访问该URI时,系统将自动调用相应的方法或类。
@RequestBody:该注解用于指示SpringMVC应从HTTP请求体中获取数据。它通常与@Controller、@RestController和@RequestMapping配合使用。@RequestBody注解会将HTTP请求正文中的JSON、XML或其他格式的数据绑定到Java对象上。
@RequestScope:该注解用于标注Bean的生命周期作用域为请求级别。这意味着在同一HTTP请求中,多个bean实例将共享相同的请求属性。在使用注解创建bean时,很有用。
@RequestAttribute:该注解用于标注请求属性。通过使用@RequestAttribute注解,我们可以将请求属性映射到处理程序方法的参数上,使得我们能够方便地获取请求的属性信息。
@RequestHeader:该注解用于指定请求头信息。使用@RequestHeader注解时,可以将指定的请求头信息值注入到目标方法的参数中。
@RequestType():该注解用于指示请求的类型。例如,如果您想限制请求只接受POST请求,则可以使用@RequestType(value="POST")注解。
@RequestParam:该注解用于将HTTP请求参数映射到处理程序方法的参数上。@RequestParam可以用于处理单个请求参数或多个参数,它可以指定必需的参数和默认值,以及请求参数名称等。
@RequestPart:该注解用于从HTTP请求正文中获取多部分(即文件)数据。通常情况下,使用@RequestPart注解来处理上传文件。