1. 把内容写到方法(HandlerMethod)参数中,SpringMVC 只要有这个内容,就会注入内容.
2. 基本数据类型参数
2.1 默认保证参数名称和请求中传递的参数名相同
@Controller
public class DemoController {
@RequestMapping("demo")
public String demo(String name,int age){
System.out.println("执行 demo"+" "+name+" "+age);
return "main.jsp";
}
}
2.2 如果请求参数名(如表单中的name属性)和方法参数名不对应使用@RequestParam()赋值
public String demo(@RequestParam(value="name1") String name,@RequestParam(value="age1")int age){
System.out.println("执行 demo"+" "+name+" "+age);
return "main.jsp";
}
2.3 如果方法参数是基本数据类型(不是封装类)可以通过 @RequestParam 设置默认值.
2.3.1 防止没有参数时报 500的错误
@RequestMapping("page")
public String page(@RequestParam(defaultValue="2") int pageSize,@RequestParam(defaultValue="1") int pageNumber){
System.out.println(pageSize+" "+pageNumber);
return "main.jsp";
}
2.4 如果强制要求必须有某个参数
@RequestMapping("demo2")
public String demo2(@RequestParam(required=true) String name){
System.out.println("name 是 SQL 的查询条件,必须要传递 name 参数"+name);
return "main.jsp";
}
3. HandlerMethod 中参数是对象类型
3.1 请求参数名和对象中属性名对应(get/set 方法)
@RequestMapping("demo4")
public String demo4(People peo){
return "main.jsp";
}
4. 请求参数中包含多个同名参数的获取方式
4.1 复选框传递的参数就是多个同名参数
4.2 将其存储到一个容器中
@RequestMapping("demo5")
public String demo5(String name,int age,@RequestParam("hover") ArrayList<String> abc){
System.out.println(name+" "+age+" "+abc);
return "main.jsp";
}
5. 请求参数中"对象.属性”格式
5.1 jsp 中代码
<input type="text" name="peo.name"/>
<input type="text" name="peo.age"/>
5.2 新建一个类
5.2.1 对象名和参数中点前面名称对应
public class Demo {
private People peo;
5.3 控制器(参数为Demo对象)
@RequestMapping("demo6")
public String demo6(Demo demo){
System.out.println(demo);
return "main.jsp";
}
6. 在请求参数中传递集合对象类型参数
6.1 jsp 中格式
<input type="text" name="peo[0].name"/>
<input type="text" name="peo[0].age"/>
<input type="text" name="peo[1].name"/>
<input type="text" name="peo[1].age"/>
6.2 新建类
public class Demo {
private List<People> peo;
6.3 控制器
@RequestMapping("demo6")
public String demo6(Demo demo){
System.out.println(demo);
return "main.jsp";
}
7. restful 传值方式
7.1 简化 jsp 中参数编写格式
7.2 在 jsp 中设定特定的格式
<a href="demo8/123/abc">跳转</a>
7.3 在控制器中
7.3.1 在@RequestMapping 中一定要和请求格式对应
7.3.2 {名称} 中名称自定义名称
7.3.3 @PathVariable 获取@RequestMapping 中内容,默认按照 方法参数名称去寻找.
7.3.4 由于格式中包含了“/”,所以,返回的跳转路径必须为绝对路径,不能是相对路径,不然会出错
@RequestMapping("demo8/{id1}/{name}")
public String demo8(@PathVariable String name,@PathVariable("id1") int age){
System.out.println(name +" "+age);
return "/main.jsp";
}