将内容写到方法参数中,SpringMVC只要有这个内容,便会自动注入(下述情况get/post均可)
如前端传递name及age参数:
@Controller
public class DemoController {
@RequestMapping("demo")
public String demo(String name, int age, Person person) {
return "main.jsp";
}
}
其中person具有name及age属性,同时具有相应属性的get、set方法,则SpringMVC会将name、age以及person中的name、age进行赋值,(SpringMVC能够对类型进行自动转换,同时只要SpringMVC接收参数只要有,就能赋值,无论次数),只要保证参数名称和请求中传递的参数名相同,方法参数为引用类型(如String)而且请求参数没有该属性,则为null,如果是基本数据类型,没有该属性将会报错
如果参数名不一致,可以使用@RequestParam注解:(如果前端传递数据为name1,age1)
@Controller
public class DemoController {
@RequestMapping("demo")
public String demo(@RequestParams('name1")String name,@RequestParam("age1") int age) {
return "main.jsp";
}
}
基本数据类型可以使用requestParam的defaultValue属性,设置默认值,防止请求参数没有该值时出错;同时具有required属性,表示请求参数是否必须具有该属性,设置为true没有该参数则报异常,如果required设置为true,同时设置defaultValue,即使请求参数没有该属性值,也不会报错,将使用默认值
如果前端有一个多选框,name为hover,同时选中多个(传递多个同名参数),可以使用List或者数组接收:
@Controller
public class DemoController {
@RequestMapping("demo")
public String demo(@RequestParams('hover")List<Stirng> list) {
return "main.jsp";
}
}
请求参数可以设置为peo.name及peo.age为下面的Demo对象传值
public class Demo {
private People peo;
public People getPeo() {
return peo;
}
public void setPeo(People peo) {
this.peo = peo;
}
}
@Controller
public class DemoController {
@RequestMapping("demo")
public String demo(Demo demo) {
return "main.jsp";
}
}
请求参数可以设置为peo[0].name,peo[0].age及peo[1].name,peo[1].age为下面的Demo对象传值
public class Demo {
private List<People> peo;
public List<People> getPeo() {
return peo;
}
public void setPeo(List<People> peo) {
this.peo = peo;
}
}
restful传值方式:简化jsp中参数编写格式
请求url:demo/123/abc
@Controller
public class DemoController {
// 使用PathVariable注解或者同名参数均可
@RequestMapping("demo/{id1}/{name1}")
public String demo(@PathVariable("id1")int id,@PathVariable("name1")String name) {
// 注意main.jsp是相对路径,此时跳转路径将为/demo/123/main.jsp
return "main.jsp";
}
}
网友评论