javahttp伺服器
Ⅰ 使用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容器的東西。
Ⅱ java 如何搭建http伺服器
看你具體是想做什麼,現在現成的開源的java的http伺服器有很多,像tomcat之類的都有http伺服器功能,如果你只是單純的需要用的話,直接用tomcat就好了
但是如果你是做要自己用java實現一個http伺服器的話就要稍微麻煩一點
http伺服器,本質上還是基於tcpip協議的伺服器,首先用java的ServerSocket監聽一個埠(也可以使用開源的server組件,如quickserver之類的),然後對客戶端發上來的數據進行處理,這里就需要了解一下http協議了,因為上來的數據,都是按照http協議來組織的,你需要將請求數據解析後,將響應數據組織成http的響應,發回給客戶端。這樣一個簡單的http伺服器就實現了。
但是這個請求和響應都有很多種類,一個完整的http伺服器應該要都能夠支持,所以這裡面的工作量還是有一點的。
另外,上面說的http伺服器只是一個靜態的伺服器,如果你想讓你寫的服務具有動態功能,那你的伺服器還得提供javaee的容器功能,這樣做下去,沒准你也能寫一個tomcat出來了……
Ⅲ 為什麼Java寫的Http伺服器監聽80埠,有沖突時不報錯。
因為 Apache 現在只使用了 192.168.x.x:80 ,而你可以使用另外的尚未使用的127.0.0.1:80. 沒指定 IP 表示監聽在所有可能的 IP 上,包括虛擬的 ipv6,loopback,vmware 虛擬的網卡。
Ⅳ 如何寫一個簡單的HTTP伺服器
本Guide利用Eclipse及Ant建立簡單Web Service演示Web Service基本發程:
1.系統條件:
Eclipse Java EE IDE for Web Developers
Java SE 6
Windows XP
2.基本環境搭建:
1)Java SE6 JDK安裝:載Java SE6 JDK雙擊安裝默認選項進行安裝即
2)Eclipse安裝與配置:
安裝直接解壓
配置處兩點Window>Preferences>Java>Installed JREs確保設置:
安裝路徑能略同
Window>Preferences>Java>Compiler 確保設置:
3.建立Server端工程相關包與類:
創建Java Project命名wsServerHelloWorld:
項目建立包:org.gnuhpc.wsServer
包邊建立類:SayHello
SayHello.java文件輸入代碼:
package org.gnuhpc.wsServer;
import javax.jws.WebService;
@WebService
public class SayHello {
private static final String SALUTATION = "Hello";
public String getGreeting(String name) {
return SALUTATION + " " + name;
}
}
其注意@WebService 稱作annotation或者metadataJava SE 5Web Services Metadata Specification引入Java SE 6於Web Services規范升級及JAX-WS(Java API for XML Web Services)2.0規范些升級使我Web Services創建調用變更加容易使用些新功能我僅僅使用簡單Annotations注釋Java類創建Web Services發者其類前用該annotations指定類告訴runtime engineWeb Service式操作使能該類annotations產布署Web ServiceWSDL映射annotationsJava源代碼與代表Web ServiceWSDL元素連接起
4.使用Ant產Server端代碼:
首先項目新建文件:build.xml使用OpenWith>AntEditor打輸入腳本代碼:
<arg line="-cp ./bin -keep -s ./src -d ./bin
org.gnuhpc.wsServer.SayHello"/>
default指定默認執行Targetwsgen,wsgen創建能夠使用WebService類所用於WebService發布源代碼文件經編譯二進制類文件WSDL符合規范該類WebService
Target名稱wsgen具體執行命令參數:
-cp 類路徑
-keep產java文件
-s 產源文件放哪
-d 產輸問價放哪
使用Ant Build選項運行:
功執行提示我刷新Project
我Project區域看結:
5.布Web Service
org.gnuhpc.wsServer建立類RunService:
package org.gnuhpc.wsServer;
import javax.xml.ws.Endpoint;
public class RunService {
/**
*@paramargs
*/
public static void main(String[] args) {
System.out.println("SayHello Web Service started.");
Endpoint.publish("" ,
new SayHello());
}
}
運行Run As>Java Application我結說明web serviceServer端已經啟
6.查看WSDL:
Window>Show View>Other>General>Internal Web Browser其輸入:?wsdl
看看底WSDL都記錄哪些信息看完停止該Server
7.監測Server
我創建完Server用Eclipse Web Services Explorer監測Server
Window>Open Perspective>Other >JavaEE
打Eclipse Web Services Explorer
點擊右角WSDL Page按鈕:
單擊WSDL MainURL輸入:?wsdl 按Go按鈕現視圖:
我觸發Web Service操作:點擊getGreetings添加參數比gnuhpc點擊Go按鈕:
8.創建Client端 工程相關包與類:
創建Java Project命名wsClientHelloWorld項目建立包:org.gnuhpc.wsClient
9.使用Ant產Client代碼框架:
編寫Web service使用工具利用WSDL進行調用客戶端樁;或者使用底層API手編寫Web service前者便者靈現我通前者做說明:
新建文件build.xml
New>File>build.xml
<arg line="-keep -s ./src -p org.gnuhpc.wsClient
-d ./bin ?wsdl"/>
注意:wsgen 支持 Java class 創建 Web serviceswsimport 支持 WSDL 創建 Web services別應於 JAX-RPC 式 Java2WSDL WSDL2Java要根據發布WSDL進行創建要先運行RunServer原
運行ServerRunService : Run As>Java Application>
運行該Ant腳本產Client代碼:Run As>Ant Build
運行功提示:
代碼:
步讀取WSDL並客戶端樁些樁我代碼所用Java類介面些樁給伺服器端功能提供客戶端介面例我伺服器提供Maths服務該服務帶叫做add我客戶端代碼調用樁樁實現該使用參數封裝Java調用變Webservice請求請求基於HTTP發送給伺服器且使用SOAP作RPC協議監聽伺服器接收該SOAP消息(十八九)其轉換伺服器處調用
Ⅳ java里http伺服器如何將文件製成一個下載路徑
/**
*文件下載
*/
@RequestMapping("/downloadfile")
(StringresStr,HttpServletResponseresponse){
PrintWriterpw=null;
StringBuffersb=newStringBuffer();
try{
StringfileName="文件名";
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(IOExceptione){
logger.info("下載文件出錯");
e.printStackTrace();
if(pw!=null){
pw.close();
}
}finally{
if(pw!=null){
pw.close();
}
}
}
resStr 欄位傳寫入文件里的內容
Ⅵ 怎樣java向伺服器發送http請求
你好,java有一個組件,httpclient,這個jar包,可以模擬http客戶端,向服務端發送http請求,而且現在大部分都用的是這個。
Ⅶ JAVA在雲伺服器上發送http請求報錯,跪求大神,小弟熬夜加班不容易啊
看你的url地址沒寫默認埠號,那麼默認埠就是80埠,確認一下你雲伺服器web項目是否用的80埠,如果不是請在url里加入響應埠號
Ⅷ java http伺服器有哪些功能
HTTP是個大協議,完整功能的HTTP伺服器必須響應資源請求,將URL轉換為本地系統的資源名。響應各種形式的HTTP請求(GET、POST等)。處理不存在的文件請求,返回各種形式的狀態碼,解析MIME類型等。但許多特定功能的HTTP伺服器並不需要所有這些功能。例如,很多網站只是想顯示「建設中「的消息。很顯然,Apache對於這樣的網站是大材小用了。這樣的網站完全可以使用只做一件事情的定製伺服器。Java網路類庫使得編寫這樣的單任務伺服器輕而易舉。
定製伺服器不只是用於小網站。大流量的網站如Yahoo,也使用定製伺服器,因為與一般用途的伺服器相比,只做一件事情的伺服器通常要快得多。針對某項任務來優化特殊用途的伺服器很容易;其結果往往比需要響應很多種請求的一般用途伺服器高效得多。例如,對於重復用於多頁面或大流量頁面中的圖標和圖片,用一個單獨的伺服器處理會更好(並且還可以避免在請求時攜帶不必要的Cookie,因而可以減少請求/響應數據,從而減少下載帶寬,提升速度);這個伺服器在啟動時把所有圖片文件讀入內存,從RAM中直接提供這些文件,而不是每次請求都從磁碟上讀取。此外,如果你不想在包含這些圖片的頁面請求之外單獨記錄這些圖片,這個單獨伺服器則會避免在日誌記錄上浪費時間。
本篇為大家簡要演示三種HTTP伺服器:
(1) 簡單的單文件伺服器
(2) 重定向伺服器
(3) 完整功能的HTTP伺服器
Ⅸ 怎樣用JAVA實現模擬HTTP請求,得到伺服器的響應時間等參數
問題簡化一下:對一個ip,一個線程請求100次。該次請求的響應時間為調用httpClient前的響應時間減去接收到httpClient響應的時間。注意,本次請求是否有效要判斷。平均響應時間和最大響應時間只不過是響應時間的統計而已,可以用資料庫來做。
就是說資料庫記錄每次測試請求的響應時間,成功與否。統計數據最後出來。
只所以用多線程,是因為單線程順序請求100次,不能模擬伺服器真正的情況。