《Tomcat與Java Web開發技術詳解》思維導圖


越想構建上層建築,就越覺得底層基礎很重要。補課系列。

書是良心書,就是太基礎了,正適合補課。

【純文字版】

Tomcat與Java Web
開發技術詳解

Servlet

Servlet的生命周期

初始化

1Servlet容器加載Servlet類

2Servlet容器創建ServletConfig,初始化配置信息

3Servlet容器創建Servlet對象

4Servlet容器調用Servlet對象的init(ServletConfig)

時機:首次被請求或配置了<load-on-startup>

運行時

接收請求封裝ServletRequest和ServletResponse

調用service()

通過ServletResponse生成響應結果

銷毀

調用destroy()

銷毀Servlet對象

銷毀對應的ServletConfig

應用的上下文SerletContext

一個webapp對應一個SerletContext

監聽接口ServletContextListener

contextInitialized(ServletContextEvent)

contextDestroyed(ServletContextEvent)

HttpSession的生命周期

創建

瀏覽器首次訪問該應用

瀏覽器上次的會話已銷毀,但再次訪問該應用

瀏覽器訪問時不帶上次會話的ID

銷毀

服務器調用invalidate()

會話過期

服務器無法直接知道瀏覽器已終止

setMaxInactiveInterval(int)

作用范圍

request.getSession()

只要能取到會話對象,就能共享會話的數據

會話的監聽接口

配置中web.xml

HttpSessionListener監聽創建與銷毀

HttpSessionAttributeListener監聽屬性變化

作為屬性對象存入會話

HttpSessionBindingListener監聽屬性的綁定情況

HttpSessionActivationListener監聽會話激活與擱置

過濾器

按web.xml中的順序串聯調用

chain.doFilter()遞歸調用

調用關系為filter1->filter2->...->servlet

此后的返回是filter1<-filter2<-...<-servlet

req和resp包裝為ServletRequestWrapper和ServletResponseWrapper

web.xml

加載順序

ServletContext(context-parm)->Listener->Filter->Servlet

其他(略)

Tomcat

三種工作模式

standalone

JVM->Tomcat->Servlet容器

其他服務器進程內容器(JNI)

Tomcat分為web插件和Servlet容器兩部分

容器組件運行在其他服務器內的JVM

web插件也在該服務器中

web插件通過JNI調用容器組件

其他服務器進程外容器(IPC)

Tomcat分為web插件和Servlet容器兩部分

容器組件運行在獨立JVM

服務器不需要支持Servlet

web插件運行在服務器中

web插件通過IPC調用容器組件

server.xml

Server, Service, Engine, Host(略)

Context

className:可指定實現類

path:應用的URL入口

docBase:應用的文件路徑

reloadable:自動監測更新並重新加載(但增加運行負荷)

cookies:允許以Cookie來支持Session

useNaming:支持JNDI

Manager會話管理器

默認StandardManager

可加入Memcached的類包實現集中式會話管理

Cluster集群

Engine中加入<Cluster>並配置DeltaManager(或其他實現)

在應用的web.xml中啟用<distributable/>

存入會話的屬性要實現序列化接口

網絡環境支持組播

Connector

監聽端口

AJP協議

配置SSL

JK連接器

通過AJP協議訪問Tomcat

作為插件可以集成在Apache,IIS等服務器中

Relm安全域

在Tomcat層面實現鑒權

有配置文件、JDBC、DataSource等不同的實現

Valve閥

有Engine、Host和Context三種作用范圍

Tomcat自帶的實現

客戶訪問日志閥

遠程地址過濾器

遠程主機過濾器

客戶請求記錄器

SSI(Server Side Include)

常用於網頁的拼接,比如header和footer

只提供了一些簡單的指令

以SSIServlet的形式實現

Web應用的
幾種調用方式

EJB

JavaEE應用結構

客戶層(browser或client)

Web層(JSP和Servlet)

業務層(EJB)

會話Bean-邏輯

有狀態

無狀態

實體Bean-實體

EIS層(數據庫)

接口

Remote接口EJBObject

Home接口EJBHome

Bean類實現SessionBean並對Remote接口做具體實現

技術棧

服務器:JBoss

調用方式:RMI

SOAP

WebService

SOAP:基於XML語言的數據交換協議

WSDL:基於XML語言的web服務描述語言

通信協議

HTTP/HTTPS

SMTP/POP3

調用方式

RPC

Message-Oriented

技術棧

Web服務框架:Apache AXIS

服務器:Tomcat

MVC模式

層次

模型:業務邏輯

視圖:用戶呈現

控制器

接收用戶請求

調用模型響應用戶請求

選擇視圖顯示響應結果

優點:3個模塊相互獨立,松耦合

JSP Model 2

Servlet作為控制器

JavaBean作為模型

JSP作為視圖

Struts

實現MVC的web框架

控制器

FilterDispatcher+struts.xml把請求轉發給對應的各個Action

Action類側重於控制程序的流程

Velocity

模板語言的作用:將Java代碼從Web頁面中分離出來

引擎的使用

Servlet類繼承VelocityServlet

覆蓋handleRequest方法

把變量存入Context對象

返回指定模板文件

課外補充:遠程通信的幾種方式

RPC:遠程過程調用

TCP連接

應用層尋址(比如HTTP的URI地址)

請求和響應的序列化和反序列化

RMI遠程方法調用

僅限於Java語言

強對象

WebService

HTTP連接

SOAP協議

基於XML

restful風格

面向資源的GET/POST/PUT/DELETE操作

(常使用基於JSON的數據交換)

JMS

Java消息服務

JSP與JSTL(略)


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM