-
如何绑定数据
-
API方式绑定数据
-
注解方式绑定数据
1、@RequestParam绑定单个请求参数值;
2、@PathVariable绑定URI 模板变量值;
3、@CookieValue绑定Cookie 数据值
4、@RequestHeader绑定请求头数据;
5、@ModelAttribute绑定参数到命令对象;
6、@SessionAttributes绑定命令对象到session;
@RequestParam绑定单个请求参数值 public String requestparam(@RequestParam("username") String username) @RequestParam注解主要有哪些参数 value:参数名字,即入参的请求参数名字,如username 表示请求的参数区中的名字为username 的参数的值将传入; required:是否必须,默认是true,表示请求中一定要有相应的参数,否则将报404 错误码; defaultValue:默认值,表示如果请求中没有同名参数时的默认值public String requestparam(@RequestParam(value="username“,required=false) String username)
表示请求中可以没有名字为username 的参数,如果没有默认为null,此处需要注意如下几点:原子类型:必须有值,否则抛出异常,如果允许空值请使用包装类代替。Boolean 包装类型类型:默认Boolean.FALSE,其他引用类型默认为null。 对于多个同名请求参数的处理, 例如:url?role=admin&role=user public String requestparam(@RequestParam(value=“role”) String roles) 实际得到的值是roles=“admin,user”。多个值以逗号的方式隔开 或者把方法参数定义为字符串数组(String[] roles)或集合(List<String> roles)@PathVariable绑定URI 模板变量值
@RequestMapping(value="/users/{userId}/topics/{topicId}")public String test(@PathVariable(value="userId") intuserId, @PathVariable(value="topicId") inttopicId) 如请求的URL 为“控制器URL/users/123/topics/456”,则自动将URL 中模板变量{userId}和{topicId} 绑定到通过@PathVariable注解的同名参数上,即入参后userId=123、topicId=456。@CookieValue绑定Cookie 数据值
public String test(@CookieValue(value="JSESSIONID", defaultValue="") String sessionId) 传入参数类型也可以是javax.servlet.http.Cookie类型。public String test2(@CookieValue(value="JSESSIONID", defaultValue="") Cookie sessionId)@RequestHeader绑定请求头数据
@RequestMapping(value="/header")public String test(@RequestHeader("User-Agent") String userAgent,@RequestHeader(value="Accept") String[] accepts)@ModelAttribute绑定请求参数到Model
@ModelAttribute一个具有如下三种使用方式: 作用在方法参数里面:用于将多个请求参数绑定到一个命令对象,从而简化绑定流程,而且自动暴露为模型数据用于视图页面展示时使用; 作用在一般方法上面:该Controller的所有方法在调用前,先执行此@ModelAttribute方法; 作用于方法的返回值上面:放在功能处理方法的返回值上时,是暴露功能处理方法的返回值为模型数据,用于视图页面展示时使public String findUser(@ModelAttribute("user") UserModel user) @ModelAttribute("cityList")public List
注:返回值上的user会覆盖方法参数上的user2作为视图的模型名cityList() { return Arrays. asList("北京", "山东");}public @ModelAttribute(“user”) UserModel findUser(@ModelAttribute(“user2”) UserModel user) 匿名绑定
public String findUser(@ModelAttribute UserModel user) Spring Web MVC 会自动将简单类名(首字母小写)作为名字暴露对于集合类型(Collection 接口的实现者们,包括数组),生成的模型对象属性名为“简单类名(首字母小写)”+“ List”@SessionAttributes绑定对象到session
在控制器上加入@SessionAttributes(value = { “user”}) @SessionAttributes(value = { “user”}) public class SessionAttributeController调用SessionStatus对象的setComplete()销毁当前控制器上使用的Session @RequestMapping("/session2") public String session(@ModelAttribute("user") UserModeluser, SessionStatusstatus) {status.setComplete();return "success";}