【02】SpringMVC笔记–参数绑定
文章目录
参数绑定的类型
1)页面链接传入的参数
<a href="params/testParam?username=Yang&age=12">参数绑定</a>
带注解的Controller方法
提交的参数名和方法参数名称和类型都要一致
@Controller
//设置一级路径,那么方法上就是二级路径
@RequestMapping("/params")
public class ParamsController {
@RequestMapping("/testParam")
public String testParam(String username,Integer age){
System.out.println("年龄:"+age+" 用户名:"+username);
return "success";
}
}
2)表单提交的参数封装为JavaBean
表单:提交的name属性值要和 bean中的属性值名称相对应
只需要通过一个bean对象作为参数就可以直接封装到内部属性
Account实体类:
public class Account implements Serializable {
private String username;
private String password;
private Double money;
//注意:这里还有一个User对象
private User user;
//getter(),setter(),toString()
}
前台表单:
<form action="params/addAccount" method="post">
<%--
注:这里的name值要和JavaBean的属性名一样。
如果属性里面还有对象,比如User,要使用“."的方式获取属性
--%>
用户名:<input type="text" name="username"><br>
密码:<input type="text" name="password"><br>
金额:<input type="text" name="money"><br>
<%-- 注意这里name值的书写方式--%>
姓名:<input type="text" name="user.uname"><br>
年龄:<input type="text" name="user.age"><br>
<input type="submit" value="提交">
</form>
Controller类:通过一个Account对象接收表单数据
@Controller
@RequestMapping("/params")
public class ParamsController {
@RequestMapping("addAccount")
public String addAccount(Account account){
System.out.println("添加成功!!");
return "success";
}
}
3)页面提交的参数封装到List
,Map
通过页面提交一个用户和多个账户,并把多个账户分别放到
User
对象的List<User>
和Map<String,User>
中
User
类
public class User implements Serializable {
private String uname;
private Integer age;
//自定义类型转换
private Date birthday;
//提交表单。里面有集合数据如何封装
private List<Account> accounts;
private Map<String,Account> myMap;
//getter(),setter(),toString()
}
前台表单:注意<input>
标签内name属性值的书写方式
<form action="params/testSubmitList" method="post">
<%--注:这里的name值要和JavaBean的属性名一样。
如果属性里面还有对象,比如User,要使用“."的方式获取属性--%>
姓名:<input type="text" name="uname"><br>
年龄:<input type="text" name="age"><br><br>
账户1放到List<br>
用户名1:<input type="text" name="accounts[0].username"><br>
密码1:<input type="text" name="accounts[0].password"><br>
金额1:<input type="text" name="accounts[0].money"><br><br>
账户2放到Map中<br>
用户名2:<input type="text" name="myMap['one'].username"><br>
密码2:<input type="text" name="myMap['one'].password"><br>
金额2:<input type="text" name="myMap['one'].money"><br>
<input type="submit" value="提交">
</form>
Controller类
@Controller
@RequestMapping("/params")
public class ParamsController {
@RequestMapping("testSubmitList")
public String testSubmitList(User user){
System.out.println("添加成功!!");
//...
return "success";
}
}
4)使用Servlet
原生API
就是在Controller类的方法加上原来的参数就OK了。
@Controller
//设置一级路径,那么方法上就是二级路径
@RequestMapping("/params")
public class ParamsController {
@RequestMapping("testServlet")
public String testServlet(HttpServletRequest request, HttpServletResponse response){
//这样就获取到原生的HttpServletRequest和其他的了
return "success";
}
}