And*_*ili 0 java spring annotations spring-mvc request-mapping
我是Spring MVC的新手,我有以下疑问.
在控制器中,我有一个以这种方式注释的方法:
@Controller
@RequestMapping(value = "/users")
public class UserController {
@RequestMapping(params = "register")
public String createForm(Model model) {
model.addAttribute("user", new Customer());
return "user/register";
}
}
Run Code Online (Sandbox Code Playgroud)
所以这个方法处理HTTP请求到URL / users?寄存器,其中register是一个参数(因为整个类处理对/ users资源的请求).
如果使用params ="register"我使用以下的syntaxt 是同样的事情:
@Controller
public class UserController {
@RequestMapping("/users/{register}")
public String createForm(Model model) {
model.addAttribute("user", new Customer());
return "user/register";
}
}
Run Code Online (Sandbox Code Playgroud)
我已经删除了类级别的映射,并使用了@RequestMapping("/ users/{register}").
它与第一个例子的含义相同吗?
不,它们是完全不同的结构:
@Controller
@RequestMapping(value = "/users")
public class UserController {
@RequestMapping(params = "register")
public String createForm(Model model) {
model.addAttribute("user", new Customer());
return "user/register";
}
}
Run Code Online (Sandbox Code Playgroud)
在这种情况下,createForm当在URL处发出HTTP请求时,将调用方法/users?register.从Spring Javadoc引用,意味着无论registerHTTP参数的值是什么,都会调用此方法; 它必须存在.
还支持"myParam"样式表达式,这些参数必须存在于请求中(允许具有任何值).
@Controller
public class UserController {
@RequestMapping("/users/{register}")
public String createForm(Model model) {
model.addAttribute("user", new Customer());
return "user/register";
}
}
Run Code Online (Sandbox Code Playgroud)
在这种情况下,@RequestMapping声明register为PathVariable.createForm如果在URL处发出HTTP请求,则调用该方法/users/something,无论如何something.你可以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";
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2225 次 |
| 最近记录: |