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

重新启动运行:

可见访问错误;

相关推荐
程序员秘密基地26 分钟前
基于vscode,idea,java,html,css,vue,echart,maven,springboot,mysql数据库,在线考试系统
java·vue.js·spring boot·spring·web app
吾日三省吾码1 小时前
Spring 团队详解:AOT 缓存实践、JSpecify 空指针安全与支持策略升级
java·spring·缓存
花月C3 小时前
Mysql-定时删除数据库中的验证码
数据库·后端·mysql·spring
风铃儿~14 小时前
Spring AI 入门:Java 开发者的生成式 AI 实践之路
java·人工智能·spring
hstar952717 小时前
三十三、面向对象底层逻辑-SpringMVC九大组件之HandlerExceptionResolver接口设计
java·spring·设计模式·架构
面朝大海,春不暖,花不开17 小时前
Spring Security默认配置覆盖指南
java·后端·spring
IT_Octopus19 小时前
多线程下使用缓存+锁Lock, 出现“锁失效” + “缓存未命中竞争”的缓存击穿情况,双重检查缓存解决问题
java·spring·缓存
qq_338032921 天前
Spring Boot/Spring应用中配置自定义RedisTemplate
spring boot·redis·spring
考虑考虑1 天前
Springboot3.5.x版本actuator新属性
spring boot·后端·spring
萌新小码农‍1 天前
Spring框架学习day7--SpringWeb学习(概念与搭建配置)
学习·spring·状态模式