zoukankan      html  css  js  c++  java
  • @RequestParam详解

    @RequestParam主要用于将请求参数区域的数据映射到控制层方法的参数上

    首先我们需要知道@RequestParam注解主要有哪些参数

    1。value:请求中传入参数的名称,如果不设置后台接口的value值,则会默认为该变量名。比如上图中第一个参数如果不设置value="page",则前端传入的参数名必须为pageNum,否则在后台接口中pageNum将接收不到对应的数据

    2。required:该参数是否为必传项。默认是true,表示请求中一定要传入对应的参数,否则会报404错误,如果设置为false时,当请求中没有此参数,将会默认为null,而对于基本数据类型的变量,则必须有值,这时会抛出空指针异常。如果允许空值,则接口中变量需要使用包装类来声明。

    3。defaultValue:参数的默认值,如果请求中没有同名的参数时,该变量默认为此值。注意默认值可以使用SpEL表达式,如"#{systemProperties['java.vm.version']}"

    如果在请求中传入多个同名参数,比如:url?userName=zhl&userName=holley时怎么办?

    其实此时传入的数据格式是:"zhl,holley",即多个数据之间使用逗号分隔开,在后台接口中可以使用数组或者list类型的变量来接收:

    public String requestparam8(@RequestParam(value="userName") String []  userNames) 

    或者

    public String requestparam8(@RequestParam(value="list") List<String> list)

    @PathVariable绑定uri模板变量值:通过@PathVariable可以绑定占位符参数到方法参数中,例如:

    如果请求为"url/info/16",则spring会自动将16绑定到通过@PathVariable注解的同名变量uid上

    @CookieValue绑定Cookie数据值

    public String test(@CookieValue(value="SESSIONID", defaultValue="") String sessionId) 

    自动将SESSIONID的值绑定到字符串sessionId上,如果Cookie中没有sessionId时则默认为空

    传入数据类型也可以是javax.servlet.http.Cookie类型
    public String test2(@CookieValue(value="SESSIONID", defaultValue="") Cookie sessionId)
    
    

    @RequestHeader绑定请求头数据

    
    
    @RequestMapping(value="/header")  
    public String test(  
           @RequestHeader("User-Agent") String userAgent,  
           @RequestHeader(value="Accept") String[] accepts)
    
    

    如上配置将自动将请求头中的“User-Agent"值绑定到userAgent上,将"Accept"的值绑定到accepts上

    @ModelAttribute绑定请求参数到命令对象

    @ModelAttribute具有三个作用

    1.绑定请求到命令对象:放在后台接口方法(控制层)的入参上时,用于将多个请求参数绑定到一个命令对象,从而简化绑定流程,而且自动暴露为模型数据用于视图页面展示时使用

    2.暴露表单引用对象为模型数据:放在处理器的一般方法(非后台接口方法)上时,是为表单准备要展示的表单引用对象,如注册时需要选择所在的城市等,而且在执行后台接口方法之前,自动添加到模型对象中,用于视图页面展示时使用

    3.暴露@RequestMapping方法返回值为模型数据:放在后台接口方法的返回值上时,世保禄处理方法的返回值为模型数据,用于视图页面的展示时使用

    一、绑定请求参数到命令对象

    如用户登录,我们需要捕获用户登录的请求参数(用户名、密码)并封装为用户对象,此时我们可以使用@ModelAttribute绑定多个请求参数到我们的命令对象。

    public String test1(@ModelAttribute("user") UserModel user)

    注解@ModelAttribute("user"),它的作用是将该绑定的命令对象以“user”为名称添加到模型对象中供视图页面展示使用。我们此时可以在视图页面使用${user.username}来获取绑定的命令对象的属性。

    绑定请求参数到命令对象支持对象图导航式的绑定,如请求参数包含“?username=zhang&password=123&workInfo.city=bj”自动绑定到user中的workInfo属性的city属性中。

    原文:https://www.cnblogs.com/wangchuanfu/p/5913310.html

  • 相关阅读:
    OpenStack--Havana
    腾讯云万象优图每个账户提供50G的图片存储(支持黄图检测)
    Java 脚本化编程指南
    hive的表的基本操作
    如何搭建易企秀H5平台?
    HDU 4727-The Number Off of FFF
    审计厅审计云发展意见
    CNPM 遇到use strict的问题
    QA技术概览
    终端的CTRL+S 解说
  • 原文地址:https://www.cnblogs.com/zhlblogs/p/9553491.html
Copyright © 2011-2022 走看看