广告
返回顶部
首页 > 资讯 > 后端开发 > Python >SpringAOP如何修改请求参数列表
  • 764
分享到

SpringAOP如何修改请求参数列表

SpringAOP请求参数SpringAOP参数SpringAOP请求参数列表 2023-03-07 17:03:04 764人浏览 独家记忆

Python 官方文档:入门教程 => 点击学习

摘要

目录springaop修改请求参数列表SpringAOP获取参数名参数值总结SpringAOP修改请求参数列表 如题,今天遇到了一个问题,要批量在前端请求之后修改其中的一个参数值。

SpringAOP修改请求参数列表

如题,今天遇到了一个问题,要批量在前端请求之后修改其中的一个参数值。

我使用SpringAop拦截请求去修改参数值,因为Spring Aop是无法直接根据参数名获取参数的,所以使用MethodSignature首先获取当前方法的参数列表,找到对应参数的下标,然后根据下标获取当前参数对应的值。

代码如下:

private final String execution = "execution(* com.zxy.test.degitaltool.tree.controller.TestController.*(..))";
 
    
    @Around(execution)
    public Object before(ProceedingJoinPoint pjp) throws Throwable {
        Method method = ((MethodSignature) pjp.getSignature()).getMethod();
        Parameter[] parameters = method.getParameters();
        int keyIndex = geTKEyIndex2(parameters, "treeId");
        Object[] args = pjp.getArgs();
        if (keyIndex != -1) {
            String value = args[keyIndex];//找到对应的值
            ...
        }
        return pjp.proceed(args);//修改参数值
    }
 
    private int getKeyIndex2(Parameter[] parameters, String key) {
        for (int i = 0; i < parameters.length; i++) {
            if (Objects.equals(parameters[i].getName(), key)) {
                return i;
            }
        }
        return -1;
    }

SpringAOP获取参数名参数值

有时候我们在用Spring Aop面向切面编程,需要获取连接点(JoinPoint)方法参数名、参数值。

环境:

Code: 

package com.example.aopdemo.aop;
 
import lombok.extern.slf4j.Slf4j;
import org.aspectj.lang.ProceedingJoinPoint;
import org.aspectj.lang.annotation.Around;
import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.reflect.CodeSignature;
import org.springframework.stereotype.Component;
 
import java.util.HashMap;
import java.util.Map;
 

@Aspect
@Component
@Slf4j
public class DemoAop {
 
    
    @Around(value = "execution(* com.example.aopdemo..*(..)))")
    public Object demoAop(ProceedingJoinPoint proceedingJoinPoint) throws Throwable {
        
        log.debug("执行前:");
        
        Map<String, Object> params = getNameAndValue(proceedingJoinPoint);
        for (Map.Entry<String, Object> entry : params.entrySet()) {
            System.out.println("name: " + entry.getKey() + " value: " + entry.getValue());
        }
        
        Object object = proceedingJoinPoint.proceed();  //执行连接点方法,object:方法返回值
        
        log.debug("执行后:");
        
        return object;
    }
    
    Map<String, Object> getNameAndValue(ProceedingJoinPoint joinPoint) {
        Map<String, Object> param = new HashMap<>();
        Object[] paramValues = joinPoint.getArgs();
        String[] paramNames = ((CodeSignature)joinPoint.getSignature()).getParameterNames();
        for (int i = 0; i < paramNames.length; i++) {
            param.put(paramNames[i], paramValues[i]);
        }
        return param;
    }
}

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持编程网。

--结束END--

本文标题: SpringAOP如何修改请求参数列表

