【JavaEE】_Spring MVC项目获取Header

目录

[1. 使用Servlet原生方法获取Header](#1. 使用Servlet原生方法获取Header)

[2. 使用Spring注解获取Header](#2. 使用Spring注解获取Header)


1. 使用Servlet原生方法获取Header

.java文件内容如下:

java 复制代码
package com.example.demo.controller;

import com.example.demo.Person;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;

import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import java.io.File;
import java.io.IOException;
import java.util.Arrays;
import java.util.List;

@RequestMapping("/Para")
@RestController
public class ParaController {
    @RequestMapping("/getHeader")
    public String getHeader(HttpServletRequest request){
        String userAgent = request.getHeader("User-Agent");
        return "userAgent: "+userAgent;
    }
}

运行启动浏览器,页面如下:

2. 使用Spring注解获取Header

可以使用Spring 提供的注解@RequestHeader获取HTTP请求中的header;

.java文件内容如下:

java 复制代码
package com.example.demo.controller;

import com.example.demo.Person;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;

import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import java.io.File;
import java.io.IOException;
import java.util.Arrays;
import java.util.List;

@RequestMapping("/Para")
@RestController
public class ParaController {
    @RequestMapping("/getHeader2")
    public String getHeader(@RequestHeader("User-Agent") String userAgent){
        return "userAgent: "+userAgent;
    }
}

运行启动后,使用浏览器访问对应URL:

可以使用Fiddler抓包,查看HTTP请求信息:

可见二者对应;

注:1.注意:@RequestHeader注解的参数需与HTTP请求中的header的键名一致:

如现将后端的参数名改为userAgent而非User-Agent,

java 复制代码
    @RequestMapping("/getHeader2")
    public String getHeader(@RequestHeader("userAgent") String userAgent){
        return "userAgent: "+userAgent;
    }

重新启动运行:

可见访问错误;

相关推荐
一只叫煤球的猫6 小时前
手撕@Transactional!别再问事务为什么失效了!Spring-tx源码全面解析!
后端·spring·面试
赤橙红的黄7 小时前
自定义线程池-实现任务0丢失的处理策略
数据库·spring
小时候的阳光8 小时前
SpringBoot3 spring.factories 自动配置功能不生效?
spring boot·spring·失效·factories·imports
张小洛10 小时前
Spring IOC容器核心阶段解密:★Bean实例化全流程深度剖析★
java·后端·spring·ioc容器·bean实例化
非ban必选11 小时前
spring-ai-alibaba官方 Playground 示例
java·人工智能·spring
要开心吖ZSH12 小时前
《Spring 中上下文传递的那些事儿》Part 2:Web 请求上下文 —— RequestContextHolder 与异步处理
java·spring
master-dragon13 小时前
spring-ai 工作流
人工智能·spring·ai
考虑考虑13 小时前
使用jpa中的group by返回一个数组对象
spring boot·后端·spring
圆滚滚肉肉14 小时前
后端MVC(控制器与动作方法的关系)
后端·c#·asp.net·mvc
ithadoop14 小时前
Spring生态:云原生与AI的革新突破
人工智能·spring·云原生