"
作者:OnlyLoveVivian
來源:https://blog.csdn.net/OnlyLoveVivian/article/details/73928067


web應用啟動做了什麼?



讀取web.xml文件

- web.xml常用配置參數:

1).context-param(上下文參數)
2).listener(監聽器配置參數)
3).filter(過濾器配置參數)
4).servle(servlet頁面參數)
5).其他
- 讀取順序:1)>>>2)>>>3)>>>4)(5))(具體對應的執行順序也是如此)
- 原理及過程
1)應用在服務器上啟動,容器按上述順序自動讀取web.xml中的參數
2)容器創建一個上下文對象,即ServletContext,整個web應用共享這個對象
3)容器將讀取到的context-param配置參數轉化為鍵值對,封裝到ServletContext
4)創建監聽器對象(Servlet容器實例化所有監聽器,回調無參構造方法,調用init初始化方法)
5)創建過濾器對象(Servlet容器實例化所有過濾器,回調無參構造方法,調用init初始化方法)
注意:此時只是web應用啟動時的讀取文件以及初始化階段,客戶端沒有發送的請求的情況下不會有其他任何操作


瀏覽器到服務器解析?


A.瀏覽器發送請求到服務器


1.在瀏覽器地址欄輸入請求地址,瀏覽器解析請求URL,解析出IP地址等信息(域名解析)

2.解析後的URL信息封裝成HTTP報文

3.瀏覽器創建一個socket調用send()方法將HTTP報文發送到服務器(以流的方式)


B.服務器接收到瀏覽器請求


1.web容器也會創建一個socket並且調用receive()方法接收瀏覽器發送過來的HTTP報文(攜帶有IP地址,請求參數等信息)

2.服務器解析請求信息,將請求到的靜態或動態資源利用sokcet調用send()方法發送給瀏覽器

3.瀏覽器利用sokcet調用receive()方法接收服務器端發送的資源,例如html,jsp等

4.瀏覽器解析資源,有可能進行再次請求(例如請求css/js等文件資源),遇到有html或jsp代碼將對腳本標籤進行渲染


jsp?



什麼是jsp?

jsp是一種運行在服務器端的腳本語言,是一種軟件開發者可以動態響應給客戶端的web網頁技術標準。


jsp運行原理及過程?


-本質上jsp只是一個帶有.jsp後綴的腳本語言文件,並不能直接在jvm(虛擬機)上運行,所以需要將其轉換為一個Servlet類,才能通過jvm解釋執行:

1)客戶端發送請求到服務器,web容器通過jsp引擎將jsp文件轉換為一個Servlet類源文件(.java)(如果是第一次訪問或jsp文件被修改過,那麼將會重新轉換為一個新的Servlet類)

2)轉換過來的Servlet類進一步被java編譯器編譯成字節碼文件(.class)

3)字節碼文件被系統類加載器裝載到jvm上,開始初始化、執行


"
作者:OnlyLoveVivian
來源:https://blog.csdn.net/OnlyLoveVivian/article/details/73928067


web應用啟動做了什麼?



讀取web.xml文件

- web.xml常用配置參數:

1).context-param(上下文參數)
2).listener(監聽器配置參數)
3).filter(過濾器配置參數)
4).servle(servlet頁面參數)
5).其他
- 讀取順序:1)>>>2)>>>3)>>>4)(5))(具體對應的執行順序也是如此)
- 原理及過程
1)應用在服務器上啟動,容器按上述順序自動讀取web.xml中的參數
2)容器創建一個上下文對象,即ServletContext,整個web應用共享這個對象
3)容器將讀取到的context-param配置參數轉化為鍵值對,封裝到ServletContext
4)創建監聽器對象(Servlet容器實例化所有監聽器,回調無參構造方法,調用init初始化方法)
5)創建過濾器對象(Servlet容器實例化所有過濾器,回調無參構造方法,調用init初始化方法)
注意:此時只是web應用啟動時的讀取文件以及初始化階段,客戶端沒有發送的請求的情況下不會有其他任何操作


瀏覽器到服務器解析?


A.瀏覽器發送請求到服務器


1.在瀏覽器地址欄輸入請求地址,瀏覽器解析請求URL,解析出IP地址等信息(域名解析)

2.解析後的URL信息封裝成HTTP報文

3.瀏覽器創建一個socket調用send()方法將HTTP報文發送到服務器(以流的方式)


