今天了解了java web的三大組件(Servlet、Filter、Listener),也就是我們在web.xml配置文件中看到的配置標簽,三大組件之間的區別與聯系,可以百度相應的關鍵詞。簡單地說,Filter(過濾器)是用來過濾用戶的相關請求的,Listener(監聽器)則是監聽Servlet的動態,它可以監聽客戶端的請求、服務端的操作等。
主要有三類:
1.ServletContext:對servlet上下文(application對象)進行監聽
2.Session:對session監聽
3.Request:對request的監聽
主要是:ServeltContext.Session的監聽
在WEB端實現監聽實質:實現一系列的監聽接口(實現相應的接口,覆寫各接口中相應的方法,在相應的事件觸發的時候會執行自己的監聽器中的覆寫的方法,在各個方法中完成自己想要的操作,從而實現了監聽)。
監聽--就是在進行某種各個范圍(application,session,request)中有相關值的設置、修改、替換的時候,這些操作都會觸發事件,而Java中事件的代理機制,事件處理是利用listener機制,所以為了在事件觸發的時候能夠使自己能夠采取相應的措施,就需要---->繼承這樣的listener,在listener中覆寫相應的方法,覆寫相應的事件處理方法,在對應的方法中處理對應的事件,也就是進行了監聽
監聽器有一些固定的監聽事務和相關接口,http://blog.csdn.net/java_pengjin/article/details/6760175 這篇文章中有詳細說明。
Struts實現MVC架構的原理
1、struts是Java web目前最常用的實現框架。他采用mvc結構,將頁面展現,流程控制和業務處理強有力的分開,結構清晰,思路明確,是進行Java web的最好選擇。
java web組件間的關系基本有三類:頁面跳轉(javax.servlet.RequestDispatcher.forward()方法),頁面重定向(javax.servlet.response.sendRedirect()方法)和頁面包含(javax.servlet.RequestDispatcher.include()方法).其中,頁面跳轉只是在同一個web應用中進行的,傳遞的是request和response對象;重定向和包含則可以是不同的url內容。
java web組件間的數據共享有四類:page,request,session和application,共享范圍有單個頁面到整個web應用,依次變大。
struts的頁面展示用jsp技術實現,按嚴格的mvc講,jsp只是負責顯示,不負責流程控制和數據處理;流程控制用action實現,在action的execute()里面通過return actionMapping.findForward()進行跳轉,具體的業務處理是有各種java bean或者ejb來實現的。actionForm也是struts里面的一部分,目的是存儲jsp頁面提交的內容,供對應的action使用。
如果使用jbuilder強大的可視化編程環境,利用struts進行java web開發,應該是非常簡單的事情。
2、struts framework是一種基於java的技術,Web應用程序開發人員通過struts framework即可充分利用面向對象設計、代碼重用以及"編寫一次、到處運行"的優點。Struts提供了一種創建Web應用程序的框架,其中對應用 程序的顯示、表示和數據的后端代碼進行了抽象。Struts采用jsp作為MVC的視圖,由ActionServlet具體指定的action動作類作為 控制器即MVC中的C,負責視圖與模型之間的交互。控制器的每個入口點都由名為struts-config.xml的配置文件設置。該文件把來自視圖的請 求映射為特定的JAVA類以進行相應的處理,控制器還指定下一個視圖的位置。Struts中的模型主要指的就是javabean,它是模型的代表,主要封 裝數據和業務邏輯。
Struts的處理流程:
l 控制器進行初始化工作,讀取配置文件,為不同的Struts模塊初始化相應的ModulConfig對象。
l 控制器接收Http請求,並從ActionConfig中找出對應於該請求的Action子類,如果沒有對應的Action,控制器直接將請求轉發給JSP或者靜態頁面,否則控制器將請求分發至具體的Action類進行處理。
l 在控制器調用具體的Action的Execute方法之前,ActionForm對象將利用Http請求中的參數來填充自已。還可以在 ActionForm類中調用Validate方法來檢查請求參數的合法性,並且可以返回一個包含所有錯誤信息的ActionErrors對象。
l 執行具體的的Execute的方法,它負責執行相應的業務邏輯。執行完后,返回一個ActionForward對象,控制器通過該 ActionForward對象來進行轉發工作。也可以把Action要處理的業務邏輯封裝在JavaBean中,如果系統中還有EJB,那么通過 JavaBean調用EJB以完成業務處理;如果沒有EJB,那么就直接在JavaBean中連接數據庫,進行數據庫相關的操作。