SpringMVC注解

当我们使用SpringMVC开发应用程序时,注解是一个非常强大和方便的工具。它们可以帮助我们简化代码,提高开发效率。

  1. @Controller@RequestMapping

@Controller注解用于标识一个类作为控制器。该类中的方法可以使用@RequestMapping注解来指定处理的URL路径。

java 复制代码
@Controller
@RequestMapping("/hello")
public class HelloController {

    @RequestMapping("/world")
    public String helloWorld(Model model) {
        model.addAttribute("message", "Hello, World!");
        return "hello";
    }
}

在上面的代码中,@Controller注解标识HelloController类作为控制器。@RequestMapping注解指定了处理的URL路径为"/hello/world"。当用户访问该路径时,helloWorld方法会被调用。该方法将数据"Hello, World!"添加到Model中,并返回逻辑视图名"hello"。

  1. @RequestParam@PathVariable

@RequestParam注解用于从请求参数中获取值。它可以指定参数的名称、是否必需以及默认值。

java 复制代码
@RequestMapping("/greet")
public String greetUser(@RequestParam("name") String name, Model model) {
    model.addAttribute("message", "Hello, " + name + "!");
    return "greeting";
}

在上面的代码中,@RequestParam注解指定了从请求参数中获取名为"name"的值。name参数是必需的,如果没有提供,默认值为null。在greetUser方法中,我们将该值添加到Model中,并返回逻辑视图名"greeting"。

@PathVariable注解用于从URL路径中获取值。它可以指定路径的一部分作为方法的参数。

java 复制代码
@RequestMapping("/users/{id}")
public String getUser(@PathVariable("id") int id, Model model) {
    // 根据id获取用户信息
    User user = userService.getUserById(id);
    model.addAttribute("user", user);
    return "user";
}

在上面的代码中,@PathVariable注解指定了从URL路径中获取名为"id"的值。在getUser方法中,我们使用该值来获取用户信息,并将其添加到Model中。最后,我们返回逻辑视图名"user"。

  1. @ResponseBody@RequestBody

@ResponseBody注解用于将方法的返回值直接作为响应体返回给客户端,而不是解析为视图。

java 复制代码
@RequestMapping("/api/users")
@ResponseBody
public List<User> getUsers() {
    // 获取所有用户信息
    List<User> users = userService.getAllUsers();
    return users;
}

在上面的代码中,@ResponseBody注解指定了将方法的返回值直接作为响应体返回给客户端。在getUsers方法中,我们获取所有用户信息,并直接将它们返回。

@RequestBody注解用于将请求体的内容绑定到方法参数上。

java 复制代码
@RequestMapping(value = "/api/users", method = RequestMethod.POST)
@ResponseBody
public User createUser(@RequestBody User user) {
    // 创建用户
    userService.createUser(user);
    return user;
}

在上面的代码中,@RequestBody注解指定了将请求体的内容绑定到User对象上。在createUser方法中,我们创建用户,并将其返回。

以上是一些常用的SpringMVC注解的示例。

相关推荐
武子康1 小时前
Java-72 深入浅出 RPC Dubbo 上手 生产者模块详解
java·spring boot·分布式·后端·rpc·dubbo·nio
椰椰椰耶2 小时前
【Spring】拦截器详解
java·后端·spring
brzhang3 小时前
我操,终于有人把 AI 大佬们 PUA 程序员的套路给讲明白了!
前端·后端·架构
wan_da_ren6 小时前
JVM监控及诊断工具-GUI篇
java·开发语言·jvm·后端
【本人】6 小时前
Django基础(一)———创建与启动
后端·python·django
lifallen6 小时前
Kafka 时间轮深度解析:如何O(1)处理定时任务
java·数据结构·分布式·后端·算法·kafka
你的人类朋友7 小时前
【✈️速通】什么是SIT,什么是UAT?
后端·单元测试·测试
程序无bug9 小时前
后端3行代码写出8个接口!
java·后端
绝无仅有9 小时前
使用LNMP一键安装包安装PHP、Nginx、Redis、Swoole、OPcache
后端·面试·github
他日若遂凌云志9 小时前
C++ 与 Lua 交互全链路解析:基于Lua5.4.8的源码剖析
后端