Java網絡02基本Web概念

URI

Uniform Resource Identifier 同一資源標識符

以特定語法標識一個資源的字符串

絕對URI:URI模式+模式特有部分

scheme:scheme-specific-part


scheme分為:

data

file本地文件系統

ftp

http

telnet

urn 統一資源名


scheme-specific-part為

//authority/path?query

authority是負責解析后面路徑和查詢的授權機構


URI ? ?http://www.powells.com/cgi_bin/biblio?inkey=62-1565928709-0



有兩種類型的URI

URL ?Uniform Resource Locator ?統一資源定位符 ?指向Internet上位于某個位置的某個資源

URN ?Uniform Resource Name ?統一資源名 ?標識資源本身

處理映射于許多不同的位置或已經從一個網站移動到另一個網站的資源。


URN urn:namespace:resource_name

namespace為某個授權機構維護某類資源的集合名

resource_name取決于namespace


URL protocol://username@hostname:port/path/filename?query#fragment

protocol是模式的另一種叫法

username@是可選項

hostname是服務器名或IP

http協議port默認為80

path相對于文檔根目錄

filename指向某個文件

path/filename可省略,此時分3種case:

case1:傳回index.html

case2:文件和文件夾列表

case3:403 拒絕客戶請求

query一般用于http URL,可包含表單信息


fragment ?section ?Ref

如果遠程資源是HTML,則將其稱為anchor

如果遠程資源是XML,則將其稱為XPoint

javafaq.html中包含<A NAME="xtocid1902914">Comments</A>

http://www.cafeaulait.org/javafaq.html#xtoid1902914

從技術上將,包含fragment的是URL引用。


絕對URL ?absolute URL ?完整的URL

相對URL ?relative URL ?繼承所在文檔的協議、主機和路徑

http//www.ibibio.org/javafaq/javatutorial.html

javatutuorial.html中包含

<a href="javafaq.html"> ?繼承文檔協議、主機、路徑

<a href="/boutell/faq/www_faq.html"> ?繼承文檔協議、主機

優點:

(1)少打字

(2)允許一個文檔樹用多種協議來提供,如FTP和HTTP

(3)允許整個文檔樹從一個網站移到另一個網站而不破壞內部鏈接。


HTML

Web文檔使用的主要格式。

所基于的想法是通過含義而不是外觀進行設計。

用來標識文本的標簽不區分大小寫。

可以嵌套,但不能交叉。

以名=值對形式增加附加屬性。屬性值可以引在雙引號或單引號內。引號只有在值包含內嵌空格時才是必須的。


XML?

Extensible Markup Language 可擴展標記語言

一種語義語言,允許網頁作者創建所需的元素,而不是依賴于固有元素。

需要樣式表(stylesheet)來描述每一項應當如何進行顯示。

XML文檔可以有一個DTD(Document Type Definition,文檔類型定義),它可以向有效文檔加入額外的限制。

處理XML要比處理HTML容易的多。


HTTP

Web瀏覽器和Web服務器之間通信的標準協議。

指明客戶端如何與服務器端建立連接、客戶端如何從服務器請求數據,服務器如何相應請求,最后連接如何關閉。

使用TCP/IP協議傳輸數據。

每個從客戶端到服務器的請求都有四個步驟:

1、建立連接,默認通過80端口;

2、進行請求,請求以兩個回車換行對結束,在Java中是\r\n\r\n。


Accept告訴服務器可以處理的數據類型,但服務器常常忽略這一點

User-Agent告訴服務器使用的是何種瀏覽器,允許服務器發送為特定瀏覽器類型而優化的文件

除GET外,HEAD只獲取文件首部,通常用于檢查文件的修改日期,查看緩存是否有效;POST向服務器發送表單數據;PUT向服務器上傳資源;DELETE刪除服務器上的資源。

3、響應

以響應碼開頭,后面是元數據首部、空行和所請求的文檔或錯誤信息

200-299 成功

300-399 重定向

400-499 客戶端錯誤

500-599 服務器錯誤


4、關閉連接,客戶端或服務器兩者都可以關閉連接。


HTTP 1.1最大的改進是連接重用。

HTTP 1.0為每個請求都打開一個新的連接。

