導航:首頁 > IDC知識 > javahttp伺服器框架

javahttp伺服器框架

發布時間:2020-12-15 21:10:47

1、如何用Java實現Web伺服器

如何用Java實現Web伺服器 一、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瀏覽器上顯示出所請求的頁面。

2、java http伺服器有哪些功能

HTTP是個大協議,完整功能的HTTP伺服器必須響應資源請求,將URL轉換為本地系統的資源名。響應各種形式的HTTP請求(GET、POST等)。處理不存在的文件請求,返回各種形式的狀態碼,解析MIME類型等。但許多特定功能的HTTP伺服器並不需要所有這些功能。例如,很多網站只是想顯示「建設中「的消息。很顯然,Apache對於這樣的網站是大材小用了。這樣的網站完全可以使用只做一件事情的定製伺服器。Java網路類庫使得編寫這樣的單任務伺服器輕而易舉。

定製伺服器不只是用於小網站。大流量的網站如Yahoo,也使用定製伺服器,因為與一般用途的伺服器相比,只做一件事情的伺服器通常要快得多。針對某項任務來優化特殊用途的伺服器很容易;其結果往往比需要響應很多種請求的一般用途伺服器高效得多。例如,對於重復用於多頁面或大流量頁面中的圖標和圖片,用一個單獨的伺服器處理會更好(並且還可以避免在請求時攜帶不必要的Cookie,因而可以減少請求/響應數據,從而減少下載帶寬,提升速度);這個伺服器在啟動時把所有圖片文件讀入內存,從RAM中直接提供這些文件,而不是每次請求都從磁碟上讀取。此外,如果你不想在包含這些圖片的頁面請求之外單獨記錄這些圖片,這個單獨伺服器則會避免在日誌記錄上浪費時間。

本篇為大家簡要演示三種HTTP伺服器:
(1) 簡單的單文件伺服器
(2) 重定向伺服器
(3) 完整功能的HTTP伺服器

3、java怎麼實現http伺服器怎麼解決

參數:url:目標地址data:要post的數據比如a=1&b=2publicstringGetPostString(stringurl,stringdata){try{byte[]postBytes=Encoding.GetEncoding("utf-8").GetBytes(data);HttpWebRequestmyRequest=(HttpWebRequest)WebRequest.Create(url);myRequest.Method="POST";myRequest.ContentType="text/html";myRequest.ContentLength=postBytes.Length;myRequest.Proxy=null;StreamnewStream=myRequest.GetRequestStream();newStream.Write(postBytes,0,postBytes.Length);newStream.Close();//=(HttpWebResponse)myRequest.GetResponse();using(StreamReaderreader=newStreamReader(myResponse.GetResponseStream(),Encoding.GetEncoding("utf-8"))){stringcontent=reader.ReadToEnd();returncontent;}}catch(System.Exceptionex){returnex.Message;}}

4、怎麼用java寫http伺服器

情況些復雜serverSocket端接收請求始逐步做debug吧

5、使用Java開發一個HTTP伺服器,能夠處理POST,GET,PUT,DELETE請求。

使用Java開發一個HTTP伺服器,能夠處理POST,GET,PUT,DELETE請求。
1. 監聽埠可以配置;
2. 可以配置的一個工作目錄;
3. GET請求可以獲得相對於該工作目錄的靜態文件的內容,內容格式限定為html,css,js,json,xml,txt,jpg,gif,png,ico;
a) 例如 GET /f/test1.html返回工作目錄下f文件夾下test1.html內容;
b) 在GET請求的的應答中盡可能多的在HTTP頭中返回些能獲得的到的標準的頭信息;
4. POST請求可以在工作目錄中創建請求路徑對應的文件,文件內容為POST請求的內容;
a) 例如 POST /f/test2.html,在工作目錄下f文件夾下創建test2.html文件,並將POST內容作為test2.html的內容。
5. PUT請求可以替換對應路徑的文件,修改的內容為PUT請求的內容。注意與POST不同。
a) 例如 PUT /f/test2.html,在工作目錄下f文件夾替換test2.html文件的內容,並將PUT內容作為test2.html的內容。
6. DELET請求可以刪除對應路徑的文件。
a) 例如 PUT /f/test2.html,在工作目錄下f文件夾刪除test2.html文件。
7. POST,PUT,DELETE成功後返回200,出現找不到文件的情況返回404錯誤,出現讀寫文件錯誤返回500錯誤。
8. 特別的處理~路徑下的GET請求,其包含2個參數,一個是類名,一個是方法名,這些方法都是些無參數並且以字元串為返回值的方法,GET請求應返回這些方法的返回值。
a) 例如 GET /~?class=com.test.Test&method=getTIme,則調用com.test.Test類中String getTIme()方法,將返回值作為GET請求的返回;
b) 若找不到類或方法返回404錯誤;
c) 若出錯返回500錯誤;
9. 特別的處理$路徑下的GET請求,能夠為瀏覽器添加cookie,key為sid,值為UUID的隨機字元串。
注意:不是在tomcat之類servlet容器上開發,而是要開發個類似servlet容器的東西。

