導航:首頁 > IDC知識 > http伺服器java

http伺服器java

發布時間:2021-02-18 23:58:13

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

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

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的代理伺服器

說實話,你的問題很那個。。
不過應該也能實現。
現在問題主要是由於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,其實什麼問題都沒有了
最後問一句,誰給你這樣的需求的?打他

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里http伺服器如何將文件製成一個下載路徑

/**
 * 文件下載
 */
@RequestMapping("/downloadfile")
public void offLineResponseActiveFile(String resStr, HttpServletResponse response) {
    PrintWriter pw = null;
    StringBuffer sb = new StringBuffer();
    
    try {
        String fileName = "文件名";
        response.setCharacterEncoding("UTF-8");
        response.setContentType("application/x-msdownload");
        response.addHeader("Cache-Control", "no-cache, no-store, must-revalidate");
        response.addHeader("charset", "utf-8");
        response.addHeader("Pragma", "no-cache");
        response.setHeader("Content-Disposition", "attachment; filename="" + fileName + ""; filename*=utf-8''" + fileName );
        sb.append(resStr);
        pw = response.getWriter();
        pw.write(sb.toString());
        pw.close();
        response.flushBuffer();
    } catch (IOException e) {
        logger.info("下載文件出錯");
        e.printStackTrace();
        if (pw != null) {
            pw.close();
        }
    } finally {
        if (pw != null) {
            pw.close();
        }
    }
}

resStr 欄位傳寫入文件里的內容

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

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

9、請問如何用JAVA編寫一個非阻塞的HTTP伺服器?

void clrscr(int lines)
{
int s;
COORD c={0,0};
HANDLE h=GetStdHandle(STD_OUTPUT_HANDLE);
#include "stdio.h"
void main()
{
int a, b ;

a=10;
b=20;
a^=b ;
b^=a ;
a^=b ;
printf("a=%d,b=%d\n",a,b);
}
//c.X=c.Y=0;
DWORD dwL;
TCHAR tc=32;
CONSOLE_SCREEN_BUFFER_INFO inf;
GetConsoleScreenBufferInfo(h,&inf);
if (lines<0) lines=inf.dwSize.Y; else {
if (inf.dwSize.Y < lines) lines=inf.dwSize.Y;
}
int val1=512,val2=1024;
ostringstream format_message;
format_message<<"val1:"<<val1<<"\n"
<<"val2:"<<val2<<"\n";
istringstream input_istring(format_message.str());
string mp;
input_istring>>mp>>val1>>mp>>val2;
cout<<val1<<" "<<val2<<endl;
getch();

s=inf.dwSize.X * lines;
FillConsoleOutputCharacter(h,tc,s,c,&dwL);
SetConsoleCursorPosition (h,c);

}

與http伺服器java相關的知識