Spring MVC如何获取HTTP请求头信息--URL中的动态参数--@RequestHeader--@CookieValue--@PathVariable

Spring MVC如何获取HTTP请求头信息--URL中的动态参数--@RequestHeader--@CookieValue--@PathVariable

转载:https://www.cnblogs.com/sonng/p/6645834.html

获取HTTP请求头信息

一个HTTP请求除了有参数和实体内容外还有HTTP请求头信息,Spring MVC也可以获取这部分信息
@RequestHeader解可以将请求头信息映射到处理方法的形参上
@CookieValue注解可以将Cookie映射到形参上

写个controller

package net.sonng.mvcdemo.controller;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.CookieValue;
import org.springframework.web.bind.annotation.RequestHeader;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.servlet.ModelAndView;

@Controller
public class HeaderController {
    @RequestMapping(value="/getHeader",method=RequestMethod.GET)
    public ModelAndView getHeader(
            @RequestHeader("Host") String host,
            @RequestHeader("User-Agent") String userAgent,
            @RequestHeader("Accept") String accept,
            @RequestHeader("Accept-Language") String acceptLanguage,
            @RequestHeader("Accept-Encoding") String acceptEncoding,
            @RequestHeader("Cookie") String cookie,
            @RequestHeader("Connection") String conn,
            @CookieValue("JSESSIONID") String cookie2){
        //@RequestHeader将http请求头信息赋值给形参
        //@CookieValue直接将请求头中的cookie的值赋值给形参
        ModelAndView mav=new ModelAndView();
        mav.addObject("host", host);
        mav.addObject("userAgent", userAgent);
        mav.addObject("accept", accept);
        mav.addObject("acceptLanguage", acceptLanguage);
        mav.addObject("acceptEncoding", acceptEncoding);
        mav.addObject("cookie", cookie);
        mav.addObject("conn", conn);
        mav.addObject("cookie2", cookie2);
        mav.setViewName("result");  //返回值是个字符串,就是视图名
        return mav;
    }
}

写个result.jsp作视图

<%@page pageEncoding="utf-8" 
        contentType="text/html;charset=utf-8" %>
<html>
    <head>
        <title>返回结果</title>
    </head>
    <body style="color:blue;font-size:18px">
        您的请求头信息为:<br>
        Host: ${host }<br><br><br>
        User-Agent: ${userAgent }<br><br><br>
        Accept: ${accept }<br><br><br>
        Accept-Language: ${acceptLanguage }<br><br><br>
        Accept-Encoding: ${acceptEncoding }<br><br><br>
        Cookie: ${cookie }<br><br><br>
        Connection: ${conn }<br><br><br>
        cookie2:${cookie2 }<br><br><br>
    </body>
</html> 

直接访问,可以看到jsp页面列出了这个http请求的头信息和cookie

您的请求头信息为:
Host: localhost:8080
User-Agent: Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:52.0) Gecko/20100101 Firefox/52.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,/;q=0.8
Accept-Language: zh-CN,zh;q=0.8,en-US;q=0.5,en;q=0.3
Accept-Encoding: gzip, deflate
Cookie: {JSESSIONID=javax.servlet.http.Cookie@3c915cc} //奇怪的是,输出的是个Cookie对象
Connection: keep-alive
cookie2:304FDCF278E823F2F2B8850BD7B8B8DC

获取请求URL中的动态参数

@PathVariable注解可以获取请求URL中的动态参数,这样就把url中“?”后面或者http实体中的部分参数,转移到了一个url中,多个url就映射到了一个方法上

写个Controller

package net.sonng.mvcdemo.controller;

import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;

@Controller
public class PathVariableTestController {
    @RequestMapping("/book/{isbn}") //@PathVariable把url中的动态参数传递给了形参,这里的{isbn}貌似还支持正则
    public String path(@PathVariable("isbn") String bookid,Model model){
         model.addAttribute("isbn", bookid);
         return "result";
    }
}

视图result.jsp

<%@page pageEncoding="utf-8" 
        contentType="text/html;charset=utf-8" %>
<html>
    <head>
        <title>返回结果</title>
    </head>
    <body style="color:blue;font-size:18px">
        您请求的书籍的ISBN为:${isbn }
    </body>
</html> 

直接请求:http://localhost:8080/mvcdemo/book/9787111336242 ,输出如下:

您请求的书籍的ISBN为:9787111336242


  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
@RequestParam和@RequestHeader都是Spring MVC框架用于获取请求参数的注解。 @RequestParam注解用于获取请求的参数,可以用在方法的参数上。它可以用于获取GET请求的参数,也可以用于获取POST请求的参数。例如,使用@RequestParam注解可以获取GET请求的查询参数或者POST请求的表单参数。 @RequestHeader注解用于获取请求头的值,也可以用在方法的参数上。它可以用于获取请求头的任意一个字段的值。例如,使用@RequestHeader注解可以获取User-Agent字段的值。 通过使用这两个注解,我们可以方便地获取请求参数请求头的值,从而进行相应的处理。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [springMVC -- 3①@RequestParam(获取请求的参数)②@RequestHeader获取请求头信息)③@CookieValue...](https://blog.csdn.net/weixin_45042569/article/details/107343453)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* [Spring MVC之@RequestParam @RequestBody @RequestHeader 等详解](https://blog.csdn.net/u013915286/article/details/105435688)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值