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

重新启动运行:

可见访问错误;

相关推荐
壹佰大多2 小时前
【spring如何扫描一个路径下被注解修饰的类】
java·后端·spring
DokiDoki之父2 小时前
Spring—注解开发
java·后端·spring
catoop4 小时前
Sprintf Boot 之 Nacos 配置中心实践(spring.config.import=optional:nacos:)
spring·springboot
keke_俩个科5 小时前
ShardingSphere分库分表基础配置与使用说明
java·数据库·分布式·spring
南部余额5 小时前
Spring MVC 拦截器interceptor
java·spring·mvc
Touch&6 小时前
Spring5.3.10源码编译和调试(IDEA+Gradle)的过程
spring·framework·gradle·idea·spring源码编译
lang2015092811 小时前
Spring 4.1新特性:深度优化与生态整合
java·后端·spring
hello 早上好11 小时前
持久化输出与 ChatMemory
java·spring
vx Biye_Design14 小时前
servlet宠物医院管理系统-计算机毕业设计源码77418
java·vue.js·spring·servlet·eclipse·mybatis
代码不停14 小时前
JavaEE初级 多线程案例(单例模式、阻塞队列、线程池、定时器)
java·开发语言·单例模式·java-ee