gpt4 book ai didi

java - 两个@RequestMapping注解的区别

转载 作者:行者123 更新时间:2023-12-01 07:54:16 25 4
gpt4 key购买 nike

我是 Spring MVC 的新手,我有以下疑问。

在 Controller 中,我有一个以这种方式注释的方法:

@Controller
@RequestMapping(value = "/users")
public class UserController {

@RequestMapping(params = "register")
public String createForm(Model model) {
model.addAttribute("user", new Customer());
return "user/register";
}

}

因此,此方法处理对 URL /users?register 的 HTTP 请求,其中 register 是一个参数(因为整个类处理对 /users 的请求)强>资源)。

如果我使用以下语法而不是使用params =“register”,这是否是同样的事情:

@Controller
public class UserController {

@RequestMapping("/users/{register}")
public String createForm(Model model) {
model.addAttribute("user", new Customer());
return "user/register";
}

}

我已删除类级别的映射,并使用 @RequestMapping("/users/{register}")

和第一个例子的意思一样吗?

最佳答案

不,它们是完全不同的结构:

代码1

@Controller
@RequestMapping(value = "/users")
public class UserController {

@RequestMapping(params = "register")
public String createForm(Model model) {
model.addAttribute("user", new Customer());
return "user/register";
}

}

在这种情况下,当在 URL /users?register 发出 HTTP 请求时,将调用 createForm 方法。引用自Spring Javadoc ,这意味着无论 register HTTP 参数的值是什么,都会调用此方法;它只需要存在即可。

"myParam" style expressions are also supported, with such parameters having to be present in the request (allowed to have any value).

代码2

@Controller
public class UserController {

@RequestMapping("/users/{register}")
public String createForm(Model model) {
model.addAttribute("user", new Customer());
return "user/register";
}

}

在本例中,@RequestMappingregister 声明为 PathVariable 。如果在 URL /users/something 处发出 HTTP 请求,则将调用 createForm 方法,无论 something 是什么。您实际上可以像这样检索这个东西:

@RequestMapping("/users/{register}")
public String createForm(@PathVariable("register") String register, Model model) {
// here "register" will have value "something".
model.addAttribute("user", new Customer());
return "user/register";
}

关于java - 两个@RequestMapping注解的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32298598/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com