做用域:存放數據,獲取數據(傳遞數據)
有效的做用域:生命週期,做用範圍
做用域的三個方法 get set removehtml
做用域:理解成共享區域。
做用域的真正做用是爲了有效的傳遞數據。
存放數據:setAttribute(String,Object);
獲取數據:getAttribute(String );
刪除數據:removeAttribute(String);web
1. httpServeltRequest: 由servlet容器建立,該對象包含全部的http協議的請求信息spring
2. httpSession:是一個會話,是一種服務器端技術 ,能夠將用戶信息保存在服務器端瀏覽器
3. servletContex:是一個全局的儲存信息的空間,服務器開始就存在,服務器關閉才釋放。tomcat
4. 做用域如何選用?服務器
2、servlet 流程及生命週期網絡
1. servlet的生命週期app
1)實例化,有web容器實例化servlet實例
2)初始化,容器調用init()方法
3)服務,客戶端請求servlet時,容器調用service()方法
4)銷燬,結束服務,調用destroy()方法學習
2. 相關方法:this
1)當請求到達時,運行其service()方法。service()自動派遣運行與請求相對應的doXXX(doGet或者doPost)方法
2)request.getAttribute()和request.getParameter()
getParameter獲取到的值只能是字符串,不能夠是對象,而getAttribute獲取到的值是Object類型的。
經過form表單或者url來向另外一個頁面或者servlet傳遞參數的時候須要用getParameter獲取值;getAttribute只能獲取setAttribute的值
3)forward和redirect
對於直接方式forward,客戶端瀏覽器只發出一次請求,Servlet把請求轉發給Servlet、HTML、JSP或其它信息資源,由第2個信息資源響應該請求,兩個信息資源共享同一個request對象。
對於間接方式redirect,服務器端在響應第一次請求的時候,讓瀏覽器再向另一個URL發出請求,從而達到轉發的目的。它本質上是兩次HTTP請求,對應兩個request對象。
Servlet三大生命週期方法:
init()
service()
destroy()
Servlet生命週期
1.客戶端發送請求後首先判斷是否存在Servlet實例,若是沒有存在建立Servlet實例(Servlet的構造方法)。
2.若是存在Servlet實例,則開始其初始化階段,執行器初始化方法(init()方法)。
3.第三階段是響應客戶端請求階段,調用service()方法,根據提交方式選擇執行doGet()方法或者doPost()方法。
4.最後是銷燬階段,程序結束或者是服務器中止,調用其銷燬方法(destroy()方法)。、
tomcat 裝載servlet 的三種方式說明:
servletContext 說明:
//tomcat容器裝載servlet,當服務器啓動的時候會爲servlet 建立一個servletContext 做用域 //此做用域爲全局的,後期經過這個做用於理解springContext 做用域 //經過當前Servlet類的對象,獲得與它關聯的ServletContext對象,也就是上下文 ServletContext application = this.getServletContext(); //HttpSession(私有區域) 與 ServletContext(公共區域) 的區別是什麼? 一、做用範圍不一樣:HttpSession是針對每個客戶端瀏覽器單獨有一個。 ServletContext是針對每個WEB應用程序有一個 二、存活時間不一樣:HttpSession第一次訪問服務器,服務器端調用request.getSession()時建立,訪問間隔時間超過30分鐘就銷燬。 ServletContext服務器啓動時建立,服務器中止時銷燬。
-會引出 數據讀取 IO
-在引出 BIO、NIO
-在引出 HTTP 的結構
controller 是怎麼獲取參數的的,servlet 就能怎樣獲取這些信息。這些信息只是 http 規範的一些約定,每次通訊都會帶着他們。
通過網絡的基層協議後最終回到 HTTP 層(應用層-這個應用就是咱們使用的 HttpServlet)。最終被 servlet(HttpServlet) 還原。
比如 C 語言,他沒有 servlet,可是也有本身的手段去解析這些信息,只要遵循http的約定就行。這也印證了,網絡的 7 層協議只是
概念上劃分這一說法。能夠是 4 層,也能夠是 7 層,若是咱們對網絡理解的夠深入(成爲權威),也能夠按本身的理解劃分爲 5 層、3 層,
這都不是錯誤的說法。因此我認爲,學習網絡協議不該該去背 7層協議是什麼。而應該去確認網絡中的一個字節,通過了哪些東西(軟件、硬件)
以後從一臺電腦,出如今另外一臺電腦上。後續把這西補充進來。這時再回來看網絡的7層協議就明白他指的是什麼了。