Spring MVC有哪些接收参数的方法呢?
Spring MVC中Controller接收参数有很多种方式,有用于get方式,有用于post方式,下面将列举常用的方式,如下所示:
注意事项:Bean属性名称须同请求参数名称相同
如下
@RequestMapping("/login")
public String login(User user, Model model) {
if ("userJava265".equals(user.getName())
&& "pwd123456".equals(user.getPwd())) {
model.addAttribute("message", "登录成功");
return "main"; // 登录成功,跳转到 main.jsp
} else {
model.addAttribute("message", "用户名或密码错误");
return "login";
}
}
此接收参数方式可用于 get及post
@RequestMapping("/login")
public String login(String name, String pwd, Model model) {
if ("userJava265".equals(user.getName())
&& "pwd123456".equals(user.getPwd())) {
model.addAttribute("message", "登录成功");
return "main"; // 登录成功,跳转到 main.jsp
} else {
model.addAttribute("message", "用户名或密码错误");
return "login";
}
}
@RequestMapping("/login")
public String login(HttpServletRequest request, Model model) {
String name = request.getParameter("name");
String pwd = request.getParameter("pwd");
if ("userJava265".equals(name)
&& "pwd123456".equals(pwd)) {
model.addAttribute("message", "登录成功");
return "main"; // 登录成功,跳转到 main.jsp
} else {
model.addAttribute("message", "用户名或密码错误");
return "login";
}
}
@RequestMapping("/login/{name}/{pwd}")
public String login(@PathVariable String name, @PathVariable String pwd, Model model) {
if ("userJava265".equals(name)
&& "pwd123456".equals(pwd)) {
model.addAttribute("message", "登录成功");
return "main"; // 登录成功,跳转到 main.jsp
} else {
model.addAttribute("message", "用户名或密码错误");
return "login";
}
}
在访问“http://localhost:8080/springMVCDemo/login/userJava265/pwd123456”路径访问时,
以上代码,则会自动将 {name} 和 {pwd} 绑定到通过 @PathVariable 注解的同名参数上
即 name=userJava265、pwd=pwd123456
value:参数名
required:是否必须,默认为 true,表示请求中必须包含对应的参数名,若不存在将抛出异常
defaultValue:参数默认值
通过 @RequestParam 接收请求参数适用于 get 和 post 提交请求方式,示例代码如下。
@RequestMapping("/login")
public String login(@RequestParam String name, @RequestParam String pwd, Model model) {
if ("userJava265".equals(name)
&& "pwd123456".equals(pwd)) {
model.addAttribute("message", "登录成功");
return "main"; // 登录成功,跳转到 main.jsp
} else {
model.addAttribute("message", "用户名或密码错误");
return "login";
}
}
注意事项:当形参和请求参数名称不同时,则会报404错误
而“通过实体 Bean 接收请求参数”中只是将多个请求参数封装到一个实体对象,
并不能暴露为模型数据(需要使用 model.addAttribute 语句才能暴露为模型数据 )。
使用 @ModelAttribute 注解接收请求参数适用于 get 和 post 提交请求方式
@RequestMapping("/login")
public String login(@ModelAttribute("user") User user, Model model) {
if ("userJava265".equals(name)
&& "pwd123456".equals(pwd)) {
model.addAttribute("message", "登录成功");
return "main"; // 登录成功,跳转到 main.jsp
} else {
model.addAttribute("message", "用户名或密码错误");
return "login";
}
}
- 使用实体 Bean 接收请求参数
- 使用处理方法的形参接收请求参数
- 使用HttpServletRequest 接收请求参数
- 使用@PathVariable 接收 URL 中的请求参数
- 使用@RequestParam 接收请求参数
- 使用@ModelAttribute 接收请求参数
一、使用实体Bean接收请求参数
采用实体Bean接收请求参数可用于 get 和 post 提交请求方式注意事项:Bean属性名称须同请求参数名称相同
如下
@RequestMapping("/login")
public String login(User user, Model model) {
if ("userJava265".equals(user.getName())
&& "pwd123456".equals(user.getPwd())) {
model.addAttribute("message", "登录成功");
return "main"; // 登录成功,跳转到 main.jsp
} else {
model.addAttribute("message", "用户名或密码错误");
return "login";
}
}
二、采用方法的形参接收参数
注意事项:形参名称同请求参数名称完全相同此接收参数方式可用于 get及post
@RequestMapping("/login")
public String login(String name, String pwd, Model model) {
if ("userJava265".equals(user.getName())
&& "pwd123456".equals(user.getPwd())) {
model.addAttribute("message", "登录成功");
return "main"; // 登录成功,跳转到 main.jsp
} else {
model.addAttribute("message", "用户名或密码错误");
return "login";
}
}
三、借助HttpServletRequest对象接收请求参数
采用HttpServletRequest 接收请求参数适用于 get 和 post 提交请求方式@RequestMapping("/login")
public String login(HttpServletRequest request, Model model) {
String name = request.getParameter("name");
String pwd = request.getParameter("pwd");
if ("userJava265".equals(name)
&& "pwd123456".equals(pwd)) {
model.addAttribute("message", "登录成功");
return "main"; // 登录成功,跳转到 main.jsp
} else {
model.addAttribute("message", "用户名或密码错误");
return "login";
}
}
四、使用@PathVariable接收URL中的请求参数
@RequestMapping("/login/{name}/{pwd}")
public String login(@PathVariable String name, @PathVariable String pwd, Model model) {
if ("userJava265".equals(name)
&& "pwd123456".equals(pwd)) {
model.addAttribute("message", "登录成功");
return "main"; // 登录成功,跳转到 main.jsp
} else {
model.addAttribute("message", "用户名或密码错误");
return "login";
}
}
在访问“http://localhost:8080/springMVCDemo/login/userJava265/pwd123456”路径访问时,
以上代码,则会自动将 {name} 和 {pwd} 绑定到通过 @PathVariable 注解的同名参数上
即 name=userJava265、pwd=pwd123456
五、使用@RequestParam接收请求参数
在方法入参处使用 @RequestParam 注解指定其对应的请求参数。@RequestParam 有以下三个参数:value:参数名
required:是否必须,默认为 true,表示请求中必须包含对应的参数名,若不存在将抛出异常
defaultValue:参数默认值
通过 @RequestParam 接收请求参数适用于 get 和 post 提交请求方式,示例代码如下。
@RequestMapping("/login")
public String login(@RequestParam String name, @RequestParam String pwd, Model model) {
if ("userJava265".equals(name)
&& "pwd123456".equals(pwd)) {
model.addAttribute("message", "登录成功");
return "main"; // 登录成功,跳转到 main.jsp
} else {
model.addAttribute("message", "用户名或密码错误");
return "login";
}
}
注意事项:当形参和请求参数名称不同时,则会报404错误
六、使用@ModelAttribute接收请求参数
@ModelAttribute 注解用于将多个请求参数封装到一个实体对象中,从而简化数据绑定流程,而且自动暴露为模型数据,在视图页面展示时使用。而“通过实体 Bean 接收请求参数”中只是将多个请求参数封装到一个实体对象,
并不能暴露为模型数据(需要使用 model.addAttribute 语句才能暴露为模型数据 )。
使用 @ModelAttribute 注解接收请求参数适用于 get 和 post 提交请求方式
@RequestMapping("/login")
public String login(@ModelAttribute("user") User user, Model model) {
if ("userJava265".equals(name)
&& "pwd123456".equals(pwd)) {
model.addAttribute("message", "登录成功");
return "main"; // 登录成功,跳转到 main.jsp
} else {
model.addAttribute("message", "用户名或密码错误");
return "login";
}
}
版权声明
本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。