详解springmvc常用5种注解

让我们来详解一下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技术站

(0)
上一篇 2023年6月15日
下一篇 2023年6月15日

相关文章

  • java 如何将多种字符串格式 解析为Date格式

    要将多种字符串格式解析为Date格式,可以借助Java中的SimpleDateFormat类来实现。下面是完整的攻略: 确认要解析的日期字符串的格式在解析日期字符串之前,需要先确认要解析的日期字符串的格式。Java中通常使用日期格式化字符串来表示不同格式的日期字符串。例如,“yyyy-MM-dd HH:mm:ss”表示年份-月份-日时:分:秒的日期格式,而“…

    Java 2023年5月20日
    00
  • 关于Spring Data Jpa 自定义方法实现问题

    关于Spring Data JPA自定义方法实现问题的攻略包含以下内容。 什么是Spring Data JPA自定义方法? Spring Data JPA是Spring Data项目的一个子项目,它是对JPA(Java Persistence API)的扩展和实现,让我们能够更方便地操作数据库。其中自定义方法是指通过JPA的命名规则或通过@Query注解实现…

    Java 2023年6月2日
    00
  • 常见的Atomic类有哪些?

    当我们使用多线程编程时,为了保证多线程程序的正确性和同步性,我们很常使用 Atomic 类型来进行操作。Atomic 类可以保证某个操作的原子性,避免数据竞争等问题。在Java中,Java.util.concurrent.atomic 包下提供了一些常见的 Atomic 类。接下来,我将会具体讲解这些 Atomic 类的使用方法和注意事项。 AtomicIn…

    Java 2023年5月11日
    00
  • JDBC大批量写入数据到SQLServer2000,记录数大于10000

    JDBC是Java DataBase Connectivity的简称,提供了一种连接Java应用程序和不同关系型数据库的标准方式,SQLServer2000是Microsoft SQL Server 2000的简称,是一种关系型数据库类型。在使用JDBC连接SQLServer2000时,如果需要大量写入数据,需要注意以下几点: 设置批处理大小 在JDBC中,…

    Java 2023年6月16日
    00
  • Java ArrayList深入源码层分析

    Java ArrayList深入源码层分析 简介 ArrayList 是 Java 中集合框架中最基础、最常用的一种数据结构,它基于数组实现,可以动态扩容,支持添加、删除、查找等操作。本文将对 ArrayList 的源码进行深入分析,讲解其内部实现原理。 类的继承关系 ArrayList 类位于 java.util 包下,继承于 AbstractList 类…

    Java 2023年5月26日
    00
  • java开发CPU流水线与指令乱序执行详解

    Java开发CPU流水线与指令乱序执行详解 一、流水线 CPU流水线可以看做是一个包含若干个处理单元的管道。每个处理单元都负责处理某一部分的指令。在流水线工作时,每个指令在依次经过不同的处理单元,每个处理单元都对指令做出部分处理,最终合起来完成指令的执行。由于每个处理单元都是独立的,它们可以并行处理不同的指令,这样就可以避免CPU空转,提高CPU的利用率。 …

    Java 2023年5月26日
    00
  • cookie+mybatis+servlet实现免登录时长两天半的整体流程

    首先,我们需要了解cookie,MyBatis和Servlet的基本知识。Cookie是存储在客户端的小型文本文件,用于在客户端和服务器之间传递信息。MyBatis是一种ORM框架,用于将Java对象映射到数据库表。Servlet是Java编写Web应用程序的技术。 实现免登录时长两天半的整体流程如下: 用户访问您的网站,并输入用户名和密码。 在服务器端,检…

    Java 2023年6月15日
    00
  • 解析Java中的Field类和Method类

    解析Java中的Field类和Method类攻略 什么是Field类和Method类 Field类和Method类都是Java反射的重要组成部分。Field类代表一个类或者接口的属性(成员变量),Method类代表一个类或者接口中的方法。 使用这两个类可以在运行时获取并操作类或接口中的属性和方法信息。 如何使用Field类 在Java中,每个类都有它的属性(…

    Java 2023年5月26日
    00
合作推广
合作推广
分享本页
返回顶部