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:为重定向
    }  
}

WinRT
21 声望4 粉丝

临渊羡鱼,不如退而结网