實際上,在一個典型的Web會話中,打開和關閉所有連接耗費的時間要超過傳輸數據耗費的時間,尤其是有很多小文檔的會話。

HTTP 1.1允許瀏覽器通過一個連接發送多個不同的請求;連接將在顯式關閉前保持打開狀態。

請求和響應都是異步的,瀏覽器不需要在發送第二個或第三個請求之前,等待第一個請求的響應。但是,客戶端先請求,服務器再響應這個基本模式是不變的。

HTTP 1.1請求包括了一個Host首部字段,這樣一個Web服務器可以很容易地提供不同URL的不同網站。服務器和瀏覽器可以交換壓縮文件和文檔的某一部分內容,這些都能減少網絡流量。

HTTP 1.1可以更好的與代理服務器協作,是HTTP 1.0的超集。


MIME媒體類型

MIME(Multipurpose Internet Mail Extensions)是通過Internet電子郵件發送多部分多媒體數據的開放標準。

MIME最初應用于電子郵件,但已經成為一種描述文件內容的技術,得到廣泛應用,可以使客戶軟件區分不同種類的數據。

例如,Web瀏覽器使用MIME來判斷文件是GIF圖片還是可打印的PostScript文件。

MIME支持100多種預定義的內容類型。內容類型分為兩級:類型/子類型。

如text/html ? ?image/gif ? ?

大多數系統會有一個簡單的文本文件,維護從MIME類型到用于處理此種數據的應用程序的映射,在Unix下是mime.types。

Web服務器使用MIME 標識發送的數據種類,Web客戶端使用MIME標識希望接受的數據種類。

大多數Web服務器和客戶端至少理解兩種MIME文本內容類型text/html ?text/plain,兩種圖片格式image/gif ?image/jpeg。

更新的瀏覽器還理解application/xml和其他幾種圖片格式。

Java依靠MIME類型為數據流選擇適當的內容。


與MIMI兼容的程序不需要理解所有數據類型,它只需識別哪些能處理哪些不能處理就可以了。

許多程序會使用各種助手程序來顯示本身無法理解的內容類型。


MIME允許使用前綴x-定義附加的非標準子類型。如application/x-tex

這些x-類型不能保證除創建程序之外的其他所有程序都能理解。事實上,兩個程序可能使用相同的x-類型表示不同的東西,或者使用不同的x-類型表示相同的東西。


服務器端程序

現在許多Web頁面不再由硬盤上的靜態文件提供,而是由服務器動態地生成,來達到用戶請求的需要。

這些內容可能從數據庫提取,或由程序計算得來。

在Java中,這樣的服務器端程序經常使用servlet或JSP(Java Server Pages)編寫。

也可使用其他語言,如C和Perl,或其他框架,如ASP和PHP。


稍微復雜的服務器端程序會處理HTML表單中的用戶輸入。

HTTP為Java applet及應用程序與遠程系統對話提供了一種易于理解、完全支持的標準方法,因此將介紹如何使用Java接收數據和向服務器發送數據。

Java程序與服務器對話還有其他方法,包括遠程方法調用(RMI)和SOAP。RMI很慢,SOAP相當復雜。

與之相比,HTTP成熟健壯,得到了多種平臺和Web服務器更好的支持,在Web開發社區中更易于被理解。


Web表單本質上只是一種方法,可以從用戶收集輸入,將這些輸入分成整齊的幾部分,再把這些部分傳遞給服務器上的某個程序。


兩個收集名稱和電子郵件消息的字段

當用戶按下“Submit Query”時,用戶在表單中輸入的值將發送回服務器

接收表單數據時運行的程序是/cgi/reg.pl

程序在FORM元素的ACTION屬性中指定,通常是相對URL


Web瀏覽器讀取用戶鍵入的數據,以一種簡單的方式進行編碼。

字段名與其值用等號(=)分隔

不同字段用與號(&)分隔

每個字段名和值都采用x-www-form-url-encoded形式;即所有非ASCII或保留字符都用百分號加該字符在某個字符集中的值的16進制數字所代替

空格用+號


這稱為查詢字符串(query string)。


將查詢字符串發送給服務器有兩種方法:GET和POST

GET將查詢字符串附加到要發送給服務器的URL后面。


