首页 > 其他分享 >请求参数处理

请求参数处理

时间:2024-10-31 13:08:38浏览次数:1  
标签:请求 处理 param id 参数 public getQueryParam String

获取 cookie:@CookieValue

@GetMapping("/getCookie")
public String getCookie(@CookieValue(value = "JSESSIONID") String jSessionId) {
    return jSessionId;
}

获取 header:@RequestHeader

@GetMapping("/getHeader")
public String getHeader(@RequestHeader(value = "X-Custom-Header") String customHeader) {
    return "Header Value: " + customHeader;
}

获取 url 单个查询字符串:@RequestParam

// http://localhost:8080/getQueryParam?param=value1
@GetMapping("/getQueryParam")
public String getQueryParam(@RequestParam(value = "param") String param) {
	return "Query Parameter Value: " + param;
}

// 也可以不加注解
@GetMapping("/getQueryParam")
public String getQueryParam(String param) {
	return "Query Parameter Value: " + param;
}

// 跟请求方式也无关
@PostMapping("/getQueryParam")
public String getQueryParam(String param) {
	return "Query Parameter Value: " + param;
}

获取 url 路径参数:@PathVariable

// http://localhost:8080/users/1
@GetMapping("/users/{id}")
public String getQueryParam(@PathVariable("id") Long id) {
	 System.out.println(id);
}

// 和请求方式没关系
@PostMapping("/users/{id}")
public String getQueryParam(@PathVariable("id") Long id) {
	 System.out.println(id);
}

@RequestParam 、@CookieValue、@RequestHeader、@PathVariable 注解

四个家伙唯一的区别就是 @PathVariable 没有 defaultValue 属性

@Target(ElementType.PARAMETER)
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface RequestParam {

	/**
	 * 这俩家伙互为别名
	 */
	@AliasFor("name")
	String value() default "";
	@AliasFor("value")
	String name() default "";

	// 是否必传(默认必传,不传会报错)可以改为 false 非必传
	boolean required() default true;

	// 可以指定默认值(@PathVariable 没有)
	String defaultValue() default ValueConstants.DEFAULT_NONE;

}

获取 url 多个查询字符串

直接把对象怼在方法参数就行了,不需要注解

// http://localhost:8080/getUrlParm?key1=val1&key2=val2
@GetMapping("/getUrlParm")
public void postBody(UrlParm param) {
     System.out.println(param);
}

@Data
public class UrlParam{
    private String key1;
	private String key2;
}

获取请求体

// @RequestBody 会把请求体转成 UrlParam 对象
@PostMapping("/postBody")
public void postBody(@RequestBody UrlParam body) {
   System.out.println(body);
}

同时获取请求头和请求体

给 HttpEntity 指定不同的泛型,还会

@PostMapping("/data")
public void receiveData(@RequestBody HttpEntity<MyData> httpEntity) {
    // 获取请求头,请求头是 HttpHeaders 对象
    HttpHeaders headers = httpEntity.getHeaders();
    // 获取请求体,请求体可以指定泛型
    MyData myData = httpEntity.getBody();

    System.out.println("Headers: " + headers);
    System.out.println("Body: " + requestBody);

}

不常用的

  • @RequestAttributes:获取 HttpServletRequest 请求域的数据
  • @SessionAttributes:获取会话中的属性
  • @MatrixVariable:获取 url 矩阵变量

使用原生 Servlet Api

直接把 HttpServletRequest 、HttpServletResponse、HttpSession 怼在方法参数就可以

@GetMapping("/getCookie")
public String getCookie(HttpServletRequest request) {
    // 获取所有 cookies
    Cookie[] cookies = request.getCookies();
    if (cookies != null) {
        for (Cookie cookie : cookies) {
            // 找到指定名称的 cookie
            if ("myCookieName".equals(cookie.getName())) {
                return "Cookie Value: " + cookie.getValue();
            }
        }
    }
    return "Cookie not found";
}

标签:请求,处理,param,id,参数,public,getQueryParam,String
From: https://www.cnblogs.com/cyrushuang/p/18517516

