一.请求参数是基本的数据类型
JSP页面
从前端获取参数,jsp页面设计一个form表单
<form action="控制器的名称" method="post">
名字:<input type="text" name="name"/><br/>
密码:<input type="text" name="password"/><br/>
<input type="submit" value="提交"/><br/>
</form>
1.基本数据类型和String接收参数
Controller中方法的参数名称和请求中传递的参数名称相同即可
@Controller
public class DemoController {
@RequestMapping("/demo")
public String demo(String name,String password)
System.out.println(name+" "+password);
//返回值最好写全路径,全路径就是以"/"开头的路径
//"/"表示项目根目录
return "/main.jsp";
}
}
2.对象数据类型接收参数
请求参数名和对象中的属性名对应(走get/set方法)
pojo层
public class People {
private String name;
private String password;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
@Override
public String toString() {
return "People [name=" + name + ", password=" + password + "]";
}
}
Controller层:
@Controller
public class DemoController {
@RequestMapping("/demo")
public String demo(People peo) {
System.out.println(peo);
return "/main.jsp";
}
}
二. 请求参数的格式是对象.属性格式
JSP页面
<input type="text" name="peo.name"><br/>
<input type="password" name="peo.password"><br/>
1.新建一个类( 保证对象名和参数中点前边的名称相同)
public class Demo {
private People peo;
}
2.使用对象接收参数
public class DemoController {
@RequestMapping("demo")
public String demo(Demo demo){
System.out.println(demo);
return "/main.jsp";
}
}
三.请求参数是集合对象类型
JSP页面
<form action="demo" method="post">
姓名:
<input type="text" name="peo[0].name"><br/>
<input type="text" name="peo[1].name"><br/>
密码:
<input type="password" name="peo[0].password"><br/>
<input type="password" name="peo[1].password"><br/>
</form>
1.新建一个类
public class Demo {
private List<People> peo;
}
2.使用集合接收参数
public class DemoController {
@RequestMapping("demo")
public String demo(Demo demo){
System.out.println(demo);
return "/main.jsp";
}
}
三.使用@RequestParam注解
(1)请求参数名和方法参数名不对,使用value属性
@RequestMapping("demo")
public String demo(@RequestParam(value="name1") String name,@RequestParam(value="age1")int age)
{
System.out.println("执行 demo"+" "+name+""+age);
return "main.jsp";
}
(2)如果接受参数是基本类型,且接受参数类型与null无法进行兼容,此时可以采用包装类型或者采用默认值,使用defaultValue属性,防止没有参数出现500错误
@RequestMapping("page")
public String page(@RequestParam(defaultValue="2")int pageSize,@RequestParam(defaultValue="1") int pageNumber){
System.out.println(pageSize+" "+pageNumber);
return "main.jsp";
}
(3)如果强制要求必须有某个参数,使用required属性
@RequestMapping("demo")
public String demo2(@RequestParam(required=true) String name){
System.out.println("name 是 SQL 的查询条件,必须要传递 name 参数"+name);
return "main.jsp";
}
(4)请求参数中包含多个同名参数(复选框传递的参数就是多个同名参数)
@RequestMapping("demo")
public String demo5(String name,int age,@RequestParam("fav")List<String> abc){
System.out.println(name+" "+age+" "+abc);
return "main.jsp";
}
四.restful传值方式
传统请求参数的格式:
<a href="demo8?name=张三&age=23">跳转</a>,
restful格式是:
<a href="demo8/123/abc">跳转</a>
在控制器中:
在@RequestMapping 中一定要和请求格式对应
{名称} 中名称是自定义名称
@PathVariable 获取@RequestMapping 中内容,默认按照方法参数名称去寻找.
@RequestMapping("demo8/{id1}/{name}")
public String demo8(@PathVariable String name,@PathVariable("id1") int age){
System.out.println(name +" "+age);
return "/main.jsp";
}