详解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日

相关文章

  • mybatis插件pageHelper实现分页效果

    Mybatis插件PageHelper实现分页效果攻略 1. 前言 Mybatis是一个优秀的ORM框架,但默认不支持分页功能。如果我们想要在Mybatis中实现分页功能,需要手动在SQL语句中添加limit关键字等分页功能代码,这显然是非常繁琐和困难的,而PageHelper插件的出现解决了这一问题。本文将详细介绍如何使用PageHelper插件实现Myb…

    Java 2023年6月15日
    00
  • ASP连接SQL2005数据库连接代码

    要连接SQL Server 2005数据库,可以使用以下四种方式: 使用SQL Server Management Studio(SSMS):在SSMS中,您可以轻松地打开数据库,并使用查询编辑器中提供的标准SQL语言编写查询。SSMS还包括一个用于管理数据库和服务器设置的多种选项。 使用ODBC驱动程序:这是一个基础的数据库驱动程序,用于通过SQL语言连接…

    Java 2023年6月15日
    00
  • JSP实现简单人事管理系统

    JSP是一种基于Java的Web开发技术,它可以让我们在页面中嵌套Java代码,实现动态生成HTML页面,开发出更加灵活的Web应用程序。在这里,我将详细讲解使用JSP实现简单人事管理系统的完整攻略。下面分为以下步骤: 创建数据库表 创建JavaBean 创建JSP页面 配置Web应用程序 1. 创建数据库表 首先,我们需要创建一个数据库表,用于存储人事管理…

    Java 2023年6月15日
    00
  • springboot 2.3之后消失的hibernate-validator解决方法

    下面是详细的攻略: 问题背景 在Spring Boot 2.3版本之后,引入了一个新的starter库,名为validation-starter,用于提供Java Bean的数据校验功能。同时,hibernate-validator也被移出了Spring Boot的核心依赖,这导致运行时找不到这个库,会报出ClassNotFoundException的错误。…

    Java 2023年5月20日
    00
  • 基于Java SpringBoot的前后端分离信息管理系统的设计和实现

    基于Java SpringBoot的前后端分离信息管理系统的设计和实现 背景介绍 基于Java SpringBoot的前后端分离信息管理系统是一种常见的Web应用开发模式,它能够通过前后端分离的方式,实现代码的解耦,提高应用的开发效率和可维护性。本文将详细介绍如何设计和实现一个基于Java SpringBoot的前后端分离信息管理系统。 系统设计 本系统采用…

    Java 2023年5月19日
    00
  • java类加载机制、类加载器、自定义类加载器的案例

    Java类加载机制 Java的类加载机制是指将Java程序中的类(class)文件从磁盘加载到内存中,并使其能够被JVM执行的过程。Java类加载机制的目的在于实现代码的动态加载和代码的隔离,从而保证Java程序的安全性。 Java类加载机制可以分为三个部分,即类的加载、连接和初始化。其中,类的加载是指将字节码文件从文件系统或网络中读入到内存中;类的连接是指…

    Java 2023年6月15日
    00
  • Mybatis 连接mysql数据库底层运行的原理分析

    下面我将介绍“Mybatis 连接mysql数据库底层运行的原理分析”的完整攻略。 概述 Mybatis 是一个优秀的数据访问框架,它支持自定义 SQL、存储过程以及高级映射。Mybatis 的底层数据库连接操作主要是由以下几个部分组成: 数据库连接池 数据源 SqlSessionFactory SqlSession 接下来我们将分别对这些部分进行详细的解析…

    Java 2023年5月20日
    00
  • spring hibernate实现动态替换表名(分表)的方法

    关于“spring hibernate实现动态替换表名(分表)的方法”,我们可以通过动态读取配置文件、使用AOP等方式实现,以下是一份完整攻略: 1. 动态读取配置文件 我们可以通过读取配置文件,获取分表策略的配置信息。这些配置信息包含了关于分表规则的全部信息,我们依据这些信息即可实现动态替换表名。 下面是一个示例: 1.1 配置文件 以XML格式作为示例,…

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