本帖最后由 大蓝鲸小蟀锅 于 2020-3-11 21:16 编辑
SpringMVC参数绑定
一、普通方式
1.基本数据类型 int等 2.包装数据类型 Integer等 ,区别在于 包装类型的值可以是null或"" 3. POJO类型包括自定义POJO类型(包装POJO,复杂POJO) POJO内又有其他POJO,见代码 POJO: [Java] 纯文本查看 复制代码
public class A{
private String a;
private B b;
}
public class B{
private String bb;
}
Controller: [Java] 纯文本查看 复制代码
@RequestMapping("/")
public void test(A a) {
}
JSP: [Java] 纯文本查看 复制代码
<input name="a" value="" /><br>
<input name="b.bb" value="" /><br>
4. List类型 必须是属性,不能直接作为参数接收 POJO: [Java] 纯文本查看 复制代码
public class A{
private String a;
private List<B> b;
}
public class B{
private String bb;
}
Controller: [Java] 纯文本查看 复制代码
@RequestMapping("/")
public void test(A a) {
}
JSP: [Java] 纯文本查看 复制代码
<input name="a" value="" /><br>
<input name="b[0].bb" value="" /><br>
5. Set类型雷同List,只是要提前定义好有多少条, 前端传值注意,如果下标超过也会报错 POJO: [Java] 纯文本查看 复制代码
public class A{
private String a;
private Set<B> b = new HashSet<B>();
public A() {
b.add(new B());
b.add(new B());
b.add(new B());
}
}
public class B{
private String bb;
}
6. Map类型POJO: [Java] 纯文本查看 复制代码
public class A{
private String a;
private Map<String,B> b;
}
public class B{
private String bb;
}
Controller: [Java] 纯文本查看 复制代码
@RequestMapping("/")
public void test(A a) {
}
JSP: [Java] 纯文本查看 复制代码
<input name="a" value="" /><br>
<input name="b['xxx']" value="" /><br>
<input name="b['yyy']" value="" /><br>
<input name="b['zzz']" value="" /><br>
二、注解方式
1.@PathVariable可以在类上面,也可以在方法上面 [Java] 纯文本查看 复制代码
@Controller
@RequestMapping("/test/{path1}")
public class TestController {
@RequestMapping("/pets/{path2}")
public void testPathVariable(@PathVariable String path1, @PathVariable String path2) { }
}
2.@RequestHeader、@CookieValue直接将请求头的部分值或者cookie的值映射上去 [Java] 纯文本查看 复制代码 [/align]@RequestMapping("/test")
public void test(@RequestHeader("Content-Type") String test) {
}
@RequestMapping("test")
public void test(@CookieValue("cookieTest") String cookieTest) {
}
3. @RequestParam, @RequestBody@RequestParam 用来处理Content-Type: application/x-www-form-urlencoded的请求参数 @RequestBody用来处理不是Content-Type: application/x-www-form-urlencoded的请求参数 [Java] 纯文本查看 复制代码
@RequestMapping("/test")
public void test(@RequestParam("t") String test) throws IOException{
}
@RequestMapping("/test")
public void test(@RequestBody String test) throws IOException{
}
4. @SessionAttributes, @ModelAttribute
[Java] 纯文本查看 复制代码 @Controller
@SessionAttributes("sessionTest") //也可以是多个 {"sessionTest1","sessionTest2"}
public class testController {
@RequestMapping("/test")
public void test(Model model) throws IOException{
model.addAttribute("sessionTest",1);
}
}
@Controller
@SessionAttributes("sessionTest")
public class testController{
@RequestMapping("/test")
public void test(@ModelAttribute("sessionTest") String sessionTest){
}
}
SpringMVC常见注解
1. @Controller
2. @RequestMapping
a、 value, methodvalue: 指定请求的实际地址,指定的地址可以是URI Template 模式(/test/{path1}; /test/*;/test/正则表达式) method: 指定请求的method类型, GET、POST、PUT、DELETE等; b、consumes,producesconsumes: 指定处理请求的提交内容类型(Content-Type),例如application/json, text/html; produces: 指定返回的内容类型,仅当request请求头中的(Accept)类型中包含该指定类型才返回; c、params,headersparams: 指定request中必须包含某些参数值是,才让该方法处理。 headers: 指定request中必须包含某些指定的header值,才能让该方法处理请求。 [Java] 纯文本查看 复制代码
@RequestMapping (
value= "testHeaders",
method= {RequestMethod.GET, RequestMethod.DELETE},
headers={"host=localhost", "Accept"},
consumes="application/json",
produces="application/json"
)
public String testHeaders() {
return "headers" ;
}
3.参考注解绑定参数,都是springmvc常用注解
|