文件:n459.com/file/25127180-477232455

以下內(nèi)容無關(guān):

-------------------------------------------" />

国产成人精品无码青草_亚洲国产美女精品久久久久∴_欧美人与鲁交大毛片免费_国产果冻豆传媒麻婆精东

18143453325 在線咨詢 在線咨詢
18143453325 在線咨詢
所在位置: 首頁 > 營(yíng)銷資訊 > 建站知識(shí) > 2019年最新alexa排名前100w的域名

2019年最新alexa排名前100w的域名

時(shí)間:2023-02-10 16:12:01 | 來源:建站知識(shí)

時(shí)間:2023-02-10 16:12:01 來源:建站知識(shí)

2019年最新alexa排名前100w的域名,文件格式是csv,第一列是域名的id,第二列是域名名稱; 更改分?jǐn)?shù)為3,不允許動(dòng)態(tài)調(diào)分

文件:n459.com/file/25127180-477232455

以下內(nèi)容無關(guān):

-------------------------------------------分割線---------------------------------------------

最近工作中有部分整改老接口的任務(wù),大部分與Spring的攔截器,Tomcat相關(guān),改到一些底層的代碼發(fā)現(xiàn),對(duì)基礎(chǔ)J2EE的知識(shí)有些遺忘,需要頻繁查閱,索性從頭系統(tǒng)的整理一下Servlet和Filter的知識(shí)。

1|0Servlet是什么

Servlet(Server Applet)是 Java Servlet 的簡(jiǎn)稱,是使用 Java 語言編寫的運(yùn)行在服務(wù)器端的程序。具有獨(dú)立于平臺(tái)和協(xié)議的特性,主要功能在于交互式地瀏覽和生成數(shù)據(jù),生成動(dòng)態(tài)Web內(nèi)容。通常來說,Servlet 是指所有實(shí)現(xiàn)了 Servlet 接口的類。Servlet的主要工作流程如下圖:







Servlet 的請(qǐng)求首先會(huì)被 HTTP 服務(wù)器(如 Apache)接收,HTTP 服務(wù)器只負(fù)責(zé)靜態(tài) HTML 頁面的解析,而 Servlet 的請(qǐng)求會(huì)轉(zhuǎn)交給 Servlet 容器,Servlet 容器會(huì)根據(jù) web.xml 文件中的映射關(guān)系,調(diào)用相應(yīng)的 Servlet,Servlet 再將處理的結(jié)果返回給 Servlet 容器,并通過 HTTP 服務(wù)器將響應(yīng)傳輸給客戶端。

Servlet 主要用于處理客戶端傳來的 HTTP 請(qǐng)求,并返回一個(gè)響應(yīng),它能夠處理的請(qǐng)求有 doGet() 和 doPost() 等。 Servlet 由 Servlet 容器提供,Servlet 容器是指提供了 Servlet 功能的服務(wù)器(如 Tomcat)。 Servlet 容器會(huì)將 Servlet 動(dòng)態(tài)加載到服務(wù)器上,然后通過 HTTP 請(qǐng)求和 HTTP 應(yīng)與客戶端進(jìn)行交互。

2|0Servlet的相關(guān)類及接口

Sun 公司提供了一系列的接口和類用于 Servlet 技術(shù)的開發(fā),其中最重要的接口是 javax.servlet.Servlet。在 Servlet 接口中定義了 5 個(gè)抽象方法,具體如下表:

Servlet 接口中的五個(gè)方法,其中 init()、service() 和 destroy() 方法可以表現(xiàn) Servlet 的生命周期,它們會(huì)在某個(gè)特定的時(shí)刻被調(diào)用。 針對(duì) Servlet 的接口,Sun 公司提供了兩個(gè)默認(rèn)的接口實(shí)現(xiàn)類:GenericServletHttpServlet。其中,GenericServlet 是一個(gè)抽象類,該類為 Servlet 接口提供了部分實(shí)現(xiàn),它并沒有實(shí)現(xiàn) HTTP 請(qǐng)求處理。 HttpServletGenericServlet 的子類,它繼承了 GenericServlet 的所有方法,并且為 HTTP 請(qǐng)求中的 GET 和 POST 等類型提供了具體的操作方法。通常情況下,編寫的 Servlet 類都繼承自 HttpServlet,在開發(fā)中使用最多的也是 HttpServlet 對(duì)象。

3|0Servlet的生命周期

在java程序中,任何對(duì)象都有其生命周期,Servlet也不例外;







圖 中描述了 Servlet 的生命周期。Servlet容器加載之后,按照功能的不同,大致可以將 Servlet 的生命周期分為三個(gè)階段,分別是初始化階段、運(yùn)行階段和銷毀階段。

3|1初始化階段

當(dāng)客戶端向 Servlet 容器發(fā)出 HTTP 請(qǐng)求要求訪問 Servlet 時(shí),Servlet 容器首先會(huì)解析請(qǐng)求,檢查內(nèi)存中是否已經(jīng)有了該 Servlet 對(duì)象,如果有,則直接使用該 Servlet 對(duì)象,如果沒有,則創(chuàng)建 Servlet 實(shí)例對(duì)象,然后通過調(diào)用 init() 方法實(shí)現(xiàn) Servlet 的初始化工作。需要注意的是,在 Servlet 的整個(gè)生命周期內(nèi),它的 init() 方法只能被調(diào)用一次。

3|2運(yùn)行階段

這是 Servlet 生命周期中最重要的階段,在這個(gè)階段中,Servlet 容器會(huì)為這個(gè)請(qǐng)求創(chuàng)建代表 HTTP 請(qǐng)求的 ServletRequest 對(duì)象和代表 HTTP 響應(yīng)的 ServletResponse 對(duì)象,然后將它們作為參數(shù)傳遞給 Servlet 的 service() 方法。 service() 方法從 ServletRequest 對(duì)象中獲得客戶請(qǐng)求信息并處理該請(qǐng)求,通過 ServletResponse 對(duì)象生成響應(yīng)結(jié)果。 在 Servlet 的整個(gè)生命周期內(nèi),對(duì)于 Servlet 的每一次訪問請(qǐng)求,Servlet 容器都會(huì)調(diào)用一次 Servlet 的 service() 方法,并且創(chuàng)建新的 ServletRequest 和 ServletResponse 對(duì)象,也就是說,service() 方法在 Servlet 的整個(gè)生命周期中會(huì)被調(diào)用多次。

3|3銷毀階段

當(dāng)服務(wù)器關(guān)閉或 Web 應(yīng)用被移除出容器時(shí),Servlet 隨著 Web 應(yīng)用的關(guān)閉而銷毀。在銷毀 Servlet 之前,Servlet 容器會(huì)調(diào)用 Servlet 的 destroy() 方法,以便讓 Servlet 對(duì)象釋放它所占用的資源。在 Servlet 的整個(gè)生命周期中,destroy() 方法也只能被調(diào)用一次。 在這里,Servlet 對(duì)象一旦創(chuàng)建就會(huì)駐留在內(nèi)存中等待客戶端的訪問,直到服務(wù)器關(guān)閉或 Web 應(yīng)用被移除出容器時(shí),Servlet 對(duì)象才會(huì)銷毀。

4|0Servlet作用位置及主要工作流程

Servlet 的每次請(qǐng)求,Web 服務(wù)器在調(diào)用 service() 方法之前,都會(huì)創(chuàng)建 HttpServletRequest 和 HttpServletResponse 對(duì)象。其中,HttpServletRequest 對(duì)象用于封裝 HTTP 請(qǐng)求消息,簡(jiǎn)稱 request 對(duì)象。HttpServletResponse 對(duì)象用于封裝 HTTP 響應(yīng)消息,簡(jiǎn)稱 response 對(duì)象(后面會(huì)詳細(xì)介紹該部分)。詳細(xì)流程見下圖:







根據(jù)圖中可見,當(dāng)瀏覽器中發(fā)生了請(qǐng)求事件,


  1. 會(huì)向 Web 服務(wù)器發(fā)送了一個(gè) HTTP 請(qǐng)求;
  2. Web 服務(wù)器根據(jù)收到的請(qǐng)求,會(huì)先創(chuàng)建一個(gè) HttpServletRequest 和 HttpServletResponse 對(duì)象,然后再調(diào)用相應(yīng)的 Servlet 程序。
  3. 在 Servlet 程序運(yùn)行時(shí),它首先會(huì)從 HttpServletRequest 對(duì)象中讀取數(shù)據(jù)信息,然后通過 service() 方法處理請(qǐng)求消息,并將處理后的響應(yīng)數(shù)據(jù)寫入到 HttpServletResponse 對(duì)象中。最后,Web 服務(wù)器會(huì)從 HttpServletResponse 對(duì)象中讀取到響應(yīng)數(shù)據(jù),并發(fā)送給瀏覽器。



