1. 程式人生 > >使用aop攔截請求返回資訊

使用aop攔截請求返回資訊

@Pointcut(
“execution(public * com.mobcb.platform.service..controller...*(..)) ”
+ “@annotation(org.springframework.web.bind.annotation.RequestMapping)”)
public void doFilter() {

}

使用這個註解,將切點確定在某個包下的所有類中,然後@annotation註解將reqMapping註解確定,
將他在dofilter方法開面做操作

@Around(“doFilter()”)
spring aop中@Around @Before @After三個註解的區別@Before是在所攔截方法執行之前執行一段邏輯。@After 是在所攔截方法執行之後執行一段邏輯。@Around是可以同時在所攔截方法的前後執行一段邏輯。

[Java]程式碼

package com.itsoft.action;

import org.springframework.context.support.ClassPathXmlApplicationContext;
import org.springframework.stereotype.Controller;

/**
 * 
 * @author
zxf * 演示aop測試類 */
@Controller public class UserAction { public void queryUsers(){ System.out.println("查詢所有使用者【all users list】"); } public static void main(String[] args) { ClassPathXmlApplicationContext ctx = new ClassPathXmlApplicationContext("application-aop.xml"); UserAction userAction = (UserAction)ctx.getBean("userAction"
); userAction.queryUsers(); ctx.destroy(); } }
package com.itsoft;

import org.aspectj.lang.ProceedingJoinPoint;
import org.aspectj.lang.annotation.After;
import org.aspectj.lang.annotation.Around;
import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.Before;
import org.aspectj.lang.annotation.Pointcut;
import org.springframework.stereotype.Component;

/**
 * 
 * @author Administrator
 * 通過aop攔截後執行具體操作
 */
@Aspect
@Component
public class LogIntercept {

    @Pointcut("execution(public * com.itsoft.action..*.*(..))")
    public void recordLog(){}

    @Before("recordLog()")
    public void before() {
        this.printLog("已經記錄下操作日誌@Before 方法執行前");
    }

    @Around("recordLog()")
    public void around(ProceedingJoinPoint pjp) throws Throwable{
        this.printLog("已經記錄下操作日誌@Around 方法執行前");
        pjp.proceed();
        this.printLog("已經記錄下操作日誌@Around 方法執行後");
    }

    @After("recordLog()")
    public void after() {
        this.printLog("已經記錄下操作日誌@After 方法執行後");
    }

    private void printLog(String str){
        System.out.println(str);
    }
}

相關推薦

使用aop攔截請求返回資訊

