3.12、@CookieValue 和 @RequestHeader

  这一部分的示例见这个项目的 mvc 分支下的 CookieAndHeaderController.java


① 用@CookieValue注解映射 cookie 值

  注解@CookieValue允许一个方法参数允许把一个方法参数绑定到一个 HTTP cookie 值上。我们来考虑下下面的一个从 HTTP 请求中接受到的 cookie:

JSESSIONID=415A4AC178C59DACE0B2C9CA727CDD84

  下面的代码示例演示了怎样获取 JSESSIONID cookie 的值:

    /**
     * 使用@CookieValue获取cookie值
     */
    @RequestMapping("/jSessionId")
    public String cookie(@CookieValue("JSESSIONID") String jSessionId, Model model)
    {
        model.addAttribute("sth", jSessionId);
        return "/examples/targets/test1";
    }

  如果目标方法参数不是字符串,那么就会自动进行类型转换。见“方法参数和类型转换”一节。

  这个注解支持 Servlet 和 Portlet 环境中的处理方法。

② 用@RequestHeader映射请求头属性

  注解@RequestHeader允许把一个请求头绑定到方法参数上。下面是一个请求头示例:

Host        localhost:8080
Accept       text/html,application/xhtml+xml,application/xml;q=0.9
Accept-Language  fr,en-gb;q=0.7,en;q=0.3
Accept-Encoding   gzip,deflate
Accept-Charset   ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive     300

  下面的示例演示了怎样获取请求头 Accept-Encoding 和 Keep-Alive 的值:

@RequestMapping("/displayHeaderInfo.do")
public void displayHeaderInfo(
        @RequestHeader("Accept-Encoding") String encoding,
        @RequestHeader("Keep-Alive") long keepAlive) 
{
    //...
}

  如果目标方法参数不是字符串,那么就会自动进行类型转换。见“方法参数和类型转换”一节。

  当注解@RequestHeader用在一个Map<String, String>MultiValueMap<String, String>或者HttpHeaders参数上的时候,这个 map 就是收集所有请求头的值。

  注意:内建的类型转换支持,可以把一个用逗号隔开的字符串,转换为一个字符串或者其他类型的数组或者容器(collection)。例如,一个带有@RequestHeader("Accept")的方法参数可以是一个字符串,也可以是一个String[]或者List<String>

  这个注解支持 Servlet 和 Portlet 环境中的处理方法。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值