客戶端傳送請求至伺服器端;
伺服器將請求資訊傳送至 servlet;
servlet 生成響應內容並將其傳給伺服器。響應內容動態生成,通常取決於客戶端的請求;
伺服器將響應返回給客戶端。
當乙個請求傳送到servlet容器的時候,容器先會將請求的url減去當前應用上下文的路徑作為servlet的對映url,比如我訪問的是http://localhost/test/aaa.html,我的應用上下文是test,容器會將http://localhost/test去掉,剩下的/aaa.html部分拿來做servlet的對映匹配。這個對映匹配過程是有順序的,而且當有乙個servlet匹配成功以後,就不會去理會剩下的servlet了。
1. 精確路徑匹配。例子:比如servleta 的url-pattern為 /test,servletb的url-pattern為 /* ,這個時候,如果我訪問的url為http://localhost/test ,這個時候容器就會先進行精確路徑匹配,發現/test正好被servleta精確匹配,那麼就去呼叫servleta,也不會去理會其他的servlet了。
2. 最長路徑匹配。例子:servleta的url-pattern為/test/*,而servletb的url-pattern為/test/a/*,此時訪問http://localhost/test/a時,容器會選擇路徑最長的servlet來匹配,也就是這裡的servletb。
3. 擴充套件匹配,如果url最後一段包含擴充套件,容器將會根據擴充套件選擇合適的servlet。例子:servleta的url-pattern:*.action
4. 如果前面三條規則都沒有找到乙個servlet,容器會根據url選擇對應的請求資源。如果應用定義了乙個default servlet,則容器會將請求丟給default servlet(什麼是default servlet?後面會講)。
建立servlet
例項有兩個時機:
每個servlet
的執行都遵循如下生命週期:
建立servlet例項。
web容器
呼叫servlet
的init()
方法,對
servlet
進行初始化。
servlet
初始化後,將一直存在於容器中,用於
響應客戶端請求
,如果客戶端傳送
get請求,容器呼叫
servlet
的doget()
方法處理並響應請求;如果客戶端傳送
post
請求,容器呼叫
servlet
的dopost()
方法處理並響應請求。或者統一使用
service()
方法處理來響應使用者請求。
web容器決定銷毀
servlet
時,先呼叫
servlet
的destory()
方法,通常在關閉
web應用時
銷毀servlet例項。
session和servlet的一些認識
為客戶開發的系統已經上線使用了,但是反應伺服器斷開的時候太短,希望延長伺服器的有效時間。於是想到了session,專案框架不是我搭建的,但是還是嘗試找找,找了都沒看到 直接設定了session 的有效時間,寫了session的 建立和登出,也是預設的半個小時。於是沒找出問題所在。但是還是對sessi...
關於Servlet的一些知識
servlet的生命週期就是從servlet出現到銷毀的全過程。主要分為以下幾個階段 載入類 例項化 為物件分配空間 初始化 為物件的屬性賦值 請求處理 服務階段 銷毀 伺服器啟動時 web.xml中配置load on startup 1,預設為0 或者第一次請求該servlet時,就會初始化乙個s...
winpcap的一些認識
一 winpcap簡介 winpcap是unix下的libpcap移植到windows下的產物,他是乙個freeandopensource的專案。winpcap工作於驅動 driver 層,所以能以很高的效率進行網路操作。winpcap提供了以下強大的功能 1 捕獲原始的資料報 2 設定filter...