1.使用原生的request接受参数
一个链接发送请求并附带参数:
<a href="${pageContext.request.contextPath}/first?id=1&name=itlike">请求1</a>
controller:
@RequestMapping("/first")
public String myform(HttpServletRequest request){
String id = request.getParameter("id");
String name = request.getParameter("name");
System.out.println(name);
System.out.println(id);
return "/second.jsp";
}
2.@requestParam及用法
当请求的参数名称和处理器的形参名称一致时,会自动将参数绑定,并做类型转换
链接及参数:
<a href="${pageContext.request.contextPath}/second?id=1&name=itlike">请求2</a>
controller:
@RequestMapping("/second")
public String myform2(Integer id,String name){
System.out.println(id+" "+name);
return "/second.jsp";
}
当参数名可以不一致,可以使用requestParam()改变参数名称
controller:
@RequestMapping("/second")
public String myform2(@RequestParam(value = "id",required = false,defaultValue = "100") Integer ida, String name){
System.out.println(ida+" "+name);
return "/second.jsp";
}
required 表示该参数是否必须传递 默认值是true
defaulValue 设置默认值 当required是false时,没传值时该参数为设置的默认值 当required是true时,不传值也不会报错,使用默认值
3.JavaBean接受参数
要求表单当中的参数名和实体类中的属性字段保持一致 ,这样可自动将参数封装在对象中
链接表单:
<form action="${pageContext.request.contextPath}/myform">
user:<input type="text" name="user_name"><br/>
age:<input type="text" name="user_age"><br/>
<input type="submit" value="提交">
</form>
实体类:
public class User {
private String user_name;
private String user_age;
}
controller:
@RequestMapping("/myform")
public String myform3(User user){
System.out.println(user);
return "second.jsp";
}
4.使用数组接受参数
当链接中参数的属性名一样时,可使用数组接受参数 name相同的参数会放在一个数组里
链接表单:
<form action="${pageContext.request.contextPath}/myform1">
user:<input type="text" name="name"><br/>
age:<input type="text" name="name"><br/>
<input type="submit" value="提交">
</form>
controller:
@RequestMapping("/myform1")
public String myform4(String name[]){
System.out.println(Arrays.toString(name));
return "second.jsp";
}
也可以在实体的属性字段定义数组,接受参数依然使用JavaBean的方法接受,数组便会被封装到对象里
链接表单:
<form action="${pageContext.request.contextPath}/myform1">
user:<input type="text" name="user_name"><br/>
age:<input type="text" name="user_age"><br/>
hobby:<input type="checkbox" name="hooby" value="篮球">篮球
<input type="checkbox" name="hooby" value="篮球">乒乓球
<input type="checkbox" name="hooby" value="篮球">足球<br/>
<input type="submit" value="提交">
</form>
实体类:
public class User {
private String user_name;
private String user_age;
private String hooby[];
}
controller:
@RequestMapping("/myform1")
public String myform4(User user){
System.out.println(user);
return "second.jsp";
}
5.包装类接受参数
定义两个实体类,一个User类 一个Dog类 Dog是User的一个属性
public class User {
private String user_name;
private String user_age;
private String hooby[];
private Dog dog;
}
public class Dog {
private String name;
private String color;
}
链接及参数设置:
<form action="${pageContext.request.contextPath}/myform2">
user:<input type="text" name="user_name"><br/>
age:<input type="text" name="user_age"><br/>
hobby:<input type="checkbox" name="hooby" value="篮球">篮球
<input type="checkbox" name="hooby" value="篮球">乒乓球
<input type="checkbox" name="hooby" value="篮球">足球<br/>
------宠-----物-------<br/>
宠物名称:<input type="text" name="dog.name"><br/>
宠物颜色:<input type="text" name="dog.color"><br/>
<input type="submit" value="提交">
</form>
包装类的属性设置,是属性名.包装类的属性名
controller:
@RequestMapping("/myform2")
public String myform4(User user){
System.out.println(user);
return "second.jsp";
}
6.List集合接受参数
需求:当一个User有多个狗时,可以在User中定义一个list<Dog>
实体类定义:
public class User {
private String user_name;
private String user_age;
private String hooby[];
private Dog dog;
private List<Dog> dogs;
}
public class Dog {
private String name;
private String color;
}
表单及参数设置 着重对于list集合每个对象的参数设置
<form action="${pageContext.request.contextPath}/myform2">
user:<input type="text" name="user_name"><br/>
age:<input type="text" name="user_age"><br/>
hobby:<input type="checkbox" name="hooby" value="篮球">篮球
<input type="checkbox" name="hooby" value="篮球">乒乓球
<input type="checkbox" name="hooby" value="篮球">足球<br/>
------宠-----物-------<br/>
-------单个狗--------<br/>
宠物名称:<input type="text" name="dog.name"><br/>
宠物颜色:<input type="text" name="dog.color"><br/>
-----集合狗——————<br/>
宠物名称:<input type="text" name="dogs[0].name"><br/>
宠物颜色:<input type="text" name="dogs[0].color"><br/>
宠物名称:<input type="text" name="dogs[1].name"><br/>
宠物颜色:<input type="text" name="dogs[1].color"><br/>
<input type="submit" value="提交">
</form>
controller:
@RequestMapping("/myform2")
public String myform4(User user){
System.out.println(user);
return "second.jsp";
}