B.服務器接收到瀏覽器請求


1.web容器也會創建一個socket並且調用receive()方法接收瀏覽器發送過來的HTTP報文(攜帶有IP地址,請求參數等信息)

2.服務器解析請求信息,將請求到的靜態或動態資源利用sokcet調用send()方法發送給瀏覽器

3.瀏覽器利用sokcet調用receive()方法接收服務器端發送的資源,例如html,jsp等

4.瀏覽器解析資源,有可能進行再次請求(例如請求css/js等文件資源),遇到有html或jsp代碼將對腳本標籤進行渲染


jsp?



什麼是jsp?

jsp是一種運行在服務器端的腳本語言,是一種軟件開發者可以動態響應給客戶端的web網頁技術標準。


jsp運行原理及過程?


-本質上jsp只是一個帶有.jsp後綴的腳本語言文件,並不能直接在jvm(虛擬機)上運行,所以需要將其轉換為一個Servlet類,才能通過jvm解釋執行:

1)客戶端發送請求到服務器,web容器通過jsp引擎將jsp文件轉換為一個Servlet類源文件(.java)(如果是第一次訪問或jsp文件被修改過,那麼將會重新轉換為一個新的Servlet類)

2)轉換過來的Servlet類進一步被java編譯器編譯成字節碼文件(.class)

3)字節碼文件被系統類加載器裝載到jvm上,開始初始化、執行


Web應用運行原理


Servlet?



什麼是Servlet?

Java Servlet 是運行在 Web 服務器或應用服務器上的程序,它是作為來自 Web 瀏覽器或其他 HTTP 客戶端的請求和 HTTP 服務器上的數據庫或應用程序之間的中間層。

Servlet創建?

1. 創建一個類,實現HttpServlet接口(HttpServlet繼承於GenericServlet,GenericServlet(實現類)繼承於Servlet接口)

2. 右鍵—新建Servlet(選擇配置文件還是註解虛擬路徑)

3. 重寫doGet()和doPost()方法處理請求

Servlet運行原理?

1. Servlet沒有main方法不能直接獨立運行。所以需要依賴於web容器(如tomcat),由這個容器來控制servlet從創建到銷燬的過程

2.容器啟動的時候,只會讀取xml配置文件,如果不發生請求servlet是不會被加載運行的

3.客戶端第一次發送請求,服務器接收到請求後,解析請求參數並封裝成該請求對應的HttpServletRequest和HttpServletResponse對象以給容器使用

4.根據URL匹配容器中的servlet實例,若沒有容器將創建和實例化一個servlet,若有則進入下一步(實例化之前類加載器將字節碼文件加載過來)

5.容器調用servlet實例的init()方法完成初始化工作

6.調用service方法處理請求,判斷請求方式是get還是post,再調用業務邏輯層的方法完成數據交互

7.將請求資源響應給客戶端

8.服務器關閉(或者更新servlet文件),servlet實例調用destroy()方法,servlet實例被銷燬

"
作者:OnlyLoveVivian
來源:https://blog.csdn.net/OnlyLoveVivian/article/details/73928067


web應用啟動做了什麼?



讀取web.xml文件

- web.xml常用配置參數:

1).context-param(上下文參數)
2).listener(監聽器配置參數)
3).filter(過濾器配置參數)
4).servle(servlet頁面參數)
5).其他
- 讀取順序:1)>>>2)>>>3)>>>4)(5))(具體對應的執行順序也是如此)
- 原理及過程
1)應用在服務器上啟動,容器按上述順序自動讀取web.xml中的參數
2)容器創建一個上下文對象,即ServletContext,整個web應用共享這個對象
3)容器將讀取到的context-param配置參數轉化為鍵值對,封裝到ServletContext
4)創建監聽器對象(Servlet容器實例化所有監聽器,回調無參構造方法,調用init初始化方法)
5)創建過濾器對象(Servlet容器實例化所有過濾器,回調無參構造方法,調用init初始化方法)
注意:此時只是web應用啟動時的讀取文件以及初始化階段,客戶端沒有發送的請求的情況下不會有其他任何操作


瀏覽器到服務器解析?


A.瀏覽器發送請求到服務器


1.在瀏覽器地址欄輸入請求地址,瀏覽器解析請求URL,解析出IP地址等信息(域名解析)

2.解析後的URL信息封裝成HTTP報文

3.瀏覽器創建一個socket調用send()方法將HTTP報文發送到服務器(以流的方式)


B.服務器接收到瀏覽器請求


1.web容器也會創建一個socket並且調用receive()方法接收瀏覽器發送過來的HTTP報文(攜帶有IP地址,請求參數等信息)

2.服務器解析請求信息,將請求到的靜態或動態資源利用sokcet調用send()方法發送給瀏覽器

3.瀏覽器利用sokcet調用receive()方法接收服務器端發送的資源,例如html,jsp等

4.瀏覽器解析資源,有可能進行再次請求(例如請求css/js等文件資源),遇到有html或jsp代碼將對腳本標籤進行渲染


jsp?



什麼是jsp?

jsp是一種運行在服務器端的腳本語言,是一種軟件開發者可以動態響應給客戶端的web網頁技術標準。


jsp運行原理及過程?


-本質上jsp只是一個帶有.jsp後綴的腳本語言文件,並不能直接在jvm(虛擬機)上運行,所以需要將其轉換為一個Servlet類,才能通過jvm解釋執行:

1)客戶端發送請求到服務器,web容器通過jsp引擎將jsp文件轉換為一個Servlet類源文件(.java)(如果是第一次訪問或jsp文件被修改過,那麼將會重新轉換為一個新的Servlet類)

2)轉換過來的Servlet類進一步被java編譯器編譯成字節碼文件(.class)

3)字節碼文件被系統類加載器裝載到jvm上,開始初始化、執行


Web應用運行原理


Servlet?



什麼是Servlet?

Java Servlet 是運行在 Web 服務器或應用服務器上的程序,它是作為來自 Web 瀏覽器或其他 HTTP 客戶端的請求和 HTTP 服務器上的數據庫或應用程序之間的中間層。

Servlet創建?

1. 創建一個類,實現HttpServlet接口(HttpServlet繼承於GenericServlet,GenericServlet(實現類)繼承於Servlet接口)

2. 右鍵—新建Servlet(選擇配置文件還是註解虛擬路徑)

3. 重寫doGet()和doPost()方法處理請求

Servlet運行原理?

1. Servlet沒有main方法不能直接獨立運行。所以需要依賴於web容器(如tomcat),由這個容器來控制servlet從創建到銷燬的過程

2.容器啟動的時候,只會讀取xml配置文件,如果不發生請求servlet是不會被加載運行的

3.客戶端第一次發送請求,服務器接收到請求後,解析請求參數並封裝成該請求對應的HttpServletRequest和HttpServletResponse對象以給容器使用

4.根據URL匹配容器中的servlet實例,若沒有容器將創建和實例化一個servlet,若有則進入下一步(實例化之前類加載器將字節碼文件加載過來)

5.容器調用servlet實例的init()方法完成初始化工作

6.調用service方法處理請求,判斷請求方式是get還是post,再調用業務邏輯層的方法完成數據交互

7.將請求資源響應給客戶端

8.服務器關閉(或者更新servlet文件),servlet實例調用destroy()方法,servlet實例被銷燬

Web應用運行原理


Servlet生命週期?

1.當servlet實例調用init()方法實例化的時候,servlet的生命週期開始

2.當servlet實例調用destroy()方法的時候,servlet被銷燬,生命週期結束


注意

- 1.servlet實例只會被加載一次,init()方法、destroy()方法也只會被調用一次

- 2.只有創建的對象會每請求一次就會創建一對(requset和response)

- 3.如果需要在實例被創建和加載的時候就完成初始化,則可以如下設置參數

@requires_authorization
<servlet>
<servlet-name>類名</servlet-name>
<servlet-class>包名.類名</servlet-class>
<load-on-startup>優先級別(數字)</load-on-startup>
</servlet>

- 4.對於某些servlet沒有元素,但又想提前初始化則可以進行上述配置,否則需要配置參數

- 5.get和post請求

a. get請求只能以字符串形式傳遞參數名和值,直接跟在URL後,安全性差;post請求在請求頭中,較為安全,並且傳遞數據沒有限制

b. get傳輸數據量較小;post傳輸數據量大

c. get請求服務器接收效果不好,不能判斷是否完成發送;post方式是先發送長度,可以判斷是否發送完成

"

相關推薦

推薦中...