導航:首頁 > 編程語言 > java監控http請求

java監控http請求

發布時間:2024-07-22 16:16:31

Ⅰ 怎樣用java實現模擬HTTP請求,得到伺服器的響應時間等參數

問題簡化一下:對一個ip,一個線程請求100次。該次請求的響應時間版為調用httpClient前的響應時間減去接收到權httpClient響應的時間。注意,本次請求是否有效要判斷。平均響應時間和最大響應時間只不過是響應時間的統計而已,可以用資料庫來做。

就是說資料庫記錄每次測試請求的響應時間,成功與否。統計數據最後出來。
只所以用多線程,是因為單線程順序請求100次,不能模擬伺服器真正的情況。

Ⅱ 濡備綍閫氳繃鎶撳寘宸ュ叿fiddler鑾峰彇java紼嬪簭鐨刪ttp璇鋒眰

鎵撳紑fiddler鐨勬椂鍊欙紝浼氳嚜鍔ㄧ殑鎹曟崏鎵鏈夌殑http璇鋒眰

宸︿晶鏄鎵鏈夌殑璇鋒眰鍒楄〃錛屽彸杈瑰垎涓轟袱涓閮ㄥ垎錛屼笂闈㈡槸欏甸潰涓婄殑璇鋒眰淇℃伅錛屼笅闈㈡槸鏈嶅姟鍣ㄧ殑榪斿洖淇℃伅錛岃鋒眰淇℃伅鍖呮嫭澶存枃浠朵俊鎮錛屽弬鏁頒俊鎮錛岃繑鍥炰俊鎮鍖呮嫭澶存枃浠朵俊鎮錛屽拰鍙嶉堝唴瀹逛俊鎮銆

Ⅲ Java實現攔截HTTP請求的幾種方式

在Java的服務端開發當中,攔截器是很常見的業務場景,這里對Java開發當中幾種常見的攔截器的實現方式進行記錄和分析。案例說明基於Spring Boot環境。
一:實現javax.servlet.Filter介面(使用過濾器方式攔截請求)
import org.springframework.stereotype.Component;import javax.servlet.*;import java.io.IOException;import java.util.Date;@Componentpublic class TimeInterceptor implements Filter {@Overridepublic void init(FilterConfig filterConfig) throws ServletException {System.out.println("time filter init");}@Overridepublic void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {System.out.println("time filter start");long start = new Date().getTime();filterChain.doFilter(servletRequest, servletResponse);System.out.println("time filter 耗時:"+(new Date().getTime()-start));System.out.println("time filter finish");}@Overridepublic void destroy() {System.out.println("time filter destroy");}}

