Spring MVC常用注解

简介: 枯燥的嘞

简单介绍一下

Spring MVC是一种基于Java的Web开发框架,用于开发灵活、高效的MVC(Model-View-Controller)架构的Web应用程序。它是Spring框架的一部分,通过提供一组功能强大的类和注解,可以简化Web应用程序的开发过程。

Spring MVC的核心思想是将应用程序的逻辑分成三个层:模型层(Model)、视图层(View)和控制层(Controller)。这使得开发人员可以更好地管理代码,提高代码的可维护性和可测试性。

在Spring MVC中,控制器负责处理用户请求,并根据请求调用相应的服务业务逻辑,然后将结果返回给视图层进行显示。视图层负责展示数据,并与用户进行交互。模型层则负责处理数据的获取和存储。

使用Spring MVC时,开发人员可以通过配置文件或注解来定义路由映射、请求参数绑定、验证规则等。它还提供了许多功能强大的特性,如国际化支持、文件上传、异常处理等,帮助开发人员更加轻松地构建高性能的Web应用程序。

总之,Spring MVC是一种功能强大、灵活易用的Java Web开发框架,它可以帮助开发人员快速构建高性能、可扩展的Web应用程序。

来看看常用的注解

  • @Controller
    @Controller注解通常与@RequestMapping注解一起使用,用来指定处理请求的URL路径。

  • @RequestMapping
    @RequestMapping注解是一个用于映射URL路径的注解。它可以用在控制器类上或方法上,用于指定处理请求的URL路径和HTTP请求方法。

  • @GetMapping
    @GetMapping注解是一个用于标识一个方法为HTTP GET请求的注解。它可以被应用在控制器类和方法上。
    @GetMapping注解有以下属性:

    • value:指定请求的URL路径。
    • params:指定请求必须包含的参数及其值。
    • headers:指定请求必须包含的头部信息及其值。
    • consumes:指定处理请求的Content-Type。
    • produces:指定返回结果的Content-Type。
  • @PostMapping
    @GetMapping注解是一个用于标识一个方法为HTTP POST请求的注解。它可以被应用在控制器类和方法上。

  • @PutMapping
    @PutMapping用于将HTTP PUT请求映射到相应的处理方法上。它可以用在类级别或方法级别。
    可以通过@PathVariable、@RequestParam、@RequestBody等注解来获取HTTP请求中的参数,并将其传递给处理方法。

  • @DeleteMapping
    @DeleteMapping注解是Spring Framework中的一个注解,用于将HTTP DELETE请求映射到特定的方法上。
    使用@DeleteMapping注解可以方便地定义RESTful风格的API接口。它可以与@RequestMapping注解一起使用,并指定特定的URL路径,以及可选的请求参数、请求头等条件。

  • @PathVariable
    @PathVariable用于从URL路径中提取变量值,并将其绑定到方法参数上。
    使用@PathVariable注解的方式如下:

    1. 在控制器方法的参数列表中声明一个带有@PathVariable注解的参数。
    2. 在@PathVariable注解中指定要提取的变量名,该变量名应与URL路径中的变量名相匹配。
    3. 当请求到达控制器方法时,Spring MVC会自动将URL路径中对应的变量值传递给带有@PathVariable注解的参数。
  • @RequestParam
    @RequestParam用于将请求参数绑定到方法的参数上。
    使用@RequestParam注解可以将HTTP请求中的请求参数与方法的参数进行绑定。它有以下几个常用的属性:

    • value:指定请求参数的名称,可以通过该属性来指定请求参数的名称。
    • required:指定该参数是否为必需的,默认为true,表示该参数必须传递,如果未传递则会抛出异常;设置为false时,表示该参数可以不传递。
    • defaultValue:指定该参数的默认值,在请求参数未传递时使用默认值。
  • @RequestBody
    @RequestBody用于指定方法参数应该从HTTP请求的主体中获取。
    在Spring MVC中,@RequestBody注解可以用于处理POST请求的请求体。它可以将请求体的内容绑定到方法参数上,并将其转换为对应的Java对象。
    需要注意的是,@RequestBody注解只能用于POST请求,并且请求体必须是有效的JSON格式数据。如果请求体不是有效的JSON格式,或者请求的Content-Type与@RequestBody注解指定的参数类型不匹配,那么会导致请求失败。

  • @ResponseBody
    @ResponseBody用于标记某个方法返回的结果直接作为HTTP响应体的内容,而不是视图名或模型对象。当使用@ResponseBody注解时,Spring会自动将方法返回的对象转化为JSON、XML等格式的数据,并通过HTTP响应发送给客户端。
    通常情况下,Spring MVC框架会根据方法的返回值类型来决定如何处理返回结果:如果方法返回的是字符串类型,Spring会将其作为视图名进行解析;如果方法返回的是Java对象,Spring会将其作为模型对象返回给视图进行渲染。但是当使用@ResponseBody注解时,无论方法返回的是什么类型的数据,都会被作为HTTP响应的内容发送给客户端,而不会经过视图解析器进行处理。
    使用@ResponseBody注解可以实现将任意类型的数据直接返回给客户端,通常用于开发RESTful风格的API接口。在方法上添加@ResponseBody注解后,可以省略掉使用@RestController注解,因为@ResponseBody已经包含了@RestController的功能。

  • @ModelAttribute

    @ModelAttribute用于将请求参数绑定到控制器方法的参数上。当一个控制器方法被调用时,@ModelAttribute注解会根据请求参数的名称和控制器方法的参数类型来自动匹配并绑定请求参数。

    使用@ModelAttribute注解可以实现以下功能:

    • 数据绑定:通过将请求参数与控制器方法的参数进行绑定,可以将请求参数的值传递给控制器方法进行处理。

    • 表单回显:当使用表单提交数据时,可以使用@ModelAttribute注解将表单数据绑定到控制器方法的参数上,并在页面渲染时将参数的值回显到页面上。

    • 模型属性传递:当需要在多个控制器方法之间共享数据时,可以使用@ModelAttribute注解将数据设置为模型属性,该属性将会自动添加到请求的模型中,从而可以在不同的控制器方法中访问该数据。

  • @SessionAttribute

    @SessionAttribute是一用于将指定的属性存储在会话中。当使用@ModelAttribute注解时,Spring会先尝试从会话中查找与@SessionAttribute注解相匹配的属性,如果找到则将其赋值给对应的参数或方法参数,否则会创建一个新的实例并存储在会话中。

    使用@SessionAttribute注解时,需要在控制器类上添加@SessionAttributes注解,以指定哪些属性需要存储在会话中。

    请注意,在使用@SessionAttribute注解时,要确保在每个请求处理方法结束后,通过调用SessionStatus的setComplete()方法来清除会话中存储的属性。这可以避免潜在的会话泄漏和不一致。

  • @InitBinder

    @InitBinder它用于初始化WebDataBinder对象。

    在Spring MVC中,WebDataBinder对象用于将请求参数绑定到Controller方法的参数上。通过使用@InitBinder注解,我们可以指定一个方法在每次请求之前被调用,用来自定义WebDataBinder对象的初始化行为。

    使用@InitBinder注解时,需要创建一个带有@InitBinder注解的方法,并传入一个WebDataBinder参数。在这个方法中,我们可以对WebDataBinder对象进行一些自定义操作,比如设置格式化器、校验器等。

    @InitBinder注解只能用于标注非静态、无返回值且带有一个WebDataBinder参数的方法。这个方法将在每次请求之前被调用,用于初始化WebDataBinder对象。

  • @ExceptionHandler

    @ExceptionHandler 注解是一个用于处理异常注解。

    在 Spring MVC 中,我们可以使用 @ExceptionHandler 注解来处理控制器中抛出的特定类型的异常。当控制器方法抛出被 @ExceptionHandler 注解标记的异常时,Spring 将会自动调用带有 @ExceptionHandler 注解的方法来处理该异常。

    @ExceptionHandler 注解可以应用于整个控制器类或特定的控制器方法上。如果应用于控制器类上,则表示该类中的所有控制器方法都将采用相同的异常处理逻辑。如果应用于控制器方法上,则表示该方法将具有特定的异常处理逻辑。

    使用 @ExceptionHandler 注解时,需要指定要处理的异常类型。可以通过多次使用 @ExceptionHandler 注解来处理多个不同的异常类型。

    在使用 @ExceptionHandler 注解处理异常时,还可以通过方法参数传递异常信息。例如,可以将 HttpServletRequest 或 HttpServletResponse 对象作为方法参数,以便在处理异常时获取相关的请求或响应信息。

