Java Web 之servlet

一、web服務器

相信大家都聽過說web服務器糠睡,常用的J2EE開發(fā)--Tomcat漓踢,.NET開發(fā)--IIS等牵署。HTTP服務器是web服務器的一種,也是開發(fā)中最常見的喧半,除此之外奴迅,還有FTP文件服務器。簡單來說挺据,客戶端發(fā)起HTTP請求至服務器取具。服務器接收到請求之后,再對HTTP響應結果進行封裝扁耐,然后再返回給客戶端暇检。

1、關于Tomcat

? ? Tomcat包含了核心服務模塊:Connector連接模塊 和 Container 容器婉称。Tomcat Server 核心是一個Servlet/JSP Container块仆。對每一個HTTP請求,過程如下:

? --獲取連接 --- Tomcat來分析請求(HttpServletRequest)--- 調用servlet的service()方法王暗,進行業(yè)務處理 ---? 產(chǎn)生相應的響應(HttpServletResponse) --- 關閉連接悔据。以下是關于Tomcat 架構的一張圖

二、servlet 是什么

1俗壹、到底什么是servlet科汗,打開idea,ctrl + shift + n策肝,搜索servlet肛捍。就可以看到如下圖,servlet其實就是一個java的接口interface之众,這個接口一共有五個方法拙毫。servlet接口就是定義了一套處理網(wǎng)路請求的規(guī)范,所有實現(xiàn)servlet的類棺禾,都需要實現(xiàn)它的五個方法缀蹄。

servlet是一個規(guī)范,那實現(xiàn)了servlet的類膘婶,就能處理請求了嗎缺前?答案當然是否定的,servlet不會直接和客戶端打交道悬襟。那請求怎么來到servlet呢衅码?答案是servlet容器,就是web服務器脊岳,比如我們最常用的Tomcat逝段。接下來的實例垛玻,我們會講到將servlet部署到Tomcat容器中。

Tomcat才是與客戶端直接打交道的家伙奶躯,他監(jiān)聽了端口帚桩,請求過來后,根據(jù)url等信息嘹黔,確定要將請求交給哪個servlet去處理账嚎,然后調用那個servlet的service方法,service方法返回一個response對象儡蔓,tomcat再把這個response返回給客戶端郭蕉。

2、servlet 的生命周期

?通過調用?init ()?方法 servlet 被初始化浙值。它在第一次創(chuàng)建 servlet 時被調用恳不,該方法只會被執(zhí)行一次

?Servlet 調用?service()?方法來處理客戶端的請求。每次服務器接收到一個 servlet 請求時开呐,服務器會產(chǎn)生一個新的線程并調用服務烟勋。service() 方法由容器調用即Tomcat調用,且 service 方法在適當?shù)臅r候調用 doGet筐付、doPost卵惦、doPut、doDelete 等瓦戚。所以對 service() 方法你什么都不需要做沮尿,只是根據(jù)你接收到的來自客戶端的請求類型來重寫 doGet() 或 doPost()。

? 通過調用?destroy()?方法 servlet 終止较解。整個過程也會只進行一次畜疾。

? ?最后,servlet 是由 JVM 的垃圾回收器進行垃圾回收的印衔。

三啡捶、servlet 配置

要用Servlet就需要在web.xml中進行配置,解釋下Servlet最基本的配置信息奸焙。

Servlet的配置包括兩部分:

1瞎暑、<servlet>配置Servlet的名字和完整類路徑:

servlet-name是自定義的,就是給Servlet取個名字与帆。

servlet-class是Servlet完整的類了赌,就是從一開始的包一直“.”到該Servlet。

2玄糟、<servlet-mapping>是用來截獲請求的勿她,包括servlet-name和url-pattern。

servlet-name跟<servlet>中的servlet-name是對應的阵翎,兩個servlet-name一定要一致嫂拴,否則會找不到對應的Servlet播揪。

url-pattern是截獲請求的規(guī)則贮喧,當表單提交的時候筒狠,會根據(jù)特定的規(guī)則調用相應的Servlet

3、url-pattern大致分為以下幾種方式

????完全匹配? ? 如:<url-pattern>/servlet/MyServlet.do</url-pattern>