POST發送正常首部,后面是一個空行(兩個回車換行對),然后發送查詢字符串。


每個表單都提供一個名和一個編碼的字符串值。


GET請求會在URL中包括所必需的信息,所以可以放入書簽、進行鏈接、用爬蟲索引、在Google中搜索等等。

POST請求的結果卻不能。

GET用于不承擔責任的動作;POST用于有所承諾的動作。

添加購物車應當用GET,下訂單應當用POST。

瀏覽器會在你回到一個使用POST的頁面時要求你的確認。重新發送數據可能會購買兩本一樣的書,并從信用卡中收費兩次。


如果是不向用戶有所保證的安全操作,所有這樣的操作都應當使用GET而不是POST。

只有承諾用戶的操作才應當使用POST。







本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/387194.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/387194.shtml
英文地址,請注明出處:http://en.pswp.cn/news/387194.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

解決自建ca認證后瀏覽器警告

前一篇講解了基本的建立證書的過程&#xff0c;但是建立后總是會在瀏覽器那里警告&#xff1a; 此鏈接不是私密鏈接 --谷歌瀏覽器 此證書頒發機構不可信 此證書不是這個網站的 --ie瀏覽器 總之證書是生成成功了&#xff0c;但是其中的內容填寫錯誤了&a…

設計模式學習(三)——單例模式

在Java開發過程中&#xff0c;很多場景下都會碰到或要用到單例模式&#xff0c;在設計模式里也是經常作為指導學習的熱門模式之一&#xff0c;相信每位開發童鞋都用到過。我們總是沿著前輩的足跡去做設定好的思路&#xff0c;往往沒去探究為何這么做&#xff0c;所以這篇文章對…

Java網絡03流

網絡程序所做的很大一部分工作只是輸入和輸出&#xff1a;從一個系統向另一個系統移動數據。 輸出流 Java的基本輸出流類是java.io.OutputStream: public abstract class OutputStream 這個類提供了寫入數據所需的基本方法&#xff0c;包括&#xff1a; public abstract vo…

基于微信小程序開發的仿微信demo