相关文章
|
17天前
|
Java 开发者 Spring
【SpringBoot 异步魔法】@Async 注解:揭秘 SpringBoot 中异步方法的终极奥秘!
【8月更文挑战第25天】异步编程对于提升软件应用的性能至关重要,尤其是在高并发环境下。Spring Boot 通过 `@Async` 注解简化了异步方法的实现。本文详细介绍了 `@Async` 的基本用法及配置步骤,并提供了示例代码展示如何在 Spring Boot 项目中创建与管理异步任务,包括自定义线程池、使用 `CompletableFuture` 处理结果及异常情况,帮助开发者更好地理解和运用这一关键特性。
83 1
|
26天前
|
XML Java 测试技术
Spring5入门到实战------17、Spring5新功能 --Nullable注解和函数式注册对象。整合JUnit5单元测试框架
这篇文章介绍了Spring5框架的三个新特性:支持@Nullable注解以明确方法返回、参数和属性值可以为空;引入函数式风格的GenericApplicationContext进行对象注册和管理;以及如何整合JUnit5进行单元测试,同时讨论了JUnit4与JUnit5的整合方法,并提出了关于配置文件加载的疑问。
Spring5入门到实战------17、Spring5新功能 --Nullable注解和函数式注册对象。整合JUnit5单元测试框架
|
14天前
|
缓存 Java 数据库连接
Spring Boot奇迹时刻:@PostConstruct注解如何成为应用初始化的关键先生?
【8月更文挑战第29天】作为一名Java开发工程师,我一直对Spring Boot的便捷性和灵活性着迷。本文将深入探讨@PostConstruct注解在Spring Boot中的应用场景,展示其在资源加载、数据初始化及第三方库初始化等方面的作用。
42 0
|
21天前
|
Java 数据库连接 Spring
后端框架入门超详细 三部曲 Spring 、SpringMVC、Mybatis、SSM框架整合案例 【爆肝整理五万字】
文章是关于Spring、SpringMVC、Mybatis三个后端框架的超详细入门教程,包括基础知识讲解、代码案例及SSM框架整合的实战应用,旨在帮助读者全面理解并掌握这些框架的使用。
后端框架入门超详细 三部曲 Spring 、SpringMVC、Mybatis、SSM框架整合案例 【爆肝整理五万字】
|
26天前
|
XML JSON 数据库
SpringMVC入门到实战------七、RESTful的详细介绍和使用 具体代码案例分析(一)
这篇文章详细介绍了RESTful的概念、实现方式,以及如何在SpringMVC中使用HiddenHttpMethodFilter来处理PUT和DELETE请求,并通过具体代码案例分析了RESTful的使用。
SpringMVC入门到实战------七、RESTful的详细介绍和使用 具体代码案例分析(一)
|
26天前
|
Java 数据安全/隐私保护 Spring
揭秘Spring Boot自定义注解的魔法:三个实用场景让你的代码更加优雅高效
揭秘Spring Boot自定义注解的魔法:三个实用场景让你的代码更加优雅高效
|
24天前
|
前端开发 应用服务中间件 数据库
SpringMVC入门到实战------八、RESTful案例。SpringMVC+thymeleaf+BootStrap+RestFul实现员工信息的增删改查
这篇文章通过一个具体的项目案例,详细讲解了如何使用SpringMVC、Thymeleaf、Bootstrap以及RESTful风格接口来实现员工信息的增删改查功能。文章提供了项目结构、配置文件、控制器、数据访问对象、实体类和前端页面的完整源码,并展示了实现效果的截图。项目的目的是锻炼使用RESTful风格的接口开发,虽然数据是假数据并未连接数据库,但提供了一个很好的实践机会。文章最后强调了这一章节主要是为了练习RESTful,其他方面暂不考虑。
SpringMVC入门到实战------八、RESTful案例。SpringMVC+thymeleaf+BootStrap+RestFul实现员工信息的增删改查
|
26天前
|
XML Java 数据库
Spring5入门到实战------15、事务操作---概念--场景---声明式事务管理---事务参数--注解方式---xml方式
这篇文章是Spring5框架的实战教程,详细介绍了事务的概念、ACID特性、事务操作的场景,并通过实际的银行转账示例,演示了Spring框架中声明式事务管理的实现,包括使用注解和XML配置两种方式,以及如何配置事务参数来控制事务的行为。
Spring5入门到实战------15、事务操作---概念--场景---声明式事务管理---事务参数--注解方式---xml方式
|
26天前
|
XML 数据库 数据格式
Spring5入门到实战------14、完全注解开发形式 ----JdbcTemplate操作数据库(增删改查、批量增删改)。具体代码+讲解 【终结篇】
这篇文章是Spring5框架的实战教程的终结篇,介绍了如何使用注解而非XML配置文件来实现JdbcTemplate的数据库操作,包括增删改查和批量操作,通过创建配置类来注入数据库连接池和JdbcTemplate对象,并展示了完全注解开发形式的项目结构和代码实现。
Spring5入门到实战------14、完全注解开发形式 ----JdbcTemplate操作数据库(增删改查、批量增删改)。具体代码+讲解 【终结篇】
|
26天前
|
XML Java 数据格式
Spring5入门到实战------8、IOC容器-Bean管理注解方式
这篇文章详细介绍了Spring5框架中使用注解进行Bean管理的方法,包括创建Bean的注解、自动装配和属性注入的注解,以及如何用配置类替代XML配置文件实现完全注解开发。
Spring5入门到实战------8、IOC容器-Bean管理注解方式