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

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

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

【純文字版】瀏覽器

Tomcat與Java Web
開發技術詳解安全

Servlet服務器

Servlet的生命週期restful

初始化cookie

1Servlet容器加載Servlet類網絡

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

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(略)

相關文章
相關標籤/搜索