【Java 基礎】--HttpServlet詳解
Servlet簡介
Servlet的框架由兩個java包組成:javax.servlet和javax.servlet.http在javax.servlet包中定義了所有的Servlet類都必須實現或擴充套件的的通用介面和類,在javax.servlet.http包中定義了採用HTTP通訊協議的HttpServlet類。
Servlet的框架核心是javax.servlet.Servlet介面,所有的Servlet必須實現這一介面。在Servlet介面中定義了5個方法,其中3個方法代表了Servlet的宣告週期。
Init方法--負責初始化servlet物件。
Service方法--負責響應客戶的請求。
Destroy方法--當Servlet物件退出宣告週期時,負責釋放佔有的資源。
為什麼要使用Servlet?
Servlet用來解析http協議,並把解析的結果請求資料庫驗證後,返回資訊給前臺jsp或者html頁面。
Servlet就像橋樑,跟控制器作用類似。
下面就是一個Servlet的使用者驗證的小例子:
1. 伺服器拿到客戶端傳過來的資料,解析http協議,獲取html傳送過來的使用者名稱和密碼
2. 請求資料庫驗證,使用者名稱和密碼
3. 返回結果給前臺html頁面
Servlet呼叫過程
我們結合例項來講解一下Servlet呼叫流程:
1. web客戶端傳送http協議,request(使用者名稱,密碼)請求到tomcat。
2. tomcat有服務在這等著,首先訪問的是web.xml
<servlet-mapping>結點,提供了兩個標籤資訊<servlet-name>和<url-pattern>。
servlet-name:自己定義的servlet名稱
url-pattern: servlet的URL路徑,相對於web應用程式上下文根路徑。
(根路徑就是
test_servlet
WEB-INF
classes(存放編譯檔案)
lib(存放第三方的jar包,資料驅動等等)
web.xml (存放servlet配置資訊)
)
通過url-pattern提供的路徑可以找到Servlet,每個<url-pattern>對應一個<servlet-name>,根據<servlet-name>可以找到該路徑對應的類<servlet-class>.
3. 找到servlet-class, tomcat就可以拿到servlet對它進行例項化,例項化成普通的java物件。
servlet和普通的類的區別是宣告週期由tomcat容器管理。
4. 首先呼叫Servlet裡面的service方法,判斷請求模式:doGet還是doPost
如果選擇doGet方法
HttpServletRequest包裝了客戶端的相關資訊,包括了表單資訊。
如果呼叫完成之後,驗證完成,呼叫資料庫就返回。告訴客戶端這次驗證是對還是錯。
輸出html給瀏覽器。HttpServletResponse,這個物件可以做響應的,通過這個物件可以把資料寫給瀏覽器。getWriter拿到字元流,println列印到瀏覽器上。
總結
現在才知道,之前的學.net MVC中的Controller裡面拼接前臺html字串是怎麼來的,Java裡面的Servlet已經給出我們答案了!
相關文章
- HttpServlet詳解HTTPServlet
- java基礎詳解-集合Java
- java繼承基礎詳解Java繼承
- Java基礎-泛型詳解Java泛型
- Java基礎-內部類詳解Java
- java基礎之:迭代器詳解Java
- Java 基礎 01-String 詳解Java
- Java基礎1-String詳解Java
- Java基礎:throw和throws的詳解Java
- HttpServlet was not found on the JavaHTTPServletJava
- 分散式架構基礎:Java RMI詳解分散式架構Java
- Java基礎之字串String詳細解釋Java字串
- Java中Lambda表示式基礎及使用詳解Java
- OpenGL 基礎光照詳解
- Java基礎——註解Java
- Java基礎面試題型整理,附帶答案詳解Java面試題
- Java基礎篇(04):日期與時間API用法詳解JavaAPI
- 惡補基礎知識:Java 棧與佇列詳解Java佇列
- JSON基礎使用詳解JSON
- Git基礎知識詳解Git
- Redis基礎知識詳解Redis
- HotDB 基礎架構詳解架構
- Linux基礎命令詳解Linux
- 【iOS基礎】KVC / KVO詳解iOS
- Scrapy基礎(二): 使用詳解
- socket基礎詳解 小白白
- 基礎控制元件詳解控制元件
- Java 基礎(十七)註解Java
- 超詳細Java基礎-多型Java多型
- MySQL資料庫基礎詳解MySql資料庫
- 【死磕NIO】— NIO基礎詳解
- JDBC-MySql基礎操作詳解JDBCMySql
- Python基礎 - yield 用法詳解Python
- Git詳解之二:Git基礎Git
- 音訊編碼基礎詳解音訊
- Java基礎系列:瞭解ArrayListJava
- java註解基礎與使用Java
- 【Java基礎】反射和註解Java反射