6、java 如何搭建http伺服器

看你具體是想做什麼,現在現成的開源的java的http伺服器有很多,像tomcat之類的都有http伺服器功能,如果你只是單純的需要用的話,直接用tomcat就好了

但是如果你是做要自己用java實現一個http伺服器的話就要稍微麻煩一點

http伺服器,本質上還是基於tcpip協議的伺服器,首先用java的ServerSocket監聽一個埠(也可以使用開源的server組件,如quickserver之類的),然後對客戶端發上來的數據進行處理,這里就需要了解一下http協議了,因為上來的數據,都是按照http協議來組織的,你需要將請求數據解析後,將響應數據組織成http的響應,發回給客戶端。這樣一個簡單的http伺服器就實現了。

但是這個請求和響應都有很多種類,一個完整的http伺服器應該要都能夠支持,所以這裡面的工作量還是有一點的。

另外,上面說的http伺服器只是一個靜態的伺服器,如果你想讓你寫的服務具有動態功能,那你的伺服器還得提供javaee的容器功能,這樣做下去,沒准你也能寫一個tomcat出來了……

7、java swing通過httpclient向伺服器端發送post請求如何做

 /**
     * @Description: post請求遠程http鏈接
     * @param url 鏈接地址
     * @param bean 實體對象參數
     * @param params 多個字元串參數
     * @return json
     * @throws Exception
     */
    public static String doPostWithBean(String url,Object bean,String...params) throws Exception {
        System.err.println(params.length);
        HttpClient client = getHttpClient();
        HttpPost httppost = new HttpPost(url);
        MultipartEntity entity = new MultipartEntity();
        for(Field f : bean.getClass().getDeclaredFields()){
            f.setAccessible(true);
            if(f.get(bean)!=null&&!"".equals(f.get(bean).toString())){
                entity.addPart(f.getName(),new StringBody(f.get(bean).toString(),Charset.forName("UTF-8")));
            }
        }
        for(Field f : bean.getClass().getSuperclass().getDeclaredFields()){
            f.setAccessible(true);
            if(f.get(bean)!=null&&!"".equals(f.get(bean).toString())){
                entity.addPart(f.getName(),new StringBody(f.get(bean).toString(),Charset.forName("UTF-8")));
            }
        }
        if(params!=null && params.length!=0) {
            Map<String,Object> paramsMap = MapTool.getParamMap(params);
            for(String paramName:paramsMap.keySet()){
                entity.addPart(paramName,new StringBody((String) paramsMap.get(paramName),Charset.forName("UTF-8")));
            }
        }
        httppost.setEntity(entity);
        String resp = null;
        try {
            HttpResponse response = client.execute(httppost);
            HttpEntity resEntity = response.getEntity();
            if (resEntity != null) {
                resp = EntityUtils.toString(resEntity, "UTF-8");
            }
            if (resEntity != null) {
                EntityUtils.consume(resEntity);
            }
        } finally {
            client.getConnectionManager().shutdown();
        }
        return resp;
    }

8、java 開發一個http的代理伺服器

說實話,你的問題很那個。。
不過應該也能實現。
現在問題主要是由於b不能訪問c,所以c只能使用TimerTask定時去訪問b。
b有2個listener,一個負責偵聽來自a的請求,一個負責偵聽來自b的。

b中應該會使用到多線程。
下面定義a的Request為x,c的Request為y
由於b會有多個來自a轉發的請求,可能會有x1\x2\x3等很多並發的請求,所以b在初始化的時候就需要建立一個等待池.
等待池應該是單例且線程同步的,x一來就new object(request,response),然後放入list。
c的定時器一到,就訪問b開放給c的listener,request y。y首先遍歷等待池,取出x的request,然後用取出x的response的返回給a。直到等待池為空為止,然後y response給c。

不過要注意的是
1)你會發現,由於c給b的數據應該是放到request y裡面作為參數來傳的。
2)a的請求如果需要c不同數據介面的數據,那c-->b的request y里就應該包含所有的數據,然後在遍歷等待池的時候根據a-->b的request x的id(可以使用sessionid)來區分取哪個。
3)最差的情況,
1,a源源不斷的發出x請求,c的request遍歷就死循環。
2,如果c的定時時間太短,y1還沒完,y2就來了。
3,a源源不斷的發出x請求,但是某一請求Xn就無法搶到資源,Xn就掛掉。

這裡面很多處理你還要多加控制。

這個想法沒實驗過,其實如果b可以訪問c,其實什麼問題都沒有了
最後問一句,誰給你這樣的需求的?打他

9、linux中如何實現用java寫一個http伺服器,本人新手一枚,不知道從哪裡開始

建議你系統學習下:
1.java基礎
2.sevlet
3.jsp
4.tomcat
5.mysql
6.ssh框架
7.ssm框架
這些內容網上都有免費教程

10、怎麼用Java寫一個HTTP伺服器

java網路編程。現在可以用nio的。netty框架很受歡迎。網頁鏈接

與javahttp伺服器框架相關的知識