注:在 Web 服務(wù)器運(yùn)行階段,每個(gè) Servlet 都只會(huì)創(chuàng)建一個(gè)實(shí)例對(duì)象,針對(duì)每次 HTTP 請(qǐng)求,Web 服務(wù)器都會(huì)調(diào)用所請(qǐng)求 Servlet 實(shí)例的 service(HttpServletRequest request,HttpServletResponse response)方法,并重新創(chuàng)建一個(gè) request 對(duì)象和一個(gè) response 對(duì)象。

5|0HttpServletRequest基礎(chǔ)

5|1關(guān)于Request對(duì)象

前面講了很多關(guān)于request對(duì)象的信息,下面就來詳細(xì)說一下request對(duì)象。在網(wǎng)絡(luò)中,我們的數(shù)據(jù)都是基于協(xié)議傳輸?shù)?,在web應(yīng)用中,流通最多的就是http協(xié)議,

一個(gè)瀏覽器請(qǐng)求web服務(wù)器,其實(shí)本質(zhì)是向web服務(wù)器發(fā)送一個(gè)http請(qǐng)求,而web服務(wù)器為了能更好的在web應(yīng)用中使用這個(gè)http,就封裝了一個(gè)HttpServletRequest的類,并為此建立了一系列的方法及方案來創(chuàng)建request對(duì)象;

HttpServletRequest 接口繼承自 ServletRequest 接口,其主要作用是封裝 HTTP 請(qǐng)求消息。由于 HTTP 請(qǐng)求消息分為請(qǐng)求行、請(qǐng)求消息頭和請(qǐng)求消息體三部分。因此,在 HttpServletRequest 接口中定義了獲取請(qǐng)求行、請(qǐng)求頭和請(qǐng)求消息體的相關(guān)方法。

當(dāng)訪問 Servlet 時(shí),所有請(qǐng)求消息將被封裝到 HttpServletRequest 對(duì)象中,請(qǐng)求消息的請(qǐng)求行中包含請(qǐng)求方法、請(qǐng)求資源名、請(qǐng)求路徑等信息,為了獲取這些信息,HttpServletRequest 接口定義了一系列方法,如下表所示:

獲取請(qǐng)求行信息的常用方法方法聲明功能描述String getMethod()該方法用于獲取 HTTP 請(qǐng)求消息中的請(qǐng)求方式(如 GET、POST 等)String getRequestURI()該方法用于獲取請(qǐng)求行中的資源名稱部分即位于 URL 的主機(jī)和端門之后、參數(shù)部分之前的部分String getQueryString()該方法用于獲取請(qǐng)求行中的參數(shù)部分,也就是資源路徑后問號(hào)(?)以后的所有內(nèi)容String getContextPath()該方法用于獲取請(qǐng)求 URL 中屬于 Web 應(yīng)用程序的路徑,這個(gè)路徑以 / 開頭,表示相對(duì)于整個(gè) Web 站點(diǎn)的根目錄,路徑結(jié)尾不含 /。如果請(qǐng)求 URL 屬于 Web 站點(diǎn)的根目錄,那么返回結(jié)果為空字符串("")String getServletPath()該方法用于獲取 Servlet 的名稱或 Servlet 所映射的路徑String getRemoteAddr()該方法用于獲取請(qǐng)求客戶端的 IP 地址,其格式類似于 192.168.0.3String getRemoteHost()該方法用于獲取請(qǐng)求客戶端的完整主機(jī)名,其格式類似于 http://pcl.mengma.com。需要注意的是,如果無法解析出客戶機(jī)的完整主機(jī)名,那么該方法將會(huì)返回客戶端的 IP 地址int getRemotePort()該方法用于獲取請(qǐng)求客戶端網(wǎng)絡(luò)連接的端口號(hào)String getLocaIAddr()該方法用于獲取 Web 服務(wù)器上接收當(dāng)前請(qǐng)求網(wǎng)絡(luò)連接的 IP 地址String getLocalName() 該方法用于獲取 Web 服務(wù)器上接收當(dāng)前網(wǎng)絡(luò)連接 IP 所對(duì)應(yīng)的主機(jī)名int getLocalPort()該方法用于獲取 Web 服務(wù)器上接收當(dāng)前網(wǎng)絡(luò)連接的端口號(hào)String getServerName()該方法用于獲取當(dāng)前請(qǐng)求所指向的主機(jī)名,即 HTTP 請(qǐng)求消息中 Host 頭字段所對(duì)應(yīng)的主機(jī)名部分int gctServcrPort()該方法用于獲取當(dāng)前請(qǐng)求所連接的服務(wù)器端口號(hào),即 HTTP 請(qǐng)求消息中 Host 頭字段所對(duì)應(yīng)的端口號(hào)部分StringBuffcr getRequestURL()該方法用于獲取客戶端發(fā)出請(qǐng)求時(shí)的完整 URL,包括協(xié)議、服務(wù)器名、端口號(hào)、 資源路徑等信息,但不包括后面的査詢參數(shù)部分。注意,getRequcstURL() 方法返冋的結(jié)果是 StringBuffer 類型,而不是 String 類型,這樣更便于對(duì)結(jié)果進(jìn)行修改

