針對網絡通訊的不一樣層次,Java提供了不一樣的API,其提供的網絡功能有四大類:InetAddress:用於標識網絡上的硬件資源,主要是IP地址;URL:統一資源定位符,經過URL能夠直接讀取或寫入網絡上的數據;Sockets:使用TCP協議實現的網絡通訊Socket相關的類;Datagram:使用UDP協議,將數據保存在用戶數據報中,經過網絡進行通訊。編程
URL處理,給定一個URL,分析URL的結構,經過URL獲取網絡數據瀏覽器
1.URL類,使用一個字符串url初始化,getXXX()返回域名、端口、參數等;openConnection()返回一個URLConnection對象tomcat
2.URLConnection類:表明與目標的鏈接對象,getInputStream()返回InputStream對象,其中包含從網絡主機獲取到的數據服務器
3.InetAddress類:表明IP地址,靜態方法getLocalHost(),getByName()獲取IP網絡
4.Socket編程多線程
5.Java.net.Socket類:表明一個套接字socket
6.Java.net.ServerSocket:服務器端套接字監聽類post
7.Socket是TCP/IP協議的編程接口,網絡上具備惟一標識的IP地址和端口號組合在一塊兒構成惟一的套接字編碼
8.使用socket和多線程實現一個靜態網頁服務器,功能有瀏覽靜態網頁,上傳下載文件。Cookie保存。
須要解決的問題:HTTP協議的get和post方法如何分別處理。HTTP協議有哪些選項。HTTP協議的狀態碼。服務器配置文件XML文件的解析,saxurl
9.Tomcat7源碼解讀:http://blog.csdn.net/c929833623lvcha/article/details/44677569
10.閱讀tomcat源碼須要哪些知識:socket、如何在TCP上實現HTTP、servlet規範、類加載器、XML解析
Java中使用URL類請求網絡接口
URL不具有瀏覽器的urlencode功能,因此請求的路徑中不能使用特殊符號
例如:請求路徑中有日期參數2017-12-04 12:00
若是直接將參數添加到請求路徑中,可能會致使請求錯誤
緣由是URL類中的請求方法不會對日期中的空格轉換成 %20
解決問題的辦法有
使用URLEncode類轉換,或者手動替換請求路徑中的特殊字符,例如將空格替換爲%20
URLEncode使用建議:
先拼接完整URL,而後再對整個URL進行編碼;
也能夠對單個的參數值進行編碼,
可是不要將 例如:http://192.168.3.154:11088/demo.htm?abc=123中問號後面的部分進行單獨編碼,而後再與前面部分拼接,這樣得不到正確的URL,由於?和&都會被看成特殊字符進行處理。
使用request.getParameter()方法獲取參數時,若是請求中沒有對應的參數,這獲得的結果是null而非空字符串。