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注解的示例。

相关推荐
庞轩px13 小时前
第七篇:Spring扩展点——如何优雅地介入Bean的创建流程
java·后端·spring·bean·aware·扩展点
ltl13 小时前
Q/K/V 三件套:把 Bahdanau 抽象成一个公式
后端
千叶风行15 小时前
Text-to-SQL 技术设计与注意事项
前端·人工智能·后端
阿kun要赚马内16 小时前
后端数据操作组合:Pydantic与ORM
后端·python·orm·sqlalchemy
花米徐17 小时前
技术洞察精选 | 2026年4月28日 — 5月4日
后端·python·flask
阿维的博客日记17 小时前
Spring Cloud 为什么需要服务注册与发现中心这些东西?
后端·spring·spring cloud
笑而不语17 小时前
13|元数据过滤检索:UserContext 与按用户查知识
后端
用户0953675158318 小时前
Go:浮点数如何进行比较?
后端·go
Zeus_18 小时前
如何更好的创建skill
后端
千云18 小时前
AI Coding 落地探索日志 · 初篇 · 启程记
后端·ai编程