@Pointcut( “execution(public * com.mobcb.platform.service..controller...*(..)) ”

SpringBoot基於AOP攔截請求列印日誌

一:需求背景.       1.1 現在需要在特定的方法執行前後,做一些日誌處理,儘可能不要寫重複程式碼,優雅的完成處理方法日誌列印.       1.2 簡單實現分析:如果在一些方法裡面

fiddler用法:修改http請求返回資訊

假如我們只需要看前端頁面的一些展示效果,不用關注後臺實現的話。 一個簡便的做法是把前端http的請求重定向到你本地的一個檔案。 1.替換返回內容 假如有個這樣的一個request wenread.com/getxml   期望返回的結果是一個xml檔案,那我們可以本地建立

攔截retrofit資料請求返回資訊來判斷程式錯誤點

    今天專案中替換成了測試伺服器的url。用POSTMAN跑了介面可以正常的返回資料,然後用GSONFORMAT生成了MODEL。    然而執行APP的時候程式直接崩掉了。給我返回了下面的一段資訊錯誤——        return ARRAY_OBJECT but w

使用 aop攔截 springMVC的controller並獲取請求引數及返回結果

有人說使用aop攔截不到springMVC的controller,一般出現此種情況大多是由於配置錯誤造成,不廢話直接進入主題: 1、applicationContext.xml 配置掃描 除@controller外的bean <context:component

Java後臺傳送post請求,並接收返回資訊

/** * 向指定的 URL傳送遠端POST方法的請求 * @param url傳送請求的 URL * @param json請求引數, * @return 所代表遠端資源的響應結果 */ public static JSONObject sendPost(String

Shiro攔截器,在登入時判斷是ajax請求返回json,普通請求跳轉頁面

在使用shiro時,會遇到普通的頁面請求以及api介面呼叫的請求,因此需要區別對待來判斷是跳轉登入頁面還是返回json的資料: 1.建立攔截器 package org.zyyd.base.filter; import com.alibaba.fastjson.JSONObject;

spring boot通過自定義註解和AOP攔截指定的請求

本文主要通過切面類和自定註解的方式,攔截指定的介面(程式碼中已經作了詳細的說明) 目錄 一 準備工作 三 切面類 五 測試結果  一 準備工作 1.1 新增依賴 通過spr

HttpClient 傳送Post Get請求例子 包含設定請求資訊和獲取返回資訊

                package com.test.action;import java.io.IOException;import java.util.ArrayList;import java.util.List;import org.apache.commons.httpclient.De

HttpClient 傳送Post Get請求例子(包含設定請求資訊和獲取返回資訊

package com.test.action; import java.io.IOException; import java.util.ArrayList; import java.util.List; import org.apache.commons.httpclient.DefaultHt

Spring AOP攔截對Controller的請求時的配置失敗

之前學了Spring AOP的內容,在普通的應用上使用是沒有問題的,後來由於做web程式,所以想用來攔截http的請求,以便記錄日誌,但是在配置過程當中,出現了錯誤,具體內容如下: 之前我們講到,要配置一個切面類,要把它放入IoC容器中,並且還要使用如下程式碼配置: &l

CURLOPT_HEADER 控制是否返回請求資訊

微信請求並儲存access_token的一段程式碼 $curl = curl_init(); curl_setopt($curl, CURLOPT_URL, $url);curl_setopt($curl, CURLOPT_HEADER, 0);//設定為0、1控制是否返

架構小白到磚家-06-請求返回豐富資訊-如何整合thymeleaf?

瀏覽器和應用怎麼傳送請求和傳遞引數,咱們是掌握了,好像平時我們經常訪問的網站,應用返回的內容都非常豐富,怎麼才能讓咱們的應用也能做到呢? 我們需要先看看http全稱叫超文字傳輸協議,也就是說http協議本身是能夠傳輸大量資訊。另外在web應用的世界裡面,為什麼是使用瀏覽器作為web應用訪問

使用攔截器獲取請求引數資訊並寫入日誌

前言 使用攔截器獲取請求的引數,ip地址等等資訊,然後寫入日誌更加方便後期異常的維護。 2.程式碼例項 public class RequestParamInfoIntorceptor extends HandlerInterceptorAdapter

php獲取請求返回資訊

很多時候需要獲取一個請求的返回頭資訊,在php中可以通過curl的方式獲取,還有更簡單的 php中有一個get_headers()函式就是專門用來做這個 的 <?php $url = 'http://www.example.com'; print_r(get_hea

HTTP請求返回狀態碼和提示資訊

整理概括如下: 1xx - 資訊提示 這些狀態程式碼表示臨時的響應。客戶端在收到常規響應之前,應準備接收一個或多個 1xx 響應。 2xx - 成功 這類狀態程式碼表明伺服器成功地接受了客戶端請求。 3xx - 重定向 客戶端瀏覽器必須採取更多操作來實現請求。

你應該知道的HTTP請求返回狀態碼和提示資訊

整理概括如下: 1xx – 資訊提示 這些狀態程式碼表示臨時的響應。客戶端在收到常規響應之前,應準備接收一個或多個 1xx 響應。 2xx – 成功 這類狀態程式碼表明伺服器成功地接受了客戶端請求。 3xx – 重定向 客戶端瀏覽器必須採取更多操作來實現請求。例如,瀏覽器

php curl請求資訊返回資訊

在用curl抓取網頁內容的時候,經常要知道,網頁返回的請求頭資訊,和請求的相關資訊,特別是在請求過程中存在重定向的時候獲取請求返回頭資訊對分析請求內容很有幫助 下面就是一個請求中存在重定向的例子,我們的目的是要獲取最終實際請求的url地址 $url='http://ww

php的curl獲取https加密協議請求返回json資料進行資訊獲取

歡迎加入php架構師之旅 群:410028331(招納賢人-大師中)方便技術的交流 <?php header("Content-type:text/html; charset=utf-8");

android中Retrofit2.0的封裝:設計到請求前後的操作,比如新增請求頭,攔截請求頭,攔截返回體等

這裡關於android如何整合retrofit2.0就詳細介紹了,相信網路上也有很多的例子。首先retrofit關於請求體如何加入的話,這裡使用註解就能解決大部分問題,而retrofit官網也給出了很多很好用的註解,只要在interface中宣告就行。主要使用分為以下例子:①