日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 前端技术 > javascript >内容正文

javascript

SpringBoot AOP完全讲解二:统一处理请求日志

發布時間:2024/9/30 javascript 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 SpringBoot AOP完全讲解二:统一处理请求日志 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

轉載請標明出處:http://blog.csdn.net/zhaoyanjun6/article/details/80669451
本文出自【趙彥軍的博客】

前言

不了解 AOP 概念的同學,請先看 AOP 基礎文章。

SpringBoot AOP完全講解一:基礎概念

添加依賴

maven

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

gradle

compile('org.springframework.boot:spring-boot-starter-web','org.springframework.boot:spring-boot-starter-aop' )

新建切面文章

新建切面類 ControllerAspect

package com.yiba.didiapi.aop;import org.aspectj.lang.annotation.After; import org.aspectj.lang.annotation.Aspect; import org.aspectj.lang.annotation.Before; import org.aspectj.lang.annotation.Pointcut; import org.springframework.stereotype.Component; import org.springframework.web.context.request.RequestAttributes; import org.springframework.web.context.request.RequestContextHolder; import org.springframework.web.context.request.ServletRequestAttributes;import javax.servlet.http.HttpServletRequest; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.util.Enumeration; import java.util.HashMap; import java.util.Map; import java.util.function.BiConsumer;@Aspect @Component public class ControllerAspect {//對 com.yiba.didiapi.controller 這個包做切面@Pointcut("execution(public * com.yiba.didiapi.controller.*.*(..))")public void postController() {}@Before("postController()")public void beforePost() {//請求前處理RequestAttributes requestAttributes = RequestContextHolder.getRequestAttributes();HttpServletRequest request = ((ServletRequestAttributes) requestAttributes).getRequest();Enumeration<String> headerNames = request.getHeaderNames();//獲取請求的 headerHashMap<String, String> headMap = new HashMap<>();while (headerNames.hasMoreElements()) {//以此取出頭信息String headerName = headerNames.nextElement();String headerValue = request.getHeader(headerName);//取出頭信息內容headMap.put(headerName, headerValue);}//獲取完整的url路徑:http://localhost:8083/sdk/wii/swbuStringBuffer url = request.getRequestURL();//獲取請求的資源名部分:/sdk/wii/swbuString uri = request.getRequestURI();//獲取請求類型:POSTString method = request.getMethod();//獲取請求ip:12.45.36.23String ip = request.getRemoteAddr();System.out.println("url:" + url);System.out.println("uri:" + uri);System.out.println("method:" + method);System.out.println("ip:" + ip);headMap.forEach(new BiConsumer<String, String>() {@Overridepublic void accept(String s, String s2) {System.out.println("head name:" + s + " value:" + s2);}});//獲取請求表單參數Map<String, String[]> paramsMap = request.getParameterMap();String queryString = "";for (String key : paramsMap.keySet()) {String[] values = paramsMap.get(key);for (int i = 0; i < values.length; i++) {String value = values[i];queryString += key + "=" + value + "&";}}// 去掉最后一個空格if (queryString.length() > 0) {queryString = queryString.substring(0, queryString.length() - 1);System.out.println("queryString:" + queryString);}//獲取post請求的body內容try {StringBuffer sb = new StringBuffer();InputStream is = request.getInputStream();BufferedReader br = new BufferedReader(new InputStreamReader(is, "utf-8"));String s = "";while ((s = br.readLine()) != null) {sb.append(s);}//獲取post請求的body內容System.out.println("request body:" + sb.toString());} catch (IOException e) {e.printStackTrace();}}@After("postController()")public void afterPost() {//請求后處理}}

參考資料

SpringBoot AOP統一處理請求日志


個人微信號:zhaoyanjun125 , 歡迎關注

總結

以上是生活随笔為你收集整理的SpringBoot AOP完全讲解二:统一处理请求日志的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。