Servlet概述

Java Servlet API 是Servlet容器(如tomcat)和Servlet之間的一系列接口,它們定義了容器與Servlet交互的的各種方法。

Servlet工作流程

image.png

Servlet核心類

UML

Servlet UML.png

ServletConfig

ServletConfig包含了Servlet的配置參數(shù),由容器在Servlet初始化的時(shí)候傳遞給Servlet。


ServletConfig.png

ServletContext

ServletContext可以看作是Servlet容器的抽象,提供了操作容器的方法。
容器為每個(gè)web項(xiàng)目都創(chuàng)建一個(gè)ServletContext實(shí)例,在啟動(dòng)時(shí)創(chuàng)建,服務(wù)器關(guān)閉時(shí)銷毀,在一個(gè)web項(xiàng)目中共享數(shù)據(jù),管理web項(xiàng)目資源,為整個(gè)web配置公共信息等,通俗點(diǎn)講,就是一個(gè)web項(xiàng)目,就存在一個(gè)ServletContext實(shí)例,每個(gè)Servlet讀可以訪問(wèn)到它。

ServletContext.png

Servlet接口

定義了一些由容器調(diào)用的方法,完成Servlet的配置,初始化以及執(zhí)行具體邏輯。

Servlet.png

GenericServlet

GenericServlet實(shí)現(xiàn)了Servlet接口以及ServletConfig接口,初步實(shí)現(xiàn)配置,日志,初始化相關(guān)方法。

GenericServlet.png

HttpServlet

繼承GenericServlet,將處理請(qǐng)求的核心方法service根據(jù)Http Method分成對(duì)應(yīng)的方法再處理。

HttpServlet.png

ServletRequest

Servlet容器將接受到的請(qǐng)求的內(nèi)容封裝成ServletRequest對(duì)象,傳遞給Servlet的service方法執(zhí)行邏輯。ServletRequest中定義了獲取請(qǐng)求內(nèi)容的一系列方法。

ServletRequest.png

HttpServletRequest

繼承ServletRequest,定義了HTTP協(xié)議相關(guān)內(nèi)容參數(shù)獲取的方法。

HttpServletRequest.png

ServletResponse

請(qǐng)求出參的封裝對(duì)象,由Servlet容器在Servlet的service方法中傳入,根據(jù)業(yè)務(wù)邏輯填充,再由Servlet容器轉(zhuǎn)成對(duì)應(yīng)的Response。

ServletResponse.png

HttpServletResponse

繼承ServletResponse,根據(jù)HTTP協(xié)議定義相關(guān)方法。

HttpServletResponse.png

ServletRequest和ServletResponse都是接口,具體的對(duì)象由Servlet容器提供,我們無(wú)需關(guān)心具體的實(shí)例對(duì)象,只需要操作接口的方法。

ServletResponseWrapper,ServletRequestWrapper

ServletResponseWrapper和ServletRequestWrapper是ServletResponse和ServletRequest的包裝類,允許我們重寫(xiě)包裝類,在執(zhí)行真實(shí)實(shí)例對(duì)象的前后做一些其他操作。

Filter

Servlet容器會(huì)在Servlet的service外層包裹一系列Filter組成的FilterChain,當(dāng)請(qǐng)求進(jìn)入Servlet容器時(shí),實(shí)現(xiàn)在Servlet的service執(zhí)行前后做一些其他處理。

Filter.png

在Filter的doFilter方法中調(diào)用FilterChain的DoFilter方法完成調(diào)用傳遞。

FilterChain.png

Filter初始化方法中傳入FilterConfig,通過(guò)該類可以獲取web.xml中定義的參數(shù),以及ServletContext。

FilterConfig.png

Listener

Servlet API 提供了一些Listener允許我們監(jiān)聽(tīng)特定的事件。

ServletContextListener

接收關(guān)于ServletContext生命周期更改的通知事件的接口。

ServletContextListener.png

ServletContextAttributeListener

接收web應(yīng)用程序servlet上下文中屬性列表更改的通知。

ServletContextAttributeListener.png

ServletRequestListener

用于接收關(guān)于進(jìn)入和超出Web應(yīng)用程序范圍的請(qǐng)求的通知事件的接口。

ServletRequestListener.png

ServletRequestAttributeListener

接收關(guān)于ServletRequest屬性更改的通知事件的接口。

ServletRequestAttributeListener.png

HttpSessionListener

接收關(guān)于HttpSession生命周期更改的通知事件的接口。

HttpSessionListener.png

HttpSessionBindingListener

使對(duì)象從會(huì)話綁定到綁定或從其綁定時(shí)被通知。

HttpSessionBindingListener.png

HttpSessionAttributeListener

用于接收關(guān)于HttpSession屬性更改的通知事件的接口。

HttpSessionAttributeListener.png

HttpSessionActivationListener

用于接收session活躍與鈍化之間變化事件的接口。

HttpSessionActivationListener.png

AsyncListener

如果在添加了偵聽(tīng)器的ServletRequest上啟動(dòng)的異步操作已完成,超時(shí)或?qū)е洛e(cuò)誤,將會(huì)通知偵聽(tīng)器。

AsyncListener.png
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 一、Servlet 概述 Servlet 類是 JavaWeb 的三大組件之一,它屬于動(dòng)態(tài)資源。其作用是處理請(qǐng)求,...
    周二鴨閱讀 1,821評(píng)論 1 4
  • Based on Java? Servlet Specification v3.1 [TOC] Servlet和S...
    0x70e8閱讀 1,407評(píng)論 0 7
  • Servlet Interface 是Java Servlet API的核心抽象。所有的servlets都直接或者...
    Lucky_Micky閱讀 1,872評(píng)論 2 2
  • 在學(xué)習(xí)Servlet是找到一篇不錯(cuò)的文章,轉(zhuǎn)載一下。學(xué)習(xí)心得,Servlet其實(shí)只是個(gè)接口,相當(dāng)于是定義了一個(gè)標(biāo)準(zhǔn)...
    君子若蓮閱讀 1,257評(píng)論 1 16
  • 簇簇粉紅搖曳在溫煦的風(fēng)里宛如花開(kāi)月圓舞動(dòng)于你的心底 十里春風(fēng),吹啊吹漫天激揚(yáng)的片片花瓣一枚落在發(fā)梢裝扮著你的絢麗芳...
    虹牽夢(mèng)穎閱讀 529評(píng)論 0 2

友情鏈接更多精彩內(nèi)容