越想構建上層建築,就越以爲底層基礎很重要。補課系列。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(略)