(本文參考自github/liujians,地址:https://github.com/liujians/weApp) 作者聲明&#xff1a; 基于微信小程序開發的仿微信demo 整合了ionic的樣式庫和weui的樣式庫 使用請查看使用必讀! 更新日志請點擊這里 目前功能 查看消息 網絡請求獲取數據&#xff08;download示例server…

設計模式之六大原則

設計模式之設計原則 這軟件設計過程中&#xff0c;有六大設計原則&#xff1a; 單一職責原則里氏替換原則依賴倒置原則接口隔離原則迪米特法則開閉原則由于軟件開發過程中&#xff0c;根據業務不同等因素形成了各種復雜的而不可預料的需求&#xff0c;遵守原則&#xff0c;讓項…

安裝配置tengine

安裝tengine 1、依賴gcc openssl-devel pcre-devel zlib-devel 安裝&#xff1a;yum install gcc openssl-devel pcre-devel zlib-devel 2、解壓tengine壓縮包&#xff0c;并進入目錄&#xff1b; 3、./configure --prefix/usr/tengine 4、make && make install 5…

使用springboot集成jseesite

請訪問 開源中國下的https://git.oschina.net/wolfking/wolfking-jeesitehttps://www.oschina.net/p/wolfking-jeesite?fromerr6Iie3qZt 下載源碼&#xff0c;按照如下的運行使用 springboot 改造 jeesite&#xff0c;只保留最簡單的系統配置 。 介紹 1、運行主類&#xff0c;…

解決idea 中web項目無法正常顯示的問題

轉載于:https://www.cnblogs.com/nulijiushimeili/p/10575364.html

Hadoop小知識點

hdfs命令行 上傳 hadoop fs -put 文件名 hdfs://主機名:9000/... 下載 hadoop fs -get hdfs://主機名:9000/... 文件名 /hadoop/share/hadoop/mapreduce 文件夾下有測試程序 提交MapReduce任務命令 #hadoop jar hadoop-mapreduce-examples-2.4.1.jar pi 5 5 hadoop fs -m…

copy 擴展名 包含子文件夾 文件 到某個 文件夾

比如我在d:\fff下面有很多子文件夾&#xff0c;子文件夾里還有子文件夾&#xff0c;里面有些文件夾里有.ppm.bz2的后綴的文件&#xff0c;需要把他們找出來復制到d:\fff2里面&#xff0c;應該怎么用批處理寫&#xff1f;最佳答案1234echo offfor /r d:\fff %%a in (*.ppm.bz2) …

在線視頻常見加密方式及安全性透析

信息化時代&#xff0c;多媒體的應用日漸成為人們生活中不可或缺的部分&#xff0c;無論是獲取最新資訊還是教育學習&#xff0c;視頻都是直觀高效的媒介之一。 基于互聯網的快速傳播&#xff0c;眾多培訓機構也逐漸將線下原創版權課程遷移到在線平臺中&#xff0c;一方面可以更…

分享一個前后端分離的web項目(vue+spring boot)

Github地址&#xff1a;https://github.com/smallsnail-wh 前端項目名為wh-web后端項目名為wh-server項目展示地址為我的github pages&#xff08;https://smallsnail-wh.github.io&#xff09;用戶名&#xff1a;admin&#xff0c;密碼admin&#xff08;第一次啟動會比較慢&am…

部署php項目到linux

服務器&#xff1a;39.106.26.67rootBayou2009 數據庫&#xff1a;rootbayou2009 項目文件夾路徑&#xff1a;/home/www/項目文件夾名稱&#xff1a;education.bayou-tech.cn 綁定域名&#xff1a;education.bayou-tech.cn 綁定域名&#xff1a; 用ftp把配置文件下班到windows修…

ionic最新安裝教程

公司最近開發webapp&#xff0c;研究了一下ionicangularjs開發。 安裝過程中碰到許多問題&#xff0c;發現網上有好多資料都已經過時&#xff0c;在這里把最新的流程記錄一下。 首先是安裝node.js&#xff0c;通過nodejs官網下載&#xff0c;沒什么問題。npm已經默認安裝&#…

ZooKeeper安裝配置

配置 1、在conf目錄下創建一個配置文件zoo.cfg tickTime2000 dataDir.../zookeeper/data dataLogDir.../zookeeper/dataLog clientPort2181 initLimit5 syncLimit2 server.1server1:2888:3888 server.2server2:2888:3888 server.3server3:2888:3888 ?tickTime&#…

1.1 算法編譯與調試

編程要保持簡單&#xff08;KISS, keep it simple and stupid&#xff09;。 算法競賽中的輸入輸出框架&#xff1a; 輸入數據保存在文件中&#xff0c;輸出數據也保存在文件中。 幾乎所有算法競賽的輸入數據和標準答案都是保存在文件中的。 使用文件最簡單的方法是使用輸入…

ionic2開發的仿外賣點餐系統(Ionic2+Angular2

github上的項目源碼 Run this Project&#xff08;運行該項目&#xff09; first&#xff08;首先&#xff09;: make sure your computer install ionic 確保你的電腦安裝了ionic2,不懂自行百度 second&#xff08;其次&#xff09;:$ ionic start wechat_restaurant tutorial…

Container Injection

Container的歷史&#xff1a; 2000 年的時候 FreeBSD 開發了一個類似于 chroot 的容器技術 Jails&#xff0c;這是最早期&#xff0c;也是功能最多的容器技術。Jails 英譯過來是監獄的意思&#xff0c;這個“監獄”&#xff08;用沙盒更為準確&#xff09;包含了文件系統、用戶…

HadoopHA集群搭建

三臺主機&#xff1a; 192.168.143.111 hdp1 192.168.143.112 hdp2 192.168.143.113 hdp3 1、安裝配置ZooKeeper&#xff1b; (1)在conf目錄下創建配置文件zoo.cfg tickTime2000 dataDir.../zookeeper/data dataLogDir.../zookeeper/dataLog clientPort2181 initLim…

node搭建服務器,寫接口,調接口,跨域

剛開始學node&#xff0c;今天做這個也是累死寶寶了&#xff0c;以后可以自己寫接口自己用了&#xff0c;再也不用麻煩人家后臺人員了&#xff0c;這些年我們欠他們的太多了&#xff0c;說多了都是淚&#xff0c;不多說&#xff0c;往下看吧。。。 服務端項目目錄下&#xff1a…