SpringMVC数据绑定大全
下文笔者讲述SpringMVC中数据绑定的相关简介说明,如下所示
SpringMVC数据绑定方式大全
1.@RequestParam绑定单个请求参数值 2.@PathVariable绑定URL模板变量值 3.@CookieValue绑定Cookie数据值 4.@RequestHeader绑定请求头数据 5.@ModelAttribute绑定参数到命令对象 6.@SessionAttributes绑定命令对象到session 7.@RequestBody绑定请求的内容区数据并能进行自动类型转换等 8.@RequestPart绑定“multipart/data”数据,除了能绑定@RequestParam能做到 的请求参数外,还能绑定上传的文件等 9.从HttpServletRequest中自己获取参数信息
1.@RequestParam注解主要有哪些参数
value: 参数名字 即入参的请求参数名字 如username表示请求的参数区中的名字为username的参数的值将传入; required: 是否必须 默认是true 表示请求中一定要有相应的参数,否则将报404错误码; defaultValue: 默认值 如果请求中没有同名参数时的默认值 默认值可以是SpEL表达式 如“#{systemProperties[‘java.vm.version’]}”。例:
public String requestparam5(@RequestParam(value="username",required=true,defaultValue="mao") String username)
2.@PathVariable绑定URI模板变量值
@PathVariable用于将请求URL中的模板变量映射到功能处理方法的参数上。例
@RequestMapping(value="/users/{userId}/ageInfo/{age}") public String test( @PathVariable(value="userId") int userId, @PathVariable(value="age") int age) //当请求url为 /users/89001/ageInfo/16 则此时会自动取 userId为 89001 age 为 16
3.@CookieValue绑定Cookie数据值
@CookieValue用于将请求的Cookie数据映射到功能处理方法的参数上。例
@RequestMapping("/cookie") public String test(@CookieValue(value="JSESSIONID", defaultValue="") String sessionId){ logger.info("接受cookie: "+sessionId);// 接收前端发送的cookie信息,cookieId为JSESSIONID return "views/tmp"; }
4.@RequestHeader绑定请求头数据
@RequestHeader用于将请求的头信息区数据映射到功能处理方法的参数上。
@RequestMapping(value="/header") public String test( @RequestHeader("User-Agent") String userAgent, @RequestHeader(value="Accept") String[] accepts) 自动将请求头“User-Agent”值入参到userAgent参数上 并将“Accept”请求头值入参到accepts参数上
@ModelAttribute绑定参数
请查看链接 此注解可将参数信息一一绑定到实体对象上 如果实体对象不存在,还可通过反射实例化一个实体对象
6.@SessionAttributes绑定命令对象到session
@SessionAttributes原理 默认情况下Spring MVC将模型中的数据存储到request域中 当一个请求结束后,数据就失效了。如果要跨页面使用 @SessionAttributes注解就可以使得模型中的数据存储一份到session域中。 @SessionAttributes参数: 1.names:这是一个字符串数组。里面应写需要存储到session中数据的名称。 2.types:根据指定参数的类型,将模型中对应类型的参数存储到session中 3.value:其实和names是一样的。例
@RequestMapping("/test") public String test(Map<String,Object> map){ map.put("names", Arrays.aslist("java","maomao","niuniu")); map.put("age", 18); return "hello"; } Jsp页面 1、request中names:${requestScope.names}<br/> 2、request中age:${requestScope.age}<br/> <hr/> 3、session中names:${sessionScope.names }<br/> 4、session中age:${sessionScope.age }<br/> ----运行结果----- 1、request中names:[java, maomao, niuniu] 2、request中age:16 3、session中names: 4、session中age:
使用@SessionAttributes注解
@SessionAttributes(value={"names"},types={Integer.class}) @Controller public class Test { @RequestMapping("/test") public String test(Map<String,Object> map){ map.put("names", Arrays.asList("java","maomao","niuniu")); map.put("age", 16); return "hello"; } } 再次访问页面: 1、request中names:[java,maomao,niuniu] 2、request中age:16 3、session中names:[java,maomao,niuniu] 4、session中age:16
SessionAttribute注解相关说明
1.视图中使用request.getAttribute或session.getAttribute获取session值 2.在后面请求返回的视图中通过session.getAttribute或从model中获取 一个参数设置到SessionAttribute中需要满足两个条件: 1.在@SessionAttribute注解中设置了参数的名字或者类型 2.在处理器中将参数设置到了model中 @SessionAttribute用户后可以调用SessionStatus.setComplete来清除 这个方法只是清除SessionAttribute里的参数,而不会应用Session中的参数
版权声明
本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。