1.使用请求参数
关键字
@RequestParam
请求示例
http://localhost:8080/index/getString?name=lovetoday&id=10000
使用场景
当URL需要对资源或者资源列表进行过滤,筛选时使用这种方式。
//方式1
@RequestMapping(value = "/getString", method = RequestMethod.GET)
public String getString(int id, String name) {
return name+"'s id is: "+id;
}
请求结果:
注意:
使用http://localhost:8080/index/getString进行访问时,会报异常。
原因在于Controller方法参数中定义的是基本数据类型,但是从页面提交过来的数据为null或者""的话,会出现数据转换的异常。也就是必须保证表单传递过来的数据不能为null或”",所以,在开发过程中,对可能为空的数据,最好将参数数据类型定义成包装类型。
//修改方法1:
@RequestMapping(value = "/getString", method = RequestMethod.GET)
public String getString(Integer id, String name) {
return id + name;
}
一旦我们在方法中定义了@RequestParam变量,如果访问的URL中不带有相应的参数,就会抛出异常,Spring尝试帮我们进行绑定,然而没有成功。但有的时候,参数确实不一定都存在,这时可以通过定义required属性,@RequestParam(name="id",required=false)。当然,在参数不存在的情况下,可能希望变量有一个默认值:@RequestParam(name="id",required=false,defaultValue="0")
//修改方法2
@RequestMapping(value = "/getValue", method = RequestMethod.GET)
public User getUser(@RequestParam(name = "id", required = false, defaultValue = "0") int id,
@RequestParam(name = "name", required = false, defaultValue = "lovetoday") String name) {
User user = new User();
user.setId(id);
user.setName(name);
return user;
}
2.使用路径参数
关键字
@PathVariable
请求示例1
http://localhost:8080/index/find/1000/lovetoday
使用场景
当URL指向的是某一具体业务资源(或者资源列表),例如博客中的用户、文章列表、文章时。
@RequestMapping(value = "/find/{id}/{name}")
public String find(@PathVariable String name, @PathVariable int id) {
return name +"'s id: "+id;
}
请求示例2
http://localhost:8080/index/find/ ----报4043.通过HttpServletRequest
post方式和get方式都可以
待更新
4.通过RequestBody
post方式
待更新
网友评论