SpringMVC中参数接收
接收参数语法说明:
springmvc中使用控制器方法参数来收集客户端的请求参数,因此在接收请求参数时直接在需要控制器方法声明即可,springmvc可以自动根据指定类型完成类型的转换操作
参数类型大概有:
基本类型或者 String 类型、对象类型、list类型、map类型等。。。
接收参数的各种测试:
import com.krystal.entity.User;
import com.krystal.vo.CollectionVO;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import java.util.Date;
import java.util.List;
@Controller
@RequestMapping("param")
public class ParamController {
/**
* 用来测试集合类型数据接收
* http://localhost:8080/springmvc_day1/param/test3?lists=%E5%B0%8F%E9%BB%91&lists=xiaobai
* 注意:springmvc不能直接通过形参列表方式收集集合类型参数
* 如果要接收集合类型的参数必须将集合类型的参数放到对象中 最好放入vo对象中接收集合参数
* vo = value Object 值对象
* */
@RequestMapping("test3")
public String test3(User user){
List<String> lists = user.getLists();
lists.forEach(str-> System.out.println(str));
return "index";
}
//http://localhost:8080/springmvc_day1/param/test4?lists=111&lists=%E4%BC%9A%E8%AF%9D&lists=%E5%BC%A0%E4%B8%89
@RequestMapping("test4")
public String test4(CollectionVO collectionVO){
List<String> lists = collectionVO.getLists();
lists.forEach(str-> System.out.println(str));
return "index";
}
/*
*用来测试数组类型参数接收
* 接收数组:将要接收数组类型直接声明为方法的形参即可
* 注意:保证请求参数多个参数key与声明数组变量名一致,springmvc会自动放入同一个数组中
*http://localhost:8080/springmvc_day1/param/test2?qqs=111&qqs=222&qqs=lllala
* form: checkbox
* input type="checkbox" name="qqs" value="看书"
* input type="checkbox" name="qqs" value="卖报"
* input type="checkbox" name="qqs" value="吃饭"
* */
@RequestMapping("test2")
public String test2(String[] qqs){
for (String qq : qqs) {
System.out.println(qq);
}
return "index";
}
/**
* 用来测试对象类型参数接收的Controller
* 接收对象类型:也是直接将要接收对象作为控制器方法参数声明
* 注意:springmvc封装对象时直接根据传递参数key与对象中属性名一致自动封装对象
* http://localhost:8080/springmvc_day1/param/test1?id=2&name=%E7%A7%80%E7%A7%80&age=18&bir=1994/10/24
* form:
* input name = "id"
* input name = "name"
* input name = "age"
* ...
* */
@RequestMapping("test1")
public String test1(User user,String name){
System.out.println(user);
System.out.println(name);
return "index";
}
/**
* 测试零散类型参数接收
*
* 默认日期格式:yyyy/MM/dd
*
* */
@RequestMapping("test")
public String test(String name, Integer age, Double price, boolean sex, Date date){
System.out.println("name:"+name);
System.out.println("age:"+age);
System.out.println("price:"+price);
System.out.println("sex:"+sex);
System.out.println("date:"+date);
return "index";
}
}
其中list和map以及对象类型可能设计到实体类:
User实体类
import java.util.Date;
import java.util.List;
public class User {
private String id;
private String name;
private Integer age;
private Date bir;
private List<String> lists;
public List<String> getLists() {
return lists;
}
public void setLists(List<String> lists) {
this.lists = lists;
}
public User() {
}
public User(String id, String name, Integer age, Date bir) {
this.id = id;
this.name = name;
this.age = age;
this.bir = bir;
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
public Date getBir() {
return bir;
}
public void setBir(Date bir) {
this.bir = bir;
}
@Override
public String toString() {
return "User{" +
"id='" + id + '\'' +
", name='" + name + '\'' +
", age=" + age +
", bir=" + bir +
", lists=" + lists +
'}';
}
}