如使用@Compent註解聲明不需要加入其它配置即可使得攔截器生效,但是默認攔截/*,會攔截所有請求。
二:使用@Bean注入自定義攔截器,依然上面的代碼,去掉@Compent註解,創建TimeWebConfig配置類:
import org.springframework.boot.web.servlet.FilterRegistrationBean;import org.springframework.context.annotation.Bean;import org.springframework.context.annotation.Configuration;import java.util.ArrayList;import java.util.List;@Configurationpublic class TimeWebConfig {@Beanpublic FilterRegistrationBean timeFilter(){FilterRegistrationBean registrationBean = new FilterRegistrationBean();TimeInterceptor interceptor = new TimeInterceptor();registrationBean.setFilter(interceptor);List<String> urls = new ArrayList<>();urls.add("/user/*");registrationBean.setUrlPatterns(urls);return registrationBean;}}

上面這兩種攔截請求的實現是基於JavaEE提供的Filter介面實現的,缺點在於,該攔截器實際上是一個過濾器,執行代碼的方法doFilter只提供了request,response等參數,當請求進入被過濾器攔截的時候,我們並不知道這個請求是由哪個控制器的哪個方法來執行的。
三:使用springMVC提供的攔截器,實現org.springframework.web.servlet.HandlerInterceptor介面:
創建自定義的攔截器:
import org.springframework.stereotype.Component;import org.springframework.web.method.HandlerMethod;import org.springframework.web.servlet.HandlerInterceptor;import org.springframework.web.servlet.ModelAndView;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import java.util.Date;@Componentpublic class MyInterceptor implements HandlerInterceptor {@Overridepublic boolean preHandle(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object handler) throws Exception {System.out.println("preHandler");System.out.println(((HandlerMethod) handler).getBean().getClass().getName());System.out.println(((HandlerMethod) handler).getMethod().getName());httpServletRequest.setAttribute("start", new Date().getTime());return true;}@Overridepublic void postHandle(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object o, ModelAndView modelAndView) throws Exception {System.out.println("postHandler");Long start = (Long) httpServletRequest.getAttribute("start");System.out.println("time interceptor 耗時:"+(new Date().getTime()-start));}@Overridepublic void afterCompletion(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object o, Exception e) throws Exception {System.out.println("afterCompletion");Long start = (Long) httpServletRequest.getAttribute("start");System.out.println("time interceptor 耗時:"+(new Date().getTime()-start));System.out.println("ex is:"+e);}}

創建配置類:
import org.springframework.beans.factory.annotation.Autowired;import org.springframework.context.annotation.Configuration;import org.springframework.web.servlet.config.annotation.InterceptorRegistry;import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;@Configurationpublic class WebConfig extends WebMvcConfigurerAdapter {@Autowiredprivate MyInterceptor interceptor;@Overridepublic void addInterceptors(InterceptorRegistry registry) {registry.addInterceptor(interceptor).addPathPatterns("/user/*").excludePathPatterns("/blog/*");}}

此種方式的攔截器當中我們能夠獲取攔截的請求對應的類和方法的相關信息,缺點在於該handler對象無法獲取具體執行方法的參數信息。
四:利用Spring的切面(AOP)實現攔截器:
引入jar包:
<!-- https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-starter-aop --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-aop</artifactId></dependency>

創建切片類:
import org.aspectj.lang.ProceedingJoinPoint;import org.aspectj.lang.annotation.Around;import org.aspectj.lang.annotation.Aspect;import org.springframework.stereotype.Component;import java.util.Date;@Aspect@Componentpublic class TimeAspect {@Around("execution(* com.qinker.controller.UserController.*(..))")public Object handlerControllerMethod(ProceedingJoinPoint point) throws Throwable {System.out.println("time aspect start");long start = new Date().getTime();Object[] args = point.getArgs();for (Object obj : args) {System.out.println("arg is:"+obj);}Object obj = point.proceed();//具體方法的返回值System.out.println("aspect 耗時:"+(new Date().getTime()-start));System.out.println("time aspect end");return obj;}}
aspectj基於AOP實現的攔截器功能十分強大,具體詳解請參考spring官網網站的文檔。

Ⅳ 怎麼用java實現web伺服器的監控

如何用Java實現伺服器 一、HTTP協議的作用原理
WWW是以Internet作為傳輸媒介的一個應用系統,WWW網上最基本的傳輸單位是Web網頁。WWW的工作基於客戶機/伺服器計算模型,由Web 瀏覽器(客戶機)和Web伺服器(伺服器)構成,兩者之間採用超文本傳送協議(HTTP)進行通信。HTTP協議是基於TCP/IP協議之上的協議,是Web瀏覽器和Web伺服器之間的應用層協議,是通用的、無狀態的、面向對象的協議。HTTP協議的作用原理包括四個步驟:

(1) 連接:Web瀏覽器與Web伺服器建立連接,打開一個稱為socket(套接字)的虛擬文件,此文件的建立標志著連接建立成功。

(2) 請求:Web瀏覽器通過socket向Web伺服器提交請求。HTTP的請求一般是GET或POST命令(POST用於FORM參數的傳遞)。GET命令的格式為:

GET 路徑/文件名 HTTP/1.0

文件名指出所訪問的文件,HTTP/1.0指出Web瀏覽器使用的HTTP版本

(3) 應答:Web瀏覽器提交請求後,通過HTTP協議傳送給Web伺服器。Web伺服器接到後,進行事務處理,處理結果又通過HTTP傳回給Web瀏覽器,從而在Web瀏覽器上顯示出所請求的頁面。詳細方法可向itjob老師了解

Ⅳ java HTTP請求 處理

javax.servlet.http.HttpResponse類用於產生返回頁面.通過HttpResponse定義的方法getOutputStream()可以獲得ServletOutputStream的實例,這樣用戶就可以利用ServletOutputStream.write方法向輸出流中寫入返回頁面的內容. 但是ServletOutputStream使用的是預設的編碼方式,如果要使返回頁面中的中文字 符能夠正常顯示,最好顯示地指定所用的字元編碼方式. 通常需要構造一個 OutputStreamWriter , 常式如下:

public void doGet (HttpServletRequest req, HttpServletResponse res)

throws ServletException, IOException

{

res.setContentType("text/html");

ServletOutputStream out = res.getOutputStream();

OutputStreamWriter ow = new OutputStreamWriter(out,"GB2312");

ow.write("這是測試");

ow.flush();

ow.close();

}

Ⅵ 如何通過抓包工具fiddler獲取java程序的http請求

fiddler實際上是通過代理的方式來工作的。默認埠是8888,所以用來請求http的客戶端,需要設定代理,就能被截獲並記錄。這種方式必須依賴fiddler進程正常工作。

以下是java設置代理的一種方式。具體要看使用什麼客戶端程序了。不同的客戶端程序設置代理的方式肯定不一樣。

Proxyproxy=newProxy(java.net.Proxy.Type.HTTP,newInetSocketAddress("127.0.0.1",8888));
URLserverUrl=newURL(url);
HttpURLConnectionconn=(HttpURLConnection)serverUrl.openConnection(proxy);

樣例:

packagecom.http;

importjava.io.BufferedReader;
importjava.io.InputStreamReader;
importjava.net.HttpURLConnection;
importjava.net.InetSocketAddress;
importjava.net.Proxy;
importjava.net.URL;

publicclassHttp302Redirect{

publicstaticvoidmain(String[]args){
try{
Stringurl="http://weibo.com/1253711052";
System.out.println("訪問地址:"+url);

Proxyproxy=newProxy(java.net.Proxy.Type.HTTP,
newInetSocketAddress("127.0.0.1",8888));
URLserverUrl=newURL(url);
HttpURLConnectionconn=(HttpURLConnection)serverUrl
.openConnection(proxy);
conn.setRequestMethod("GET");

conn.addRequestProperty("Accept-Charset","UTF-8;");
conn.addRequestProperty("User-Agent",
"Mozilla/5.0(Windows;U;WindowsNT5.1;zh-CN;rv:1.9.2.8)Firefox/3.6.8");
conn.addRequestProperty("Referer","http://weibo.com");
conn.connect();
BufferedReaderreader=newBufferedReader(newInputStreamReader(
conn.getInputStream()));
StringBufferbuffer=newStringBuffer();
Stringline=reader.readLine();
while(line!=null){
buffer.append(line).append(" ");
line=reader.readLine();
}
reader.close();
conn.disconnect();
System.out.println(buffer);
}catch(Exceptione){
e.printStackTrace();
}
}

}
閱讀全文

與java監控http請求相關的資料

熱點內容
要我蘋果賬號密碼忘記了怎麼辦 瀏覽:578
快快卡在配置游戲文件 瀏覽:393
數據包重發時間怎麼調整 瀏覽:882
youtubeapp怎麼下載 瀏覽:366
編程檢測是什麼 瀏覽:753
網路攝像機的傳輸距離 瀏覽:941
超值貓qq群購秒殺群 瀏覽:138
pdf文件能備注嗎 瀏覽:174
html可視化數據源碼在哪裡 瀏覽:387
adobereader專用卸載工具 瀏覽:28
vivo手機數據如何備份 瀏覽:888
ithmb文件轉換器 瀏覽:66
看病找什麼網站好 瀏覽:579
linux如何查看文件系統 瀏覽:581
linux統計點頻率 瀏覽:627
全民泡泡大戰安琪兒升級 瀏覽:620
編程scratch如何保存 瀏覽:750
aspnetmvc傳json 瀏覽:132
如何下載看神片的狐狸視頻app 瀏覽:579
怎樣將木紋文件添加到cad 瀏覽:223

友情鏈接