必看!!!WEB端的三大元件
servlet大致可以分為三個:簡單servlet、過濾servlet、監聽servlet
servlet:
servlet的建立
1. 建立一個類並實現Servlet介面。
2. 重寫service方法。
3. 在伺服器中註冊Servlet
協議
1. 一定是雙方或多方簽訂的。
2. 瀏覽器和伺服器之間的通訊是基於請求(request)和響應(reponse)的。
3. HTTP協議就是規定瀏覽器和伺服器之間的通訊報文格式。(報文首部分為首行和頭,統稱為首部。)
get、post請求
get請求:請求引數在位址列,長度有限制。
四種設定方法:(1).直接在URL中設定填寫。(2).超連結。(3).在method屬性中設定。(4).method屬性中不填寫時,預設為get
post請求:請求引數在請求報文的請求主題中,長度無限制。
設定方法:通過method屬性修改(較安全)
在使用表單提交資料到伺服器的時候有兩張方式可共選擇,一個是post一個是get。可在<form>中的method屬性中指定提交的方式。如:<form action="inputForm"method="get">,如果不指定method屬性,則會預設該屬性為”get”方式。
Get和post都能夠提交資料,那麼他們有什麼不同呢?
不同點一:
通過get方式提交的資料有大小的限制,通常在1024位元組左右。也就是說如果提交的資料很大,用get方法就可需要小心;而post方式沒有資料大小的限制,理論上傳送多少資料都可以。
不同點二:
通過get傳遞資料,實際上是將傳遞的資料按照”key,value”的方式跟在URL的後面來達到傳送的目的的;而post傳遞資料是通過http請求的附件進行的,在URL中並沒有明文顯示。
不同點三:
通過Get方式提交的資料安全性不高,而Post方式的更加安全~
Servlet是執行在伺服器中的,執行Servlet的東西,我們稱之為Servlet容器。
servlet作用
我們現在寫的頁面,並沒有實質性的作用,也並不能處理使用者名稱和密碼,實際上,應該是點選登陸後,將請求提交給Servlet,然後再處理使用者名稱和密碼是否正確。
1. 接受請求獲取使用者資訊。
2. 處理,檢查是否正確。
3. 如果正確返回一個頁面,如果不正確,根據處理結果響應。
也就是:接受請求,處理請求,根據處理結果響應。
servlet宣告週期:
指的是Servlet物件從建立到銷燬的過程。
1. 構造器:public login(){}
當service第一次處理請求時被呼叫,用來建立service物件,只會呼叫一次。
2. Init();
在構造器呼叫之後馬上被呼叫,用來初始化Servlet物件,只會呼叫一次。
3. service();
使用者再次傳送請求,service都會被呼叫,呼叫多次,用來處理使用者請求。
4. destroy();
Servlet物件銷燬前被呼叫,用來執行一些收尾工作,只會執行一次。
HttpServlet
間接實現了Servlet介面,通過繼承HttpServlet實現了一個Servlet時,我們只需要根據處理請求的型別(method的值)來重寫不同方法,處理get請求,重寫doGet請求;處理post請求,重寫doPost請求。
轉發和重定向
轉發:轉發時瀏覽器位址列不會發生改變。
轉發時瀏覽器傳送了一次請求。
轉發時發生在伺服器的內部,瀏覽器不知道轉發的發生。
String con= request.getContextPath();//獲取效應器
RequestDispatcherrd = request.getRequestDispather(“Tomcat”);//獲取派發器
rd.forword(request,reponse);//發起轉發
重定向:
重定向時位址列發生改變。
重定向瀏覽器傳送了兩次請求。
重定向時發生在瀏覽器端的,瀏覽器知道重定向的發生。
Reponse.sendRedireat(“Test.html”);
過濾servlet,也就是我們常說的filter
什麼是過濾器?
在客戶端到伺服器的過程中,當傳送請求時,如果有不符合的資訊將會被filter進行攔截,如果符合則會進行放行,在伺服器給客戶端響應時也會進行判斷 如果有不符合的資訊將會被filter進行攔截,如果符合則會進行放行。
什麼是oop?(拓展)
面向物件程式設計,java是面向物件變成,封裝、繼承、多臺、抽象。
什麼是aop?(拓展)
面向切面程式設計。用來過濾請求。在請求到達servlet之前,對其進行過濾。
它是sun公司srvlet2.3版本之後推出的新功能,在2.3之前的版本沒有該功能,定義一個過濾器需要實現(implement)Filter介面,這裡實現的是javax.servlet.Filter。
過濾器的生命週期:
在專案開始啟動的時候,過濾器開始初始化,當有請求來的時候開始自動去執行doFilter方法,隨著專案的關閉過濾器開始停止。
ChainFilter鏈:
它可以指向下一個資源,如果還有過濾器,則繼續進行下一次的過濾,如果沒有過濾器,則會指向資源(servlet)。
chain.doFilter(req,resp);//放行
filter應用場景:
(1) 設定跨域問題(為所有的Servelt)
(2) 解決跨域問題
(3) 解決所有的防盜鏈問題
使用過濾器的時候需要配置地址:
(1)固定地址 (2)萬用字元/* (3)指定目錄
監聽器:(listener)(瞭解)
監聽器:相當於之前所學的事件
源:監聽的是誰
動作:觸發的條件
響應:當條件滿足時會執行的函式
ServletContext物件:
宣告週期:隨著專案的啟動而建立,隨著專案的關閉而銷燬。
生命週期可以理解為:監聽器>過濾器>servlet