1 新增的event模型:通過設定Listener,可以在Servlet的初始化之前和之後做某些事情.這是事件模型在Servlet中的應用.
在訪問/bookstore1/enter之後, ContextListener 構造了一個DB,並且把它放到ServletContext中去,這樣BookstoreServlet可以從Context中得到這個初始化的DB
核心代碼如下:
context = event.getServletContext();
…………………………………..
context.setAttribute("bookDB", bookDB);
ContextListener 類的實現是很簡單的,只有: contextInitialized, contextDestroyed兩個方法
生存期事件:
不單ServletContext的事件可以監聽,Session等的事件也可以監聽,分別爲:HttpSessionListener , ServletRequestListener
2 RequestDispatch :
在BookstoreServlet 中使用了RequestDispatch,代碼如下:
RequestDispatcher dispatcher =
getServletContext().getRequestDispatcher("/banner");
if (dispatcher != null)
dispatcher.include(request, response);
查看web.xml,可知/banner 對應BannerServlet類.
一個RequestDispatch就是一個普通的Servlet類.通常它的應用如下:一個小的Servlet類生成部分Response的結果,而另一個Servlet包含這個結果,進而構造一個Response.這個較小的Servlet類可以理解成網頁的模板.程序的Component.這樣,提高了Servlet的模塊化.
讀完第一個BookstoreServlet的源碼
3 這時頁面有兩個連接,一個是書的信息,一個是Start Shopping
1 ) 點擊 書的信息 BookDetailsServlet
從Context中取出BookDB,根據Parameter查找記錄,然後列出記錄.並列出 添加到購物車和繼續購物兩個選項
1 添加到購物車 CatalogServlet 設置購物車,並列出檢查購物車,買書,和書的信息
2 檢查購物車 ShowCartServlet 根據request的值檢查,沒什麼新鮮
3 其他Servlet都是這麼處理.
2 對於HttpServlet應該如此處理
1 從response得到output stream
2 填充resp的頭部信息
3 寫body到output
4 Filter 過濾器
概念: