spring mvc 允许以多种方式将客户端中的数据传送到控制器的处理器方法中,包括以下几种 查询参数 表单参数 路径参数
使用@RequstParam 注解 声明参数名称和类型 。一般来说 spring boot 现在支持直接使用类型和参数名称 不需要使用注解
将参数放入需要提交的url 路径中 为了实现路径参数, spring 允许我们在requestMapping 注解的路径中使用占位符 ( 大括号{} ) 路径的其他部分与请求的路径完全匹配,占位符部分可以是任意值 格式为
@RequestMapping(value="/test/{name}") public void test(@PathVariable String name){ }需要注意的是 ,占位符的参数名称 必须和方法的参数名相同
Spring MVC 提供了一种绑定机制,通过该机制可以从用户请求中提取数据,然后将数据转换为预定义的数据格式,最后映射到一个模型类,从而创建对象,SpingMVC 实现这种绑定机制非常简单,只需要请求参数名称和java 类的属性相匹配即可,从而使Web 开发变得非常简单明了 所以在接受表单参数时 ,使用一个java类来接受前台form 表单里面的数据 ,通过post 方法将数据 提交到后台 需要注意的是 ,前台form 表单中 ,提交的HTML 元素的 name 需要和 后台的实体类的属性一一对应
spring 提供表单校验的方法 通过使用注解(这些注解来源于JSR-303 规范 ,它详细规定了 bean 的校验功能。 ),将注解放在类的属性上,从而限制属性的值
public class User { @NotNull @Size(min = 1,max = 22) private String name; @Min(0) @Max(200) private Integer age; }为了使校验功能运行起来,需要添加一些内容,首先 , 控制器需要声明在表单提交时, 它希望得到一个合法的模型,在代表表单的参数上添加一个 Valid 注解 就可以实现该功能 同时 ,使用BindingResult 来接收参数是否错误的判断
@RequestMapping(value = "add",method = RequestMethod.POST) @ResponseBody public String add(@Valid User user , BindingResult bindingResult){ if (bindingResult.hasErrors()){ //这里可以进行自定义操作 System.out.println(bindingResult); } System.out.println(user.toString()); return "add user success"; }