反射获取参数

反射获取参数

https://img1.sycdn.imooc.com//climg/627874780922e7fa11730271.jpg

老师 请教下怎么通过aop获取controller里接收的pojo对象name参数的值

搜索

复制

正在回答

登陆购买课程后可参与讨论,去登陆

1回答

同学你好,同学是否是想通过aop获取请求参数,如果是,建议同学参考下方步骤试一下。

1、首先在你的Maven的pom文件里加入aop的依赖:

  <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-aop</artifactId>
  </dependency>

2、在springboot中设置切面,如下所示:

import javax.servlet.http.HttpServletRequest;
 
import org.aspectj.lang.ProceedingJoinPoint;
import org.aspectj.lang.annotation.Around;
import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.Pointcut;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.context.request.RequestAttributes;
import org.springframework.web.context.request.RequestContextHolder;
import org.springframework.web.context.request.ServletRequestAttributes;
import com.google.gson.Gson;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;;
 
@Aspect   //定义一个切面
@Configuration
public class LogRecordAspect {
private static final Logger logger = LoggerFactory.getLogger(UserInterceptor.class);
 
    // 定义切点Pointcut
    @Pointcut("execution(* com.jiaobuchong.web.*Controller.*(..))")
    public void excudeService() {
    }
 
    @Around("excudeService()")
    public Object doAround(ProceedingJoinPoint pjp) throws Throwable {
        RequestAttributes ra = RequestContextHolder.getRequestAttributes();
        ServletRequestAttributes sra = (ServletRequestAttributes) ra;
        HttpServletRequest request = sra.getRequest();
 
        String url = request.getRequestURL().toString();
        String method = request.getMethod();
        String uri = request.getRequestURI();
        String queryString = request.getQueryString();
        logger.info("请求开始, 各个参数, url: {}, method: {}, uri: {}, params: {}", url, method, uri, queryString);
 
        // result的值就是被拦截方法的返回值
        Object result = pjp.proceed();
        Gson gson = new Gson();
        logger.info("请求结束,controller的返回值是 " + gson.toJson(result));
        return result;
    }
}

祝学习愉快!

  • KLovei 提问者 #1

    我想获得前端传递的表单中的参数

    https://img1.sycdn.imooc.com//climg/6278bd5509613ee615550503.jpg

    https://img1.sycdn.imooc.com//climg/6278bd5509eab4fb08390392.jpg

    搜索

    复制

    2022-05-09 15:06:29
  • KLovei 提问者 #2

    怎么通过反射获取这个form中的name属性值

    2022-05-09 15:08:01
  • 好帮手慕小尤 回复 提问者 KLovei #3

    同学你好,查看同学代码已经获取到参数对象了,同学通过arg对象调用类中中的get方法获取到name属性值。如下所示:

    https://img1.sycdn.imooc.com//climg/6278cb860931823509970205.jpg

    祝学习愉快!

    2022-05-09 16:06:47
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师