Spring MVC 允许以多种方式将客户端中的数据传送到控制器的处理器方法中,包括:
- 查询参数(Query Parameter)。
- 表单参数(Form Parameter)。
- 路径变量(Path Variable)。
查询参数
比如请求 http://localhost:9090/spitter/spittles?max=20&count=10
@Controller
@RequestMapping(value = "/spitter")
public class SpitterController {
@RequestMapping(value = "/spittles", method=RequestMethod.GET)
public List<Spittle> spittles(
@RequestParam(value="max") long max,
@RequestParam(value="count", defaultValue="20") int count) {
//......
}
}
尽管 default-Value 属性给定的是 String 类型的值,但是当绑定到方法的 count 参数时,它会转换为 int 类型。
路径变量
尤其是在构建面向资源的控制器时,这种方式就是将传递参数作为请求路径的一部分
比如请求 http://localhost:9090/spitter/spittle/20/10
@Controller
@RequestMapping(value = "/spitter")
public class SpitterController {
@RequestMapping(value="/spittle/{spittleId}/{spittleName}", method=RequestMethod.GET)
public String spittle(@PathVariable long spittleId, @PathVariable String spittleName, Model model) {
model.addAttribute("spittleId",spitterRepository.findOne(spittleId));
return "spitt"; //值是视图的逻辑名称
}
}
其中 Model 实际上就是一个 Map(也就是 key-value 对的集合),它会传递给视图,这样数据就能渲染到客户端了。
表单提交
@Controller
@RequestMapping(value = "/spitter")
public class SpitterController {
@RequestMapping(value="/register", method= RequestMethod.POST)
public String processRegistration(Spittle spittle) { //这里要新建Spittle对象,用来接收传递的数据
spitterRepository.save(spitter);
return "redirect:/spitter/" + spittle.getUsername(); //redirect:为重定向
}
}
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。