SpringMVC数据绑定大全

书欣 SpringMVC 发布时间:2023-01-04 10:10:06 阅读数:2014 1
下文笔者讲述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中的参数
版权声明

本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。

本文链接: https://www.Java265.com/JavaFramework/SpringMVC/202301/5284.html

最近发表

热门文章

好文推荐

Java265.com

https://www.java265.com

站长统计|粤ICP备14097017号-3

Powered By Java265.com信息维护小组

使用手机扫描二维码

关注我们看更多资讯

java爱好者