本文链接: https://www.lsjlt.com/news/198887.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • SpringAOP如何修改请求参数列表
    目录SpringAOP修改请求参数列表SpringAOP获取参数名参数值总结SpringAOP修改请求参数列表 如题,今天遇到了一个问题,要批量在前端请求之后修改其中的一个参数值。 ...
    99+
    2023-03-07
    SpringAOP请求参数 SpringAOP参数 SpringAOP请求参数列表
  • SpringAOP怎么修改请求参数列表
    这篇“SpringAOP怎么修改请求参数列表”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“SpringAOP怎么修改请求参数...
    99+
    2023-07-05
  • 如何通过zuul添加或修改请求参数
    zuul添加或修改请求参数 一、为什么要用到这个 在基于 springcloud 构建的微服务系统中,通常使用网关zuul来进行一些用户验证等过滤的操作,比如 用户在 header ...
    99+
    2022-11-12
  • 怎么通过zuul添加或修改请求参数
    这篇文章主要为大家展示了“怎么通过zuul添加或修改请求参数”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“怎么通过zuul添加或修改请求参数”这篇文章吧。zuul添加或修改请求参数一、为什么要用...
    99+
    2023-06-20
  • Python如何修改列表的数字
    要修改列表中的数字,只需通过索引访问到要修改的元素,并将其重新赋值即可。例如,假设有一个列表numbers,想要将索引为2的元素修改...
    99+
    2023-10-18
    Python
  • Java | 使用切面AOP拦截并修改Controller接口请求参数
    关注common wx: CodingTechWork 引言   在开发过程中,会有一些需求将controller层的一些方法入参进行全量转换,最容易想到的可能是在调用下层service方法时,调用公...
    99+
    2023-09-10
    java 开发语言
  • 如何修改redis参数
    修改redis参数的示例:通过redis服务端的终端命令行窗口修改。//修改redis运行参数[root@redis1 utils]# cp /etc/redis/6379.conf /root/6379.conf //可以先备份一份,防止...
    99+
    2022-10-16
  • SpringCloud Feign请求头如何删除修改
    本篇内容主要讲解“SpringCloud Feign请求头如何删除修改”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“SpringCloud Feign请求头如何删除修改”吧!...
    99+
    2023-06-29
  • java如何获取get请求参数
    在Java中,可以使用HttpServletRequest对象来获取GET请求参数。HttpServletRequest类是Java...
    99+
    2023-10-21
    java
  • Vue之请求如何传递参数
    目录一、get请求1、直接拼接2、params属性二、post请求1、data属性传递2、params属性传递三、常见的 Content-Type 类型1、application/x...
    99+
    2023-05-14
    Vue请求传递参数 Vue请求 Vue传递参数
  • php如何获取post请求参数
    在PHP中,可以使用`$_POST`全局变量来获取POST请求中的参数。`$_POST`是一个关联数组,其中键是表单中的输入字段的名...
    99+
    2023-08-11
    php
  • django如何获取get请求参数
    在Django中,可以通过`request.GET`来获取GET请求的参数。`request.GET`是一个类字典的对象,你可以通过...
    99+
    2023-09-26
    django
  • php如何获取get请求参数
    在PHP中,可以通过超全局数组$_GET来获取GET请求参数。以下是一些示例:1. 获取单个GET请求参数:```php$id = ...
    99+
    2023-08-15
    php
  • python如何修改列表元素
    使用python修改列表元素的方法:1.新建python项目;2.定义list列表,并初始化;3.使用append方法添加列表元素;4.使用del方法删除列表元素;具体步骤如下:首先,打开python,并新建一个python项目;pytho...
    99+
    2022-10-18
  • Android WebView通过动态的修改js去拦截post请求参数实例
    需求背景: 需要在用户点击提交按钮的时候拦截用户提交的数据。 遇到的问题: 1.页面不是自家前端做的,不能修改网页中的代码 2.要拦截的请求不是get请求,而是一个post请求...
    99+
    2022-06-06
    参数 post请求 webview 动态 js post Android
  • spring cloud gateway 如何修改请求路径Path
    一、背景 项目升级改造,老项目使用请求url中特定参数进行服务路由,现使用gateway网关进行路由服务信息 二、根据参数信息修改请求路径Path @Component publ...
    99+
    2022-11-12
  • jquery如何获取get请求的参数
    本篇内容介绍了“jquery如何获取get请求的参数”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!在Web开发中,GET请求是非常常见的一种...
    99+
    2023-07-06
  • 我们如何修改MySQL表的列?
    通过使用 MODIFY 关键字和 ALTER TABLE 命令,我们可以修改 MySQL 表的列。其语法如下;语法Alter table table_name MODIFY column_name1 datatype, MODIFY col...
    99+
    2023-10-22
  • SpringBoot 如何自定义请求参数校验
    目录一、Bean Validation基本概念二、基本用法三、自定义校验3.1 自定义注解3.2 自定义Validator3.3 以编程的方式校验(手动)3.4 定义分组校验3.5 ...
    99+
    2022-11-12
  • spring cloud gateway中如何读取请求参数
    spring cloud gateway读取请求参数 1. 我的版本: spring-cloud:Hoxton.RELEASE spring-boot:2.2.2....
    99+
    2022-11-12
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作