相关文章

  • 在K8S中,有一家拼车公司希望通过同时扩展其平台来增加服务器数量,该公司将如何处理服务
    在Kubernetes(K8s)环境中,一家拼车公司若希望通过同时扩展其平台来增加服务器数量,需要采取一系列有序且高效的步骤来处理服务器及其安装。以下是一个详细的指南:1.需求评估与规划性能需求分析:根据用户增长预测、数据处理需求和应用程序负载来评估所需的服务器规格和数量。考虑......
  • 鸿蒙Navigation处理启动页跳转到首页问题
    在使用Navigation时时,你是否遇到了这样一个问题,Navigation加载启动页为入口,在启动页replace到首页,使首页替换换启动页,结果发现不生效,启动页依然存在。为什么根页面启动页不能直接替换成首页我们验证后发现当页面是Navigation的子页面时,是可以使用replace替换,当要替换根页面时,却......
  • BitNet.cpp:革新性的1比特LLM推理框架,让CPU也能驾驭百亿参数大模型!
    ......
  • 在 Odoo 中,确实可以通过 SQL 语句来提升一些功能逻辑的处理效率。将 SQL 转为 Python
    1.使用env.cr.execute执行SQL语句OdooORM提供的env.cr.execute()可以直接执行SQL语句,这样可以在Python代码中调用SQL逻辑,结合Odoo的业务模型实现复杂的逻辑操作。execute()方法适合处理批量数据更新、复杂查询等。示例:批量更新customer_id字段defupdate_......
  • 在 SQL 中,有许多高效、简洁的函数可用于数据处理、查询优化和数据转换。
    以下是一些常见的SQL函数及其详细中文解释、示例和总结:1.COALESCE作用:COALESCE函数从左到右依次检查其参数,并返回第一个非空的值。如果所有参数都为空,则返回NULL。应用场景:可以在处理缺失数据时使用,尤其是多个字段可能为空的情况下,可以选择一个优先级最高的非空值。......
  • 关于Web前端使用JavaScript常见的数据类型处理小技巧
    1.1获取字符串长度  如果想获取这个字符串的长度,也就是它里面有多少个字符,可以使用 length 属性:consts="HelloWorld";console.log(s.length)1.2 转换大小写toUpperCase() 方法可以将字母全部大写consts="HelloWorld";console.log(s.toLowerCase());......
  • Python数据分析NumPy和pandas(十七、pandas 二进制格式文件处理)
    以二进制格式存储(或序列化)数据的一种简单方法是使用Python的内置pickle模块。同时,pandas构造的对象都有一个to_pickle方法,该方法以pickle格式将数据写入磁盘。我们先把之前示例用到的ex1.csv文件加载到pandas对象中,然后将数据以二进制pickle格式写入examples/frame_p......
  • 2024年信号处理与神经网络应用国际学术会议(SPNNA 2024) 2024 International Conferenc
    @目录一、会议详情二、重要信息三、大会介绍四、出席嘉宾五、征稿主题六、咨询一、会议详情二、重要信息大会官网:https://ais.cn/u/vEbMBz提交检索:EICompendex、IEEEXplore、Scopus三、大会介绍2024年信号处理与神经网络应用国际学术会议(SPNNA2024)将于2024年12月13日......
  • MySQL max_allowed_packet参数设置
    MySQL根据配置文件会限制Server接受的数据包大小。有时候大的插入和更新会受max_allowed_packet参数限制,导致写入或者更新失败。(比方说导入数据库,数据表)查看目前配置:代码如下:mysql>showVARIABLESlike'%max_allowed_packet%';+--------------------------+--------......
  • 基于MATLAB多参数结合火焰识别系统
    一、课题介绍本设计为基于MATLAB的火焰烟雾火灾检测系统。传统的采用颜色的方法,误识别大,局限性强。结合火焰是实时动态跳跃的,采用面积增长率,角点和圆形度三个维度相结合的方式判断是否有火焰。该设计测试对象为视频,通过下一帧和上一帧的差异发现是否有火情,并可发出语音报警。......