SSH摘要

SSH框架遵循了設計模式的一個重要原則:對修改關閉,對擴展開放。

基本概念:
一、JavaBean:可以看成一個獨立的,可以重複應用的組件,比如有數據庫DAO操作。javabean是一個java類,可以是有用戶界面的,或者純粹邏輯操作的。前者可以是一個button,後者可以是對數據庫某個表的操作類。

它並沒有一定要繼承的接口或者基類,內部提供了屬性、方法、事件三個要素。

爲了能讓使用這個bean的應用程序構建工具(比如JSP引擎)知道這個bean的屬性和方法,只需在類的方法命名上遵守以下規則:
1. 如果類的成員變量的名字是xxx,那麼爲了更改或獲取成員變量的值,即更改或獲取屬性,在類中可以使用兩個方法:
getXxx(),用來獲取屬性xxx。
setXxx(),用來修改屬性xxx.。
2. 對於boolean類型的成員變量,即布爾邏輯類型的屬性,允許使用”is”代替上面的”get”。
3. 類中訪問屬性的方法都必須是public的,一般屬性是private的。
4. 類中如果有構造方法,那麼這個構造方法也是public的並且是無參數的。

當在xml中定義好bean之後,Spring框架會通過讀取相應的配置文件中的內容,並根據這些配置自動加載(創建javabean對象)並配置該對象的屬性。

使用流程:
1.定義用到的bean
2.定義action,並卻註冊action
3.指定裝配文件。applicationContext-*.xml

二、Hibernate與Spring、Struts2
Hibernate提供了數據庫記錄和java對象的映射關係,也就是說每張表都有一個java類與之對應,當對這個類中的函數進行操作的時候,對應相應的sql語句。哦,他叫hql。

建立流程:
1.建立一個與表A對應字段的beanA。
2.建立一個A.hbm.xml文件,對每個字段進行映射。
3.建立一個hibernate.cfg.xml文件,並且配置好數據庫連接屬性,並將A.hbm.xml加入
4.建立一個bean,其中包含對beanA的一些常見的增刪功能等。(一般命名爲×××DAO),比如adduser、deluser等操作。
5.與執行邏輯的bean進行搭配使用。(一般明明爲×××Service,不能直接訪問數據庫)
6.建立一個處理前端請求的處理類,比如××ACTION,××Cmd,與前面的bean進行調用。

三、Servlet
Servlet是運行在Web服務器上的Java程序,用於響應客戶請求。

Servlet通常繼承自GenericServlet類或HttpServlet類。

一個Servlet通常在web容器加載的時候初始化,或者在第一個用戶請求到來的時候初始化。一個Servlet通常服務於多個客戶,所以得考慮同步問題。同時出錯的話長時間會導致被容器給destroy掉。

Filter:過濾器,生命週期與Servlet類似,用於過濾請求處理的次序和處理者。

那麼Servlet是被誰調用,又是什麼時候被調用的呢?下面出場的就是這位老兄了。

四、Tomcat
tomcat是由一對組件集合而成的,如Server、Service、Connector等。可以簡單的理解爲管理一堆小弟的容器。

當tomcat啓動時,會查看當前有哪些servlet可以註冊。

當用戶提交請求時,web服務應用如apache會將這些請求發送給這個容器,然後由tomcat來決定讓誰來處理。由容器向servlet提供HTTP請求和響應,而且是由容器調用servlet的方法(doGet()和doPost())。容器運行多個servlet線程來處理對同一servlet的多個請求。(對每個請求分配一個線程,而不是每個客戶)

tomcat這個容器的任務很艱鉅,它起着管理servlet生命週期,以及和服務器通信的功能。
1)通信支持。利用容器提供的方法,web服務器能輕鬆的與servlet進行通信。
2)生命週期管理。容器控制着servlet的生與死。它會負責加載類,實例化,初始化,調用servlet的方法以及使servlet能夠被垃圾回收。
3)多線程支持。容器會自動的接受每個servlet請求,創建一個新的java線程。針對每個請求,如果servlet已經運行完相應的HTTP方法,線程就會結束。但是我們同時也得考慮線程的安全性。

所以Servlet一生中的三大重要時刻
1)init()方法:在servlet實例被創建後調用,可以覆蓋此方法做一些初始化的工作,比方說得到一個數據庫連接。
2)service()方法:當客戶請求到來時,容器會創建一個新的線程,調用servlet的service()方法。servlet的一生基本都在這裏度過。我們一般不要覆蓋此方法。
3)doGet或者doPost()方法:service方法根據請求的HTTP方法,來調用doGet()或者doPost()方法。我們在開發servlet時肯定要覆蓋此方法。每次運行doGet()或者doPost()方法,它都在一個單獨的線程中。

好吧。今天到此爲止,作爲一個小白,我要慢慢學習。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章