? ? 目錄匹配? ? 如:<url-pattern>/servlet/*</url-pattern>

????擴展名匹配? 如:<url-pattern>*.do</url-pattern>

4箱沦、容器查找規(guī)則:

????容器會首先查找完全匹配辩恼,如果找不到,再查找目錄匹配谓形,如果也找不到灶伊,就查找擴展名匹配。

????如果一個請求匹配多個“目錄匹配”寒跳,容器會選擇最長的匹配聘萨。

例如:servletA的url-pattern為/test/*,而servletB的url-pattern為/test/b/*童太,此 時訪問http://localhost/test/b時米辐,容器會選擇路徑最長的servlet來匹配,也就是這里的servletB书释。

注意:”/*.action”這樣一個看起來很正常的匹配會錯翘贮。因為這個匹配即屬于路徑映射,也屬于擴展映射爆惧,會導致容器無法判斷狸页。

四、servlet 實例

創(chuàng)建一個javaWeb項目扯再。具體參考:java Web 環(huán)境搭建與配置

IDE會幫我們自動生成src芍耘、web、web-inf這些文件目錄熄阻,還有配置文件web.xml斋竞。我們的后端java代碼一般放在src下面,JSP文件放在web目錄下饺律,jar包這些額外的庫文件放在WEB-INF/lib目錄下(lib目錄是我自己新建的窃页,然后右鍵add as library),web.xml直接放在WEB-INF下面复濒。

在src目下,New 一個?servlet 類脖卖,取名為TestServlet。

如圖所示巧颈,TestServlet默認有doGet畦木,doPost是HttpServlet的方法。

在doGet里面輸入:response.getWriter().println("Sucess!!!");

啟動TomcaT服務砸泛,在瀏覽器端輸入http://localhost:8888/Test

出現(xiàn)如下十籍,即成功

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末蛆封,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子勾栗,更是在濱河造成了極大的恐慌惨篱,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,290評論 6 491
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件围俘,死亡現(xiàn)場離奇詭異砸讳,居然都是意外死亡,警方通過查閱死者的電腦和手機界牡,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,107評論 2 385
  • 文/潘曉璐 我一進店門簿寂,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人宿亡,你說我怎么就攤上這事常遂。” “怎么了挽荠?”我有些...
    開封第一講書人閱讀 156,872評論 0 347
  • 文/不壞的土叔 我叫張陵克胳,是天一觀的道長。 經(jīng)常有香客問我坤按,道長毯欣,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,415評論 1 283
  • 正文 為了忘掉前任臭脓,我火速辦了婚禮酗钞,結果婚禮上,老公的妹妹穿的比我還像新娘来累。我一直安慰自己砚作,他們只是感情好,可當我...
    茶點故事閱讀 65,453評論 6 385
  • 文/花漫 我一把揭開白布嘹锁。 她就那樣靜靜地躺著葫录,像睡著了一般。 火紅的嫁衣襯著肌膚如雪领猾。 梳的紋絲不亂的頭發(fā)上剂公,一...
    開封第一講書人閱讀 49,784評論 1 290
  • 那天珍德,我揣著相機與錄音忍法,去河邊找鬼灾挨。 笑死,一個胖子當著我的面吹牛继低,可吹牛的內容都是我干的熬苍。 我是一名探鬼主播,決...
    沈念sama閱讀 38,927評論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼柴底!你這毒婦竟也來了婿脸?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 37,691評論 0 266
  • 序言:老撾萬榮一對情侶失蹤柄驻,失蹤者是張志新(化名)和其女友劉穎狐树,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體凿歼,經(jīng)...
    沈念sama閱讀 44,137評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡褪迟,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 36,472評論 2 326
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了答憔。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,622評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡掀抹,死狀恐怖虐拓,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情傲武,我是刑警寧澤蓉驹,帶...
    沈念sama閱讀 34,289評論 4 329
  • 正文 年R本政府宣布,位于F島的核電站揪利,受9級特大地震影響态兴,放射性物質發(fā)生泄漏。R本人自食惡果不足惜疟位,卻給世界環(huán)境...
    茶點故事閱讀 39,887評論 3 312
  • 文/蒙蒙 一瞻润、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧甜刻,春花似錦绍撞、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,741評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至祥绞,卻和暖如春非洲,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背蜕径。 一陣腳步聲響...
    開封第一講書人閱讀 31,977評論 1 265
  • 我被黑心中介騙來泰國打工两踏, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人丧荐。 一個月前我還...
    沈念sama閱讀 46,316評論 2 360
  • 正文 我出身青樓缆瓣,卻偏偏與公主長得像,于是被迫代替她去往敵國和親虹统。 傳聞我的和親對象是個殘疾皇子弓坞,可洞房花燭夜當晚...
    茶點故事閱讀 43,490評論 2 348

推薦閱讀更多精彩內容