控制器接受前台的值的方式
路径传值
@RequestMapping("/login/{id}")
public String demo(@PathVariable Long id){
...
}
通过@PathVariable就可以接受路径/login/{id}中的id值了。
From表单传值
先介绍模拟前台和实体类:
前台:
<form action="/login">
用户名:<input name="name"/>
密码:<input name="pass"/>
<input type="submit" value="登陆">
</form>
实体类:
这里定义实体类需要注意的是,对于基本数据类型的成员变量尽量声明成其对应的包装类型…
public class User{
private String name;
private String pass;
// ... get,set方法和空构造,这里以免篇幅过长省略不写,实际需要写
}
1.使用原生态的HttpServletRequest
@RequestMapping("/login")
public String login(HttpServletRequest request){
String name = request.getParameter("name")
String pass = request.getParameter("pass")
}
2.使用@RequestParam注解
@RequestMapping("/login")
public String login(HttpServletRequest request,
String name,
@RequestParam("pass")String password) // 表单属性是pass,用变量password接收
{
// 对name,和password进行操作省略
}
这里前台form的name属性值分别为name和pass,所以此时与形参不匹配的只有pass,需要使用@RequestParam注解就可以将不匹配的匹配,然后注入值。
3.利用实体类
public String login(User user)
{
String name = user.getName();
String pass = user.getPass();
}
SpringMVC会自动将表单中的值与实体类中的属性进行匹配,自动注入形参的对象中。如果与实体类的属性不匹配的话,是传不了的。