SSH框架介紹以及如何搭建(myEclipse下)


  首先,SSH為Struts 2+Spring+Hibernate這三個框架的集成框架,是目前較流行的一種Web應用程序開源集成框架,用於構建靈活、易於擴展的多層Web應用程序。是目前較流行的一種JAVA Web應用程序開源框架。

1.JAVA EE

     Java EE是目前開發企業級(Web)應用最流行的平台之一,是將所有Sun的企業技術集合在一個體系結構下的平台。
  java目前有三個平台:
Ø適用於小型設備和智能卡的Java 平台Micro版(Java Platform Micro Edition,Java ME)
Ø適用於桌面系統的Java 平台標准版(Java Platform Standard Edition,Java SE)
Ø適用於創建服務器應用程序和服務的Java平台企業版(Java Platform EnterPrise Edition,Java EE)。
  Java EE應用分層結構:
 
  • 表現層:此層由系列的jsp頁面、Velocity頁面、PDF文檔視圖組件組成,負責收集用戶請求,並顯示處理結果。
  • 控制器層:此層由系列控制器組成,這些控制器用於攔截用戶請求,並調用業務邏輯組件的業務邏輯方法,處理用戶請求,並根據處理結果轉發到不同的表現層組件。
  • 業務邏輯層:此層由系列的業務邏輯對象組成。業務邏輯對象實現了系統所需要的業務邏輯方法。這些業務邏輯方法可能是依賴DAO組件實現的業務邏輯方法,也可能僅僅用於暴露Domain Object對象所實現的業務邏輯方法。
  • 數據訪問對象(Data Access Object,DAO)層:此層由系列的DAO組成,這些DAO實現了對數據庫的創建、查詢、更新和刪除(CRUD)等原子操作。
  • 領域對象(Domain Object )層:此層由系列的POJO(Plain Old Java Object,普通傳統的Java對象)

 

2.SSH框架

  集成SSH框架的系統從職責上分為四層:表示層、業務邏輯層、數據持久層和域模塊層(實體層)  Struts 2進行流程控制,Spring進行業務流轉,Hibernate進行數據庫操作的封裝。整體框架和業務層用Spring,表示層用Struts,持久層用Hibernate。

 

Struts 是一個很好的MVC框架,主要技術是Servlet和Jsp。Struts的MVC設計模式可以使我們的邏輯變得很清晰,讓我們寫的程序層次分明。

Spring 提供了管理業務對象的一致方法,並鼓勵注入對接口編程而不是對類編程的良好習慣,使我們的產品在最大程度上解耦。

Hibernate 是用來持久化數據的,提供了完全面向對象的數據庫操作。Hibernate對JDBC進行了非常輕量級的封裝,它使得與關系型數據庫打交道變得非常輕松。

以下是SSH架構圖:

 

Struts負責Web層:

  ActionFormBean接收網頁中表單提交的數據,然后通過Action進行處理,再Forward到對應的網頁,在Struts-config.xml中定義了<action-mapping>,ActionServlet會加載進來。

Spring負責業務層管理,即Service:

  Service為Action提供統一的調用接口,封裝持久層的DAO,並集成Hibernate,Spring可對JavaBean和事物進行統一管理。

Hibernate負責持久層,完成數據庫的CRUD操作:

  Hibernate有一組hbm.xml文件和PO,是與數據庫中的表相對應的,然后定義DAO,這些是與數據庫打交道的類。

  在Struts+Spring+Hibernate系統中,對象之間的調用流程如下:

Struts——>Spring——>Hibernate
JSP——>Action——>Service——>DAO——>Hibernate

 分割線




 Struts:

先學習一下Struts框架的運行原理和搭建:

 

  我使用的開發平台是myEclipse Professional 2014

1.首先新建一個web工程:

2.為工程添加Struts2支持:

之后點擊finish就可以了,然后我們就會發現在src下多了struts.xml配置文件

在struts2中,一旦讀取到struts.xml文件中的內容后,內容就以javabeans的形式存放在內存里,以后struts2對用戶的每次請求處理將直接使用內存中的數據,而不是再次讀取xml文件。

,和struts2.1 Libraries,其中包含了一些開發所需的jar包。

 

3.發現web.xml配置文件也擁有了基本的內容:

4 測試能否運行:

 

我為myEclipse配置的tmcat版本是8,tomcat配置的過程也講一下吧:

Windows->Preferencess->MyEclipse->Servers->tomcat

1處選擇tomcat解壓后的父目錄,2 處選擇enable,3點擊一下apply,最后確定。

然后最好是把myEclipse自帶的tomcat disable掉。

 

 

 

運行后在控制台未發現錯誤,所以配置成功。

 

接下來學習一下struts.xml配置:

模板可以在struts解壓文件的app目錄下解壓例子打開得到:

<struts>
    <constant name="struts.enable.DynamicMethodInvocation" value="false" />
    <constant name="struts.devMode" value="true" />

    <package name="default" namespace="/" extends="struts-default">
        <action name="HelloWorld" class="struts2Test/HelloWorld" method="exec">
            <result>hello.jsp</result>
        </action>
    </package>


</struts> 

 package:這里的package和java中的package的概念類似,主要用來管理一組業務功能相關的action.在實際應用中,我們應該把一系列業務相關的action放下同一package下。包還可以通過屬性“abstract=true”來定義成抽象包,抽象包中不能包含action.

  name屬性是必須指定的,是package的id,當其他類繼承這個包時,則需要引用name屬性;

  namesapce:是用來組織和重用代碼的編譯單元;

  extends:繼承的package的名字;一般來說,每個包都應該繼承struts-default包,struts-default包定義了攔截器和result類型,提供了struts2的核心功能。

 

action:

  name屬性也是相當於id,可以通過name來引用某個action;

  class:表明當action被調用時使用哪個類;

  method:表明當action被調用時使用class中的哪個方法;(注,在struts2中action中的方法的類型的返回值指定為String)

  result中制定視圖的路徑

然后來新建action類和其方法:

  

package strutsTest;

public class HelloWorld {
    private String meg;
    
    public String getMeg() {
        return meg;
    }

    public String exec(){
        meg="My first atruts application";
        return "Hello world!";
    }
}

然后創建jsp文件來調用HelloWorld中的msg中的內容,也就是在jsp中顯示這個字符串。

因為是只供Struts的action來使用這個jsp的,所以把這個新建的jsp放在WEB-INF目錄下:

新建一個文件夾存放jsp文件:

待續:(jsp界面沒運行出來,在找原因中)

 

 

一些總結:

  1.struts和servletAPI,strutsAPI沒有緊密的耦合,屬於無入侵式設計。

  2.提供了攔截器,利用攔截器可以進行面向切面編程(AOP),實現如權限攔截等功能。

  3.提供了類型轉換器,可以把特殊的請求參數轉換成需要的類型。

  4.提供多種表現層支持,eg:JSP,FreeMarker,Velocity.

  5.輸入校驗可以對指定的方法進行校驗。

  6.提供了全局范圍,包范圍,action范圍的global source file management.

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM