1. 程式人生 > >必看!!!WEB端的三大元件

必看!!!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


八種監聽器: