servlet淺析

1.servlet

         運行在web服務器或應用服務器上的程序

2.生命週期

       init():初始化方法,只在servlet初始化時被調用,只調用一次

       service():處理客戶端的請求,每一次可以端的一個請求,創建一個新的線程進行處理,在servlet週期內可以被調用很多次,請求通常爲http請求

       destroy():servlet結束時調用,servlet被銷燬時調用,只調用一次

       doPost():在http請求指定爲post請求時,被調用

       doGet():在http請求未指定爲post請求時,被調用,

      post請求與get請求的區別:

      get請求的形式如:http://localhost:8080/login.json? userName=name&passWord=123,參數是放在http請求的header裏的,post的請求的參數是放在http請求的body裏。get請求的大小有限制的,不能傳送大量的數據。此外如上文所示,get請求的參數能直接在url裏能直接看見,因此安全性不高

3.過濾器

     針對某類請求進行統一的處理,這個處理可以在進servlet前或者servlet處理完成後,最常見的如權限驗證,對update之類的操作如果需要判斷用戶是否是登錄狀態且需要用戶有修改的權限。這些判斷如果在業務代碼裏,容易造成業務代碼膨脹和餘,這時可以考慮採用過濾器,把判斷邏輯單獨抽離出來放在過濾器裏集中處理,這樣更易於處理且利於後期的維護,在springmvc裏有類似的組件叫攔截器,兩者作用都類似,都是採用的責任鏈這種設計模式實現的。調用的順序同web.xml裏聲明的順序一直。

過濾器的實現需要實現Filter接口,主要實現doFilte方法,在web.xml裏的配置同servelet類似。

<filter>
  <filter-name>LogFilter</filter-name>
  <filter-class>com.demo.LogFileter</filter-class>  //實現類Filter接口的類全路徑
  <init-param>                                      //初始化參數,可在init方法裏獲取   
    <param-name>Site</param-name>
    <param-value>csdn</param-value>
  </init-param>
</filter>
<filter-mapping>
  <filter-name>LogFilter</filter-name>
  <url-pattern>/*</url-pattern>     //攔截的某類請求,這裏是攔截所有的請求
</filter-mapping>

4.異常處理

  通過<error-page>在web.xml裏配置,實際項目中通常採用springmvc的統一異常處理來進行異常的處理

5.cookie與session的區別

    cookie是存放在用戶瀏覽器裏的,常見的自動登錄功能就是通過cookie實現的,如果沒有設置cookie的過期時間,瀏覽器關閉後,cookie失效,此外cookie不能跨域

  session是保留在服務器端
    

      

       

        

      Servlet 生命週期

6.框架

    servlet框架由javax.servlet和javax.servlet.http

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章