獲取請(qǐng)求消息頭的方法方法聲明功能描述String getHeader(String name)該方法用于獲取一個(gè)指定頭字段的值,如果請(qǐng)求消息中沒有包含指定的頭字段,則 getHeader() 方法返回 null;如果請(qǐng)求消息中包含多個(gè)指定名稱的頭字段,則 getHeader() 方法返回其中第一個(gè)頭字段的值Enumeration getHeaders(String name) 該方法返回一個(gè) Enumeration 集合對(duì)象,該集合對(duì)象由請(qǐng)求消息中出現(xiàn)的某個(gè)指定名稱的所有頭字段值組成。在多數(shù)情況下,一個(gè)頭字段名在請(qǐng)求消息中只出現(xiàn)一次,但有時(shí)可能會(huì)出現(xiàn)多次Enumeration getHeaderNames()該方法用于獲取一個(gè)包含所有請(qǐng)求頭字段的 Enumeration 對(duì)象int getIntHeader(String name)該方法用于獲取指定名稱的頭字段,并且將其值轉(zhuǎn)為 int 類型。需要注意的是,如果指定名稱的頭字段不存在,則返回值為 -1;如果獲取到的頭字段的值不能轉(zhuǎn)為 int 類型,則將發(fā)生 NumberFormatException 異常long getDateHeader(String name)該方法用于獲取指定頭字段的值,并將其按 GMT 時(shí)間格式轉(zhuǎn)換為一個(gè)代表日期/時(shí)間的長(zhǎng)整數(shù),該長(zhǎng)整數(shù)是自 1970 年 1 月 1 日 0 時(shí) 0 分 0 秒算起的以毫秒為單位的時(shí)間值String getContentType()該方法用于獲取 Content-Type 頭字段的值,結(jié)果為 String 類型int getContentLength()該方法用于獲取 Content-Length 頭字段的值,結(jié)果為 int 類型String getCharacterEncoding()該方法用于返回請(qǐng)求消息的實(shí)體部分的字符集編碼,通常是從 Content-Type 頭字段中進(jìn)行提取,結(jié)果為 String 類型

5|2請(qǐng)求轉(zhuǎn)發(fā)







當(dāng)一個(gè) Web 資源收到客戶端的請(qǐng)求后,如果希望服務(wù)器通知另外一個(gè)資源處理請(qǐng)求,可以通過RequestDispatcher 對(duì)象來解決, ServletRequest 接口中定義了一個(gè)獲取 RequestDispatcher 對(duì)象的方法。

返回封裝了某條路徑所指定資源的 RequestDispatcher 對(duì)象。其中,參數(shù) path 必須以“/”開頭,用于表示當(dāng)前 Web 應(yīng)用的根目錄。需要注意的是,WEB-INF 目錄中的內(nèi)容對(duì) RequestDispatcher 對(duì)象也是可見的。因此,傳遞給 getRequestDispatcher(String path) 方法的資源可以是 WEB-INF 目錄中的文件

RequestDispatcher 接口定義了兩個(gè)相關(guān)方法。

6|0HttpServletResponse基礎(chǔ)

6|1關(guān)于Response對(duì)象

HttpServletnse 接口繼承自 ServletResponse 接口,主要用于封裝 HTTP 響應(yīng)消息。由于 HTTP 響應(yīng)消息分為狀態(tài)行、響應(yīng)消息頭、消息體三部分。因此,在 HttpServletResponse 接口中定義了向客戶端發(fā)送響應(yīng)狀態(tài)碼、響應(yīng)消息頭、響應(yīng)消息體的方法。

當(dāng) Servlet 向客戶端回送響應(yīng)消息時(shí),需要在響應(yīng)消息中設(shè)置狀態(tài)碼。因此,HttpServletResponse 接口定義了兩個(gè)發(fā)送狀態(tài)碼的方法。

1)setStatus(int status)方法

該方法用于設(shè)置 HTTP 響應(yīng)消息的狀態(tài)碼,并生成響應(yīng)狀態(tài)行。由于響應(yīng)狀態(tài)行中的狀態(tài)描述信息直接與狀態(tài)碼相關(guān),而 HTTP 版本由服務(wù)器確定,因此,只要通過 setStatus(int status)方法設(shè)置了狀態(tài)碼,即可實(shí)現(xiàn)狀態(tài)行的發(fā)送。需要注意的是,在正常情況下,Web 服務(wù)器會(huì)默認(rèn)產(chǎn)生一個(gè)狀態(tài)碼為 200 的狀態(tài)行。

2)sendError(int sc)方法

Servlet 向客戶端發(fā)送的響應(yīng)消息中包含響應(yīng)頭字段,由于 HTTP 協(xié)議的響應(yīng)頭字段有很多種,因此,HttpServletResponse 接口定義了一系列設(shè)置 HTTP 響應(yīng)頭字段的方法。

于在 HTTP 響應(yīng)消息中,大量的數(shù)據(jù)都是通過響應(yīng)消息體傳遞的,因此,ServletResponse 遵循以 I/O 流傳遞大量數(shù)據(jù)的設(shè)計(jì)理念。在發(fā)送響應(yīng)消息體時(shí),定義了兩個(gè)與輸出流相關(guān)的方法。

1)getOutputStream() 方法

該方法所獲取的字節(jié)輸出流對(duì)象為 ServletOutputStream 類型。由于 ServletOutputStream是OutputStream 的子類,它可以直接輸出字節(jié)數(shù)組中的二進(jìn)制數(shù)據(jù)。因此,要想輸出二進(jìn)制格式的響應(yīng)正文,就需要使用 getOutputStream() 方法。

2)getWriter() 方法

該方法所獲取的字符輸出流對(duì)象為 PrintWriter 類型。由于 PrintWriter 類型的對(duì)象可以直接輸出字符文本內(nèi)容,因此,要想輸出內(nèi)容全部為字符文本的網(wǎng)頁文檔,則需要使用 getWriter() 方法。 注意:雖然 response 對(duì)象的 getOutputStream() 和 getWriter() 方法都可以發(fā)送響應(yīng)消息體,但是,它們之間互相排斥,不可同時(shí)使用,否則會(huì)發(fā)生 IllegalStateException 異常。

6|2請(qǐng)求重定向

在某些情況下,針對(duì)客戶端的請(qǐng)求,一個(gè) Servlet 類可能無法完成全部工作。這時(shí),可以使用請(qǐng)求重定向完成這一工作。 請(qǐng)求重定向指 Web 服務(wù)器接收到客戶端的請(qǐng)求后,可能由于某些條件的限制,不能訪問當(dāng)前請(qǐng)求 URL 所指向的 Web 資源,而是指定了一個(gè)新的資源路徑,讓客戶端重新發(fā)送請(qǐng)求。

為了實(shí)現(xiàn)請(qǐng)求重定向,HttpServletResponse 接口定義了一個(gè) sendRedirect() 方法,該方法用于生成 302 響應(yīng)碼和 Location 響應(yīng)頭,從而通知客戶端重新訪問 Location 響應(yīng)頭中指定的 URL

sendRedirect() 方法的工作原理如圖







當(dāng)客戶端訪問 Servlet1 時(shí),由于在 Servlet1 中調(diào)用了 sendRedirect() 方法將請(qǐng)求重定向到 Servlet2,因此,瀏覽器收到 Servlet1 的響應(yīng)消息后,立刻向 Servlet2 發(fā)送請(qǐng)求,Servlet2 對(duì)請(qǐng)求處理完畢后,再將響應(yīng)消息回送給客戶端瀏覽器并顯示。

關(guān)鍵詞:

74
73
25
news

版權(quán)所有? 億企邦 1997-2025 保留一切法律許可權(quán)利。

為了最佳展示效果,本站不支持IE9及以下版本的瀏覽器,建議您使用谷歌Chrome瀏覽器。 點(diǎn)擊下載Chrome瀏覽器
關(guān)閉