HTTP協議java
HTTP協議——超文本傳輸協議,用於定義web瀏覽器和web服務器之間數據交換的過程,遵照必定的通信的格式;web
HTTP請求——包括請求行和多個信息頭正則表達式
HTTP響應——包含狀態、信息頭、實體內容瀏覽器
Servlet接口緩存
Servlet是一個用於處理鏈接請求的接口,處理過程以下:安全
Servlet接口的實現類:GenericServlet、HttpServlet。服務器
平時用的比較多的是HttpServlet類,它是在原有的Servlet接口上添加了一些HTTP協議處理方法,且覆寫了service方法,該方法能夠自動判別請求方式,如GET,則調用doGet;如POST,則調用doPost方法,所以咱們在編寫Servlet時,只需覆寫doGet和doPost方法便可;多線程
爲了讓客戶端經過URL訪問到Servlet接口程序,咱們一般須要在web.xml這個配置文件中配置URL;經過<servlet>和<servlet-mapping>這兩對元素完成;app
<servlet>包含兩個子元素<servlet-name>和<servlet-class>;分別表示Servlet的註冊名和完整類名;url
<servlet-mapping>包含兩個子元素<servlet-name>和<url-pattern>;分別用於指定註冊名的對外的訪問路徑,能夠是正則表達式,匹配原則是「越像誰就找誰」;且一個<servlet>能夠對應多個<servlet-mapping>;
若是在<url-pattern>中僅設置一個斜杆/,則表示該<servlet>爲缺省Servlet,即將匹配不到的url都交給缺省Servlet處理;
Servlet與普通java類的區別是:Servlet是一個供其餘java程序調用的java類,不能夠單獨運行;在Servlet整個生命週期中,只會調用一次init方法,即Servlet實例一旦建立,會被保存在內存中,爲其服務後續的請求,而service方法倒是每次請求都調用一次;
當有多個客戶端鏈接到同一個Servlet時,Servlet並不會再實例化,而是經過多線程調用service方法進行處理,這個時候就有可能會形成線程的安全問題,而引發這種問題的每每是存在全局變量,當多個service方法調用該變量時就會形成錯誤,最好的解決方法是設置局部變量,即每一個線程各類操做各類線程內的變量,互不影響;