SpringMVC基础-controller方法中的参数注解

时间:2021-12-20 05:07:32

@PathVariable

   映射 URL 绑定的占位符      

    带占位符的 URL 是 Spring3.0 新增的功能,该功能在 SpringMVC 向 REST 目标挺进发展过程中具有里程碑的意义
    通过 @PathVariable 可以将 URL 中占位符参数绑定到控制器处理方法的形参中:URL 中的 {xxx} 占位符可以通过@PathVariable("xxx") 绑定到操作方法的形参中,需要注意的是:该注解的value属性值要与占位符保持一致。

   特殊字符问题  

    问题
      SpringMVC项目中通过下面的URL进行GET请求。当version有多个小数点的时候。如version为1.0.1008。后台通过@PathVariable来获取version等于1.0。会丢失部分数据。

      URL:

        http://host_ip/consumer/appVersion/phone/android/download/{version}

      Controller:

        @RequestMapping(value="android/download/{version}",method=RequestMethod.GET)

    解决方案

      在version段后增加一个静态的字符段,这个段没有任何意义,可以为任意字符。

      URL:

        http://host_ip/consumer/appVersion/phone/android/download/{version}/static_str
      参考:
        http://*.com/questions/3526523/spring-mvc-pathvariable-getting-truncated

    URL不加小尾巴。

      在@RequestMapping的value中使用SpEL来表示,value中的{version}换成{version:.+}。

        @RequestMapping(value="android/download/{version:.+}",method=RequestMethod.GET)

@RequestParam

  可以接收请求的参数,相当于Servlet的getParameter()方法!
    注意:要把@RequestParam和@PathVariable区分开: 
    三个默认属性:
      value:这个字段要与请求参数的name属性值一致!
      required:布尔值,默认是true,当指定为false的时候,说明这个参数不是必须的,可以不带!
      defaultValue:在我们不传值的时候,默认使用defaultValue的值,传递参数的时候,使用我们传递的参数值!

@RequestHeader

  获取请求头信息,默认属性:
    请求头包含了若干个属性,服务器可据此获知客户端的信息,通过 @RequestHeader 即可将请求头中的属性值绑定到处理方法的形参中

@ModelAttribute

  @ModelAttribute通常使用在Controller方法的参数注解中,用于解释model entity,但同时,也可以放在方法注解里。如果把@ModelAttribute放在方法的注解上时,代表的是该Controller的所有方法在每次调用前,先执行此@ModelAttribute方法。