【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;
    }

重新启动运行:

可见访问错误;

相关推荐
lv__pf3 小时前
Spring配置类解析 【TL spring 11】
java·前端·spring
风流 少年4 小时前
Spring AI 2.0:Hello World
java·人工智能·spring
@卓越俊逸_角立杰出@10 小时前
java实现Agent+ReAct demo(Spring Boot + Spring AI Alibaba ReAct Agent)
java·spring·react.js
不才不才不不才11 小时前
Spring 源码系列(20): @SpringBootApplication 三注解拆解
java·后端·spring
少晓年1 天前
Spring Security OAuth2.0 自定义过滤器实践:从原理到实战
spring
盗理者1 天前
AI Agent 技能分享|SQL 性能诊断与优化
java·sql·spring·skill
月光有害1 天前
理解 Spring 依赖注入:从构造器注入到集合与条件 Bean
java·后端·spring
小当家.1051 天前
LLM服务缓存与连接池管理:三层缓存架构与ChatClient池化
java·后端·spring·缓存·llm·agent
小当家.1051 天前
Token成本控制实战:语义缓存、上下文压缩与工具缓存
java·spring·缓存·token·上下文
IT利刃出鞘1 天前
SpringBoot--解决@Valid放在接口的List上时无效的问题
java·spring