當前位置:首頁 » 網頁前端 » javaweb架構圖
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

javaweb架構圖

發布時間: 2022-12-29 15:28:34

1. JavaWeb核心框架的目錄

第1部分網頁開發技術
緒論JavaWeb分層設計與框架選型1
1.JavaWeb分層設計1
1.基本概念2.如何設計分層
3.JavaWeb分層設計:表現層、業務層、持久層
4.分層設計的優點
2.JavaWeb框架選型5
1.持久層框架:Hibernate、iBATIS
2.表現層框架:Struts1、Struts2
3.業務層框架:Spring
3.本書講解思路8
1.持久層2.表現層+持久層
3.業務層4.表現層+業務層+持久層
4.繼續下一課:准備篇10
第1部分准備篇
第1課構建Eclipse集成開發環境
1.1安裝JDK並進行配置和測試
1.1.1JDK的下載
1.1.2JDK的安裝
1.1.3設置環境變數
1.1.4測試Java環境
1.2安裝Tomcat並進行配置和測試
1.2.1Tomcat的下載
1.2.2Tomcat的安裝
1.2.3Tomcat的配置
1.2.4測試Tomcat
1.2.5配置一個站點並測試
1.3安裝Eclipse並進行配置
1.3.1Eclipse簡介
1.3.2Eclipse版本與代號
1.3.3Eclipse的下載
1.歷史下載頁面
2.專用下載頁面
3.默認下載頁面
1.3.4Eclipse的安裝
1.3.5Eclipse的啟動
1.3.6集成配置JDK
1.4使用Eclipse進行JavaWeb項目的開發-實例演示HelloWorld項目開發過程
1.4.1認識Eclipse工作區
1.4.2新建JavaWeb項目demo
1.4.3新建一個Java包test.hello
1.4.4新建一個Java類HelloWorld.java
1.4.5新建一個HTML頁面index.htm
1.4.6新建一個JSP頁面helloworld.jsp
1.4.7新建Tomcat伺服器集成配置
1.4.8運行項目查看結果
1.4.9Tomcat停止與重啟
1.4.10導出war部署包
1.4.11打包eclipse.zip
1.5本課小結
1.5.1總結本課的知識點
1.5.2要掌握的關鍵點
1.5.3繼續下一課:創建企業信息管理系統資料庫
第2課創建企業信息管理系統資料庫
2.1基本需求功能-登錄、退出與注冊
2.1.1基礎功能流程圖
2.1.2用戶登錄功能
2.1.3用戶退出功能
2.1.4用戶注冊功能
2.2業務需求功能-企業信息管理系統功能
2.2.1通訊錄管理模塊
2.2.2短消息管理模塊
2.2.3日程安排模塊
2.2.4工作記錄模塊
2.2.5公司公告模塊
2.2.6工作會議模塊
2.3設計頁面結構
2.3.1登錄界面
2.3.2登錄後的歡迎界面
2.3.3注冊界面
2.4設計資料庫
2.4.1資料庫需求分析
2.4.2設計數據表E-R圖
2.4.3設計數據表結構
2.5創建資料庫
2.5.1Mysql下載、安裝與啟動
1.下載MySQL2.安裝MySQL
3.MySQL的啟動與停止
4.MySQL服務的啟動與停止
2.5.2安裝MySQL客戶端軟體SQL-Front
2.5.3新建資料庫demo
2.5.4新建用戶表user
2.5.5添加一條用戶數據
2.5.6創建通訊錄管理表address
2.5.7創建短消息管理表sms
2.5.8創建日程安排表schele
2.5.9創建工作記錄表worklog
2.5.10創建公司公告表notice
2.5.11創建工作會議表meeting
2.5.12打包emis07(SQL+MySQL).zip
2.6本課小結
2.6.1總結本課的知識點
2.6.2要掌握的關鍵點
2.6.3繼續下一課:持久層框架Hibernate
第2部分持久層框架Hibernate
第3課Hibernate快速入門
3.1了解Hibernate基礎
3.1.1操作資料庫的3個階段
3.1.2ORM對象關系映射
3.1.3ORM持久層的概念
3.2Hibernate開發准備
3.2.1Hibernate開發流程
3.2.2Hibernate配置文件:properties和XML文件
3.2.3Hibernate下載與配置過程
3.2.4下載並添加MySQL驅動mysql-connector-java-5.0.8-bin.jar
3.3Hibernate快速上手-HibernateTest樣例
3.3.1添加Hibernate配置文件hibernate.cfg.xml
3.3.2編寫映射文件User.hbm.xml
3.3.3編寫持久化類User.java
3.3.4編寫輔助類HibernateSessionFactory.java
3.3.5編寫DAO類UserDAO.java
3.3.6編寫Service類UserService.java
3.3.7運行UserService.java查看結果
3.3.8打包HibernateTest.zip
3.4Hibernate自動生成工具
3.4.1自動生成工具MiddleGen
3.4.2Eclipse插件MiddleGenIDE
3.5本課小結
3.5.1總結本課的知識點
3.5.2要掌握的關鍵點
3.5.3課後上機作業
3.5.4繼續下一課:Hibernate核心技術
第4課Hibernate核心技術詳解
4.1Hibernate映射文件詳解
4.1.1根元素
4.1.2使用定義類
4.1.3使用定義主鍵
4.1.4使用設置主鍵生成方式
4.1.5Hibernate映射類型
4.1.6使用定義屬性
4.1.7使用配置多對一映射
4.1.8使用配置一對一映射
4.2Hibernate核心編程
4.2.1Hibernate核心類關系圖
4.2.2使用Configuration裝載配置
4.2.3使用SessionFactory創建Session
4.2.4使用Session操縱資料庫
4.2.5使用Transaction管理事務
4.3使用Query進行HQL語句查詢
4.3.1不帶參數的查詢
4.3.2帶參數的查詢
4.3.3取得List結果集
4.3.4取得迭代列表結果集
4.3.5取得一個對象
4.3.6標量查詢
4.3.7分頁查詢
4.3.8創建SQL查詢
4.4使用Criteria進行條件查詢
4.4.1創建Criteria實例
4.4.2添加查詢條件
4.4.3添加排序條件
4.4.4使用示例查詢
4.5本課小結
4.5.1總結本課的知識點
4.5.2要掌握的關鍵點
4.5.3繼續下一主題:Hibernate項目實戰-企業信息管理系統MySQL資料庫開發
第5課Hibernate項目實戰-企業信息管理系統MySQL資料庫開發
5.1導出映射文件和Domain層
5.1.1新建項目hibernatemysql
5.1.2使用MiddleGenIDE導出所有表的映射文件和Domain層
5.1.3修改導出文件
5.2開發用戶表user操作代碼
5.2.1開發DAO層代碼:UserDAO.java和UserDAOImpl.java
5.2.2開發Service層代碼:UserService.java和UserServiceImpl.java
5.2.3開發JUnit單元測試代碼:UserServiceTest.java
5.2.4運行單元測試類UserServiceTest.java
5.3開發通訊錄管理表address操作代碼
5.3.1開發分頁實體類Pager.java
5.3.2開發DAO代碼:AddressDAO.java和AddressDAOImpl.java
5.3.3開發Service代碼:AddressService.java和AddressServiceImpl.java
5.3.4開發單元測試代碼:AddressServiceTest.java
5.3.5運行單元測試類AddressServiceTest.java
5.4開發短消息管理表sms操作代碼
5.4.1開發DAO代碼:SmsDAO.java和SmsDAOImpl.java
5.4.2開發Service代碼:SmsService.java和SmsServiceImpl.java
5.4.3開發單元測試代碼:SmsServiceTest.java
5.4.4運行單元測試類SmsServiceTest.java
5.5開發日程安排表schele操作代碼
5.5.1開發DAO代碼:ScheleDAO.java和ScheleDAOImpl.java
5.5.2開發Service代碼:ScheleService.java和ScheleServiceImpl.java
5.5.3開發單元測試代碼:ScheleServiceTest.java
5.5.4運行單元測試類ScheleServiceTest.java
5.6開發工作日誌表worklog操作代碼
5.6.1開發DAO代碼:WorklogDAO.java和WorklogDAOImpl.java
5.6.2開發Service代碼:WorklogService.java和WorklogServiceImpl.java
5.6.3開發單元測試代碼:WorklogServiceTest.java
5.6.4運行單元測試類WorklogServiceTest.java
5.7開發公司公告表notice操作代碼
5.7.1開發DAO代碼:NoticeDAO.java和NoticeDAOImpl.java
5.7.2開發Service代碼:NoticeService.java和NoticeServiceImpl.java
5.7.3開發單元測試代碼:NoticeServiceTest.java
5.7.4運行單元測試類NoticeServiceTest.java
5.8開發工作會議表meeting操作代碼
5.8.1開發DAO代碼:MeetingDAO.java和MeetingDAOImpl.java
5.8.2開發Service代碼:MeetingService.java和MeetingServiceImpl.java
5.8.3開發單元測試代碼:MeetingServiceTest.java
5.8.4運行單元測試類MeetingServiceTest.java
5.9開發單元測試套件AllTest.java
5.1本課小結
5.10.1打包emis01(Hibernate+MySQL).zip
5.10.2繼續下一課:Hibernate項目實戰-企業信息管理系統Oracle資料庫開發
第6課Hibernate項目實戰-企業信息管理系統Oracle資料庫開發
6.1導出映射文件和Domain層
6.1.1新建項目hibernateoracle
6.1.2給數據表設置主鍵
6.1.3使用MiddleGenIDE導出所有表的映射文件和Domain層
6.1.4修改導出文件
6.2完成項目並運行
6.2.1添加DAO、Service和單元測試代碼
6.2.2運行測試套件類AllTest.java
6.3本課小結
6.3.1打包emis02(Hibernate+Oracle).zip
6.3.2繼續下一課:Hibernate項目實戰-企業信息管理系統SQLServer資料庫開發
第7課Hibernate項目實戰-企業信息管理系統SQLServer資料庫開發
7.1導出映射文件和Domain層
7.1.1新建項目hibernatesqlserver
7.1.2給數據表設置主鍵
7.1.3使用MiddleGenIDE導出所有表的映射文件和Domain層
7.1.4修改映射文件
7.2完成項目並運行
7.2.1添加DAO、Service和單元測試代碼
7.2.2運行測試套件類AllTest.java
7.3本課小結
7.3.1打包emis03(Hibernate+SQLServer).zip
7.3.2繼續下一課:持久層框架iBATIS
第3部分持久層框架iBATIS
第8課iBATIS快速入門
8.1了解iBATIS
8.1.1iBATIS簡介
8.1.2iBATIS開發步驟
8.1.3選擇Hibernate還是iBATIS
8.2iBATIS開發准備
8.2.1iBATIS下載與配置過程
8.2.2iBATIS配置文件sqlMapConfig.xml
8.2.3下載並添加MySQL驅動mysql-connector-java-5.0.8-bin.jar
8.3iBATIS快速上手-iBATISTest樣例
8.3.1添加iBATIS配置文件sqlMapConfig.xml
8.3.2編寫映射文件user_SqlMap.xml
8.3.3新建持久化類User.java
8.3.4編寫輔助類SqlMapClientFactory.java
8.3.5編寫DAO類UserDAO.java
8.3.6編寫Service類UserService.java
8.3.7運行UserService.java查看結果
8.3.8打包iBATISTest.zip
8.4本課小結
8.4.1總結本課的知識點
8.4.2要掌握的關鍵點
8.4.3課後上機作業
8.4.4繼續下一課:iBATIS核心技術詳解
第9課iBATIS核心技術詳解
第10課iBATLS代碼生成工具iBATLS
第11課iBATLS項目實戰——企業信息管理系統MySQL資料庫開發
第12課iBATLS項目實踐——企業信息管理系統Oracle資料庫開發
第13課iBATLS項目實踐——企業信息管理系統SQLServer資料庫開發
第4部分表現層框架Struts1+Hibernate/BATIS
第14課Struts快速入門
第15課Struts核心組件詳解
第16課Struts標簽庫詳解
第17課Struts應用國際化
第18課Struts數據校險
第19課Struts與SiteMesh集成
第20課Struts訪問資料庫
第21課Struts項目實戰——企業信息管理系統Struts1+Hibernate實現
第22課Struts項目實踐——企業信息管理系統Struts+iBATIS實現
第5部分表現層框架Struts2+Hibernate/iBATIS
第23課Struts2快速入門
第24課Struts2核心組件詳解
第25課Struts2標簽庫詳解
第26課Struts2應用國際化
第27課Struts2數據校驗
第28課Struts2數據轉換器
第29課Struts2攔截器
第30課Struts2項目實戰——企業信息
第31課Struts2項目實戰——企業信息管理系統Struts2+iBATIS實現
第6部分Spring快速入門
第32課Spring快速入門
第33課Spring用做IoC容器
第34課Spring用作MVC框架
第35課Spring標簽庫
第36課Spring應用國際化
第37課Spring數據校驗
第38課Spring資料庫開發技術
第7部分多層框架集成Struts1/Struts2+Spring+Hibernate/iBATIS
第39課SSH1項目實戰——企業信息管理系統Struts2+Spring+Hibernate
第40課SSI1項目實戰——企業信息管理系統Struts2+Spring+iBATIS
第41課SSH2項目實踐——企業信息管理系統Struts2+Spring+Hibernate
第42課SSH2項目實戰——企業信息管理系統Struts2+Spring+iBATIS
……

2. javaweb開發中三層架構的一個困惑

網上搜索的,不對我在找 :

java 三層架構ssh

一個spring2.5+hibernate3.2+struts2.0組合框架,使用spring的 IoC來管理應用的 所有bean,包括struts2的 action,充分發揮了spring輕量級框架的 優勢。

摘 要: 針對當前Web應用程序開發面臨的問題,結合目前比較流行的開源框架Spring、Struts和Hibernate,提出了一種開發J2EE Web應用的輕量級解決方案,以幫助開發人員在短期內搭建結構清晰、可復用性好、維護方便的Web應用程序。並且,通過案例具體說明了如何將這一方案應用到實際項目中。
關鍵詞: J2EE MVC Struts Spring Hibernate

大型企業級Web應用系統的開發通常要求有一個良好的軟體架構、便於協作開發和擴展升級,而傳統的開發模式不能很好地滿足這些要求。本文針對當前Web應用程序開發面臨的問題,結合目前比較流行的開源框架SSH(Spring、Struts、Hibernate),提出一種開發J2EE 企業級Web應用的輕量級解決方案,並通過案例具體說明如何將這一方案應用到實際項目中。
1 框架技術
著名的軟體大師Ralph Johnson對框架(Framework)進行了如下的定義: 框架是整個系統或系統的一部分的可重用設計,由一組抽象的類及其實例間的相互作用方式組成[1] 。
框架一般具有即插即用的可重用性、成熟的穩定性以及良好的團隊協作性。J2EE復雜的多層結構決定了大型的J2EE項目需要運用框架和設計模式來控制軟體質量。目前,市場上出現了一些商業的、開源的基於J2EE的應用框架,其中主流的框架技術有:基於MVC模式的Struts框架和基於IoC模式的 Spring框架以及對象/關系映射框架Hibernate等。
1.1 表示層框架Struts
Struts是一個在JSP Model2基礎上實現的MVC框架,主要分為模型(Model)、視圖(Viewer)和控制器(Controller)三部分,其主要的設計理念是通過控制器將表現邏輯和業務邏輯解耦,以提高系統的可維護性、可擴展性和可重用性[2] 。Struts框架的體系結構如圖1所示。

下面就圖1所示的體系結構圖分析Struts框架中的MVC組件。
(1)視圖:視圖部分主要由JSP頁面組成,其中沒有流程邏輯、業務邏輯和模型信息,只有標記。Struts自身包含了一組標記庫(TagLib),這也是Struts的精華之一,靈活運用它們可以簡化JSP頁面的代碼,提高開發效率。
(2)控制器:Struts中的Controller主要是其自身提供的ActionServlet。ActionServlet接收所有來自客戶端的請求並根據配置文件(struts-config.xml)中的定義將控制轉移到適當的Action對象。
(3)模型:Struts沒有定義具體Model層的實現,Model層通常是和業務邏輯緊密相關的,有持續化的要求。目前在商業領域和開源世界,都有一些優秀的工具可以為Model層的開發提供便利。
1.2 業務邏輯層框架Spring
Spring是一個解決了許多J2EE開發中常見問題並能夠替代EJB技術的強大的輕量級框架。這里所說的輕量級指的是 Spring框架本身,而不是指Spring只能用於輕量級的應用開發。Spring的輕盈體現在其框架本身的基礎結構以及對其他應用工具的支持和裝配能力。與EJB這種龐然大物相比,Spring可使程序研發人員把各個技術層次之間的風險降低。
Spring框架的核心是控制翻轉IoC(Inversion of Control)/依賴注入DI(Dependence Injection)機制。IoC是指由容器中控制組件之間的關系(這里,容器是指為組件提供特定服務和技術支持的一個標准化的運行時的環境)而非傳統實現中由程序代碼直接操控,這種將控制權由程序代碼到外部容器的轉移,稱為「翻轉」[3] 。DI是對IoC更形象的解釋,即由容器在運行期間動態地將依賴關系(如構造參數、構造對象或介面)注入到組件之中[3] 。 Spring採用設值注入(使用Setter方法實現依賴)和構造子注入(在構造方法中實現依賴)的機制,通過配置文件管理組建的協作對象,創建可以構造組件的IoC容器。這樣,不需要編寫工廠模式、單例模式或者其他構造的方法,就可以通過容器直接獲取所需的業務組件。Spring框架的結構如圖2所示。

Spring框架由七個定義明確的模塊組成,且每個模塊或組件都可以單獨存在,或者與其他一個或多個模塊聯合實現。Spring Core Container是一個用來管理業務組件的IoC容器,是Spring應用的核心;Spring DAO和Spring ORM不僅提供數據訪問的抽象模塊,還集成了對Hibernate、JDO和iBatis等流行的對象關系映射框架的支持模塊,並且提供了緩沖連接池、事務處理等重要的服務功能,保證了系統的性能和數據的完整性;Sprnig Web模塊提供了Web應用的一些抽象封裝,可以將Struts、Webwork等Web框架與Spring整合成為適用於自己的解決方案。
Spring框架可以成為企業級應用程序一站式的解決方案,同時它也是模塊化的框架,允許開發人員自由地挑選適合自己應用的模塊進行開發。Spring框架式是一個松耦合的框架,框架的部分耦合度被設計為最小,在各個層次上具體選用哪個框架取決於開發者的需要。
1.3 數據持久層框架Hibernate
O/R mapping技術是為了解決關系型資料庫和面向對象的程序設計之間不匹配的矛盾而產生的。Hibernate是目前最為流行的O/R mapping框架,它在關系型資料庫和Java對象之間做了一個自動映射,使得程序員可以以非常簡單的方式實現對資料庫的操作。Hibernate工作原理如圖3所示。

Hibernate通過對JDBC的封裝,向程序員屏蔽了底層的資料庫操作,使程序員專注於OO程序的開發,有助於提高開發效率。程序員訪問資料庫所需要做的就是為持久化對象編制xml映射文件[4] 。
底層資料庫的改變只需要簡單地更改初始化配置文件(hibernate.cfg.xml或者hibernate.properties)即可,不會對應用程序產生影響。
Hibernate有自己的面向對象的查詢語言HQL,HQL功能強大,支持目前大部分主流的資料庫,如Oracle、DB2、MySQL、 Microsoft SQL Server等,是目前應用最廣泛的O/R映射工具。Hibernate為快速開發應用程序提供了底層的支持。
2 基於SSH組合框架的Web應用模型設計與實現
2.1 集成SSH的新型J2EE框架
前面分析了基於J2EE的三種框架技術,下面通過集成以上三種框架技術來對傳統的J2EE Web開發模型加以改進,以形成一種新的、輕量型的J2EE架構。
集成SSH框架 的系統框架圖 如圖4所示,系統從職責上分為四層:表示層、業務邏輯層、數據持久層和域模塊層。其中使用Struts作為系統的整體基礎架構,負責MVC的分離,在 Struts框架的模型部分,利用Hibernate框架對持久層提供支持,業務層用Spring支持。具體做法是:用面向對象的分析方法根據需求提出一些模型,將這些模型實現為基本的Java對象,然後編寫基本的DAO介面,並給出Hibernate的DAO實現,採用Hibernate架構實現的 DAO類來實現Java類與資料庫之間的轉換和訪問,最後由Spring完成業務邏輯。

系統的基本業務流程是:在表示層中,首先通過JSP頁面實現交互界面,負責傳送請求(Request)和接收響應(Response),然後Struts根據配置文件 (struts-config.xml)將ActionServlet接收到的Request委派給相應的Action處理。在業務層中,管理服務組件的 Spring IoC容器負責向Action提供業務模型(Model)組件和該組件的協作對象數據處理(DAO)組件完成業務邏輯,並提供事務處理、緩沖池等容器組件以提升系統性能和保證數據的完整性。而在持久層中,則依賴於Hibernate的對象化映射和資料庫交互,處理DAO組件請求的數據,並返回處理結果。
採用上述開發模型,不僅實現了視圖、控制器與模型的徹底分離,而且還實現了業務邏輯層與持久層的分離。這樣無論前端如何變化,模型層只需很少的改動,並且資料庫的變化也不會對前端有所影響,大大提高了系統的可復用性。而且由於不同層之間耦合度小,有利於團隊成員並行工作,大大提高了開發效率。
2.2 基於SSH框架 的Web應用系統的實現
下面將通過一個實際的系統來展示如何進行基於SSH框架 的Web應用開發。該系統是為某通信公司運營部開發的一個問答式系統,功能類似於網路知道和新浪愛問。由於系統的模塊較多,下面就以一個用戶管理模塊為例來說明系統的開發實現過程,並將按照數據持久層、業務邏輯層、表示層的順序說明系統構建過程。
(1)數據持久層
數據持久層由Java對象持久化類和數據訪問對象(DAO)組成。每個資料庫表都對應著一個持久化對象,這樣就給予了開發者使用OO思想設計和開發的便利,同時也屏蔽了具體的資料庫和具體的數據表、欄位,消除了對資料庫操作的硬編碼在重用性上的弊端。用戶信息表的部分結構如表1所示。

Hibernate通過映射(Mapping)文件將對象(Object)與關系型數據(Relational)相關聯,因此需要編寫和資料庫表相對應的Java持久化類以及對應的映射文件。有了Java持久化類後就可以在此基礎上實現數據訪問類。在Spring框架中,數據訪問類可以從輔助類 HibernateDaoSupport繼承,這極大地方便了Hibernate框架在Spring中的使用,相應的部分代碼如下:
public class UserDao
extends HibernateDaoSupport {
public int add(User user) {
return Integer.ParseInt(this.getHibernateTemplate().save(user).toString());
}
public List findAll() {
return this.getHibernateTemplate().loadAll(User.class);
}
}
具體的Hibernate數據源、session工廠、事務管理、緩沖連接池等功能都由業務層的Spring容器提供。
(2)業務邏輯層
業務邏輯層由Spring框架支持,提供了處理業務邏輯的服務組件。開發者需要對業務對象建模,抽象出業務模型並封裝在Model組件中。由於數據持久層實現了Java持久化類並且封裝了數據訪問對象(DAO),因此可以在Model組件中方便地調用DAO組件來存取數據。Spring的IoC容器負責統一管理Model組件和DAO組件以及Spring所提供的事務處理、緩沖連接池等服務組件。
在用戶管理模塊中,通過業務建模創建了用戶模型UserService類,封裝了對用戶的許可權管理以及積分管理等功能。UserService類通過調用數據訪問類UserDao實現對用戶數據的操作。這些組件的關系將通過配置Spring框架的applicationContext.xml聯系起來,配置文件的主要內容如下:



(3)表示層
表示層結合JSP和Struts的TagLib庫處理顯示功能,利用ActionServlet將請求(*.do)映射到相應的Action,並由Action調用業務邏輯的服務組件,然後根據處理結果跳轉到Forword對象指定的響應頁面。
業務流程的部署由struts-config.xml完成。下面以一個顯示所有用戶信息的請求(ListUser.do)為例來說明配置文件的使用。


基於J2EE的Web應用以其層次性、平台無關性的優勢已經逐漸成為了電子商務、電子政務主要的解決方案。本文針對傳統的J2EE Web應用開發的弊端,提出了一種利用輕量級框架來快速搭建Web應用的解決方案,並且通過其在實際項目中的應用,證明了採用此方案可以幫助開發人員在短時間內建立結構清晰、可重用性好、維護擴展方便的Web應用程序。
參考文獻
[1] GAMMA E, HELM R, JOHNSON R, et al. Design patterns:Elements of reusable object-oriented software[M]. Addison Wesley, 1994.
[2] 孫衛琴.精通Struts:基於MVC的Java Web設計與開發[M]. 北京:電子工業出版社,2004.
[3] JOHNSON R, HOELLER J, ARENDSEN A, et al. Java/J2EE application framework reference document. V1.1.
2004.
[4] 徐長盛,戴超.一種快速開發Web應用程序方法的研究[J]. 計算機工程與設計,2004,(12):2237-2239.
[5] 夏昕,曹曉鋼,唐勇.深入淺出Hibernate[M]. 北京:電子工業出版社,2005.
[6] JOHNSON R.Expert one-on-one J2EE design and development[M]. 魏海萍譯.北京:電子工業出版社,2003.

在用ssh 開發web應用時,需要對生成的 各個類文件進行組織,下面就對一個可行的 目錄方案進行介紹:

譬如應用中有一個用戶管理模塊,則在公共包下建立一個user包,如該公共包可以為com.simon.oa,

在user包下包括如下子包

1、controler包

該包放置各種struts的 action。

2、包

該包放置各類(data access object),也就是放置對資料庫訪問的 實現類,在用myeclipse中的 「Hibernate Reverse Engineering」進行反向操作時在某一個目錄中就會生成對應某個表的 DAO,生成後可將該DAO拖到包中。在某些應用中將DAO作為介面,在該介面中包括所有對資料庫的 操作方法,然後在包建立一個hibernate包,在hibernate包中放置對DAO介面的 實現,譬如:UserDAO介面有一個實現類為UserDaoImpl,將該類放置到hibernate包中,實際的 開發傾向於後一種方式,因為對這個DAO介面可以實現spring的 IoC操作。(不知道myeclipse對此是怎麼考慮的 ,這個問題讓我糾纏了很久,誤將DAO理解成一個能夠進行實際操作的 類,而不是一個介面,以後開發要注意 )

3、model包

該包中放置hibernate反向工程生成的 bean和該bean對應的 .hbm.xml文件。

4、service包

該包放置業務操作類,譬如用戶服務類,一般情況將該用戶操作類提取一個介面,然後在service包下生成一個impl包,在impl包中才放置用戶操作介面的 實現類。該用戶介面實現類中調用DAO介面對資料庫進行操作,而調用該實現類的 方法在struts的 action中。

5、vo包(value object)

vo包中的 中包括struts中使用的 POJO及actionform等信息。

VO: Value Object
DTO: Data Transfer Object
個人理解VO和DTO是類似的 東西,原則上VO和DTO只有Public Fields,主要用於進程之間數據傳遞的 問題,VO和DTO不會傳遞到表示層,在業務層就會被吸收。但看到很多人在建立VO和DTO時,也含有Setter,Getter屬性和一些其它的 輔助方法,這也無可厚非,我自己也不能確定這對不對。

3. 有哪些Java web里的並發框架,都有哪些

一、並發是一種需求,以下先介紹一下javaweb對於高並發的處理思路:

1、synchronized 關鍵字

可用來給對象和方法或者代碼塊加鎖,當它鎖定一個方法或者一個代碼塊的時候,同一時刻最多隻有一個線程執行這段代碼。可能鎖對象包括: this, 臨界資源對象,Class 類對象

2、同步方法

同步方法鎖定的是當前對象。當多線程通過同一個對象引用多次調用當前同步方法時, 需同步執行。

3、同步代碼塊

同步代碼塊的同步粒度更加細致,是商業開發中推薦的編程方式。可以定位到具體的同步位置,而不是簡單的將方法整體實現同步邏輯。在效率上,相對更高。

A)鎖定臨界對象

同步代碼塊在執行時,是鎖定 object 對象。當多個線程調用同一個方法時,鎖定對象不變的情況下,需同步執行。

B)鎖定當前對象

4、鎖的底層實現

Java 虛擬機中的同步(Synchronization)基於進入和退出管程(Monitor)對象實現。同步方法 並不是由 monitor enter 和 monitor exit 指令來實現同步的,而是由方法調用指令讀取運行時常量池中方法的 ACC_SYNCHRONIZED 標志來隱式實現的。

5、鎖的種類

Java 中鎖的種類大致分為偏向鎖,自旋鎖,輕量級鎖,重量級鎖。

鎖的使用方式為:先提供偏向鎖,如果不滿足的時候,升級為輕量級鎖,再不滿足,升級為重量級鎖。自旋鎖是一個過渡的鎖狀態,不是一種實際的鎖類型。

鎖只能升級,不能降級。

6、volatile 關鍵字

變數的線程可見性。在 CPU 計算過程中,會將計算過程需要的數據載入到 CPU 計算緩存中,當 CPU 計算中斷時,有可能刷新緩存,重新讀取內存中的數據。在線程運行的過程中,如果某變數被其他線程修改,可能造成數據不一致的情況,從而導致結果錯誤。而 volatile 修飾的變數是線程可見的,當 JVM 解釋 volatile 修飾的變數時,會通知 CPU,在計算過程中, 每次使用變數參與計算時,都會檢查內存中的數據是否發生變化,而不是一直使用 CPU 緩存中的數據,可以保證計算結果的正確。

更多、此外還有很多細節需要通過學習去了解和完善,此處就不一一列舉了。

二、並發框架

並發框架很多,如ExecutorService、RxJava、Disruptor、Akka等,具體選擇哪個(或者都不選擇)是根據項目需求選擇的,框架本身的差異並不大,基本都是如下模式

4. 常用的Java Web框架簡介

Web框架是人們在使用某種語言編寫Web應用服務端時關於架構的最佳實踐

有些Web框架是從實際的Web項目抽取出來的 也就是說 做一個具體的應用項目時 採取的架構比較理想 就把這部分和領域無關 而僅和Web的請求和響應處理有關的設計拿出來 形成一個基礎 在開發別的應用項目的時候則可以從這基礎做起 讓開發者更關注領域問題 而不是Web的請求和響應的控制

也有些Web框架是直接設計出來的 很多Web框架在設計的時候也都借鑒了別的框架 吸取優點 修改不足 並根據自己的框架的定位 在特定方面有自己的發揮 形成了自己的特點 比如有的web框架追求的是松耦合性 層次 結構之間都不密切綁定 有的Web框架則追求敏捷性 強調約定而不是配置

Java 的 Web框架雖然各不相同 但基本也都是遵循特定的路數的 使用Servlet或者Filter攔截請求 使用MVC的思想設計架構 使用約定 XML或 Annotation實現配置 運用Java面向對象的特點 面向抽象實現請求和響應的流程 支持Jsp Freemarker Velocity等視圖

JSF

優點

Java EE標准 這意味著有很大的市場需求和更多的工作機會

上手快速並且相對容易

有大量可用的組件庫

缺點

大量的JSP標簽

對REST和安全支持不好

沒有一個統一的實現 既有SUN的實現 又有Apache的實現——MyFaces

國內的OperaMasks還支持AJAX 以及有開發工具 支持

Spring MVC

優點

對覆蓋綁定(overriding binding) 驗證(validation)等提供生命周期管理

與許多表示層技術/框架無縫集成 JSP/JSTL Tiles Velocity FreeMarker Excel XSL PDF 等

便於測試——歸功於IoC

缺點

大量的XML配置文件

太過靈活——沒有公共的父控制器

沒有內置的Ajax支持

Stripes

優點

不需要書寫XML配置文件

良好的學習文檔

社區成員很熱心

缺點

社區比較小

不如其他的項目活躍

ActionBean裡面的URL是硬編碼的

Struts

優點

架構簡單——易於擴展

標記庫很容易利用FreeMarker或者Velocity來定製

基於控制器或者基於頁面的導航

缺點

文檔組織得很差

對新特徵過分關注

通過Google搜索到的大多是Struts x的文檔

Tapestry

優點

一旦學會它 將極大地提高生產率

HTML模板——對頁面設計師非常有利

每出一個新版本 都會有大量的創新

缺點

文檔過於概念性 不夠實用

學習曲線陡峭

發行周期長——每年都有較大的升級

Wicket

優點

對Java開發者有利(不是Web開發者)

頁面和顯示綁定緊密

社區活躍——有來自創建者的支持

缺點

HTML模板和Java代碼緊挨著

需要對OO有較好的理解

Wicket邏輯——什麼都用Java搞定

在Java的Web框架中 我使用過Struts Struts 試用過Stripes Wicket 了解過JSF SpringMVC 以我使用的經驗 我覺得看一個Java Web框架應看看下面幾個方面

設計理念

一個框架設計出來應該有一個基本的思路 它為什麼要要被設計出來?有的框架的目標 就是提高效率 有的框架的目標的給用戶充分的選擇 有的框架的目標是充分了解實際需求 給用戶一個盡量合理的默認選擇 有的框架是要給使用者開發桌面程序的感覺 應該說 一個好的框架應該是實現了預期目標 體現出了自己的設計理念的

設計的合理性

設計的合理性表現在框架在一些關鍵問題上的處理 比如靈活性和敏捷性之間的權衡 硬編碼和文本配置之間的權衡 靈活性指的是可以適應用戶多樣的需求 很特殊的要求也能得到支持 有的框架的實現基於太多的約定 使得用戶只能遵循 而敏捷性指的是用戶在解決絕大多數常規問題的時候 能盡量少做工作 提高效率 框架設計者只能在這兩者見達到一個平衡點 權衡的怎麼樣 就很見水平了 硬編碼和文本配置之間的權衡也很有意思 文本配置的意義在於Java是一個編譯語言 強調代碼的封閉 講究擴展而不是修改 這種情況下文本配置信息可以很方便的在不修改程序的情況下改變程序行為 但是隨著一些靈活的腳本語言實現的 Web框架的出現 人們發現在這樣的框架中 腳本語言即做程序編碼語言 也做配置語言 還做視圖上的標記語言 這使我們對Java實現的框架有了一番新的審視 既然配置文件並沒有消除對程序的修改 為什麼不能在應編碼上下下功夫呢?

設計的平衡性

設計的平衡性指的是 框架在設計流程中各階段 各層次的實現方式時 所達到的上述權衡(靈活性和敏捷性之間的權衡等)應該是具有一致的水平 一個在控制上過分靈活 而視圖上具有非常大限制的框架是不能算做一個好的框架的

框架真的解放了開發者嗎

框架的目的是讓開發者把更多的精力放在領域問題 而非Web的請求和響應的處理問題上 而事實上框架都做到這一點了嗎?不可否認 框架的使用提高代碼的可維護性 但是框架在解放開發者這點上就未必了 有時還給開發者帶來了額外的負擔 事實上 直接使用Servlet 只要維持好代碼風格 一樣可以很有效率 當然 直接使用Servlet的靈活性就不用說了

在我接觸的Web框架中 我最推崇的是Struts 設計優雅 偏重靈活 也基本不造成額外的負擔 當然這些評價是和我參與的項目的規模有關的 其他規模的項目Struts 就未必合適了 我希望Struts 能在下面幾個方面有些改善

在提供文本配置方式的基礎上給一個約定配置的方式 讓開發者在大多數情況下可以不配置

配置也支持硬編碼 因為有時候維護可修改的硬編碼是很有效率的

lishixin/Article/program/Java/hx/201311/26313

5. Java Web 開發時的 MVC 模型和軟體的3層架構(表現層,業務邏輯層,數據訪問層)有哪些區別和聯系

三層架構和MVC是有明顯區別的,MVC應該是展現模式(三個加起來以後才是三層架構中的UI層)
三層架構(3-tier application) 通常意義上的三層架構就是將整個業務應用劃分為:表現層(UI)、業務邏輯層(BLL)、數據訪問層(DAL)。區分層次的目的即為了「高內聚,低耦合」的思想。
1、表現層(UI):通俗講就是展現給用戶的界面,即用戶在使用一個系統的時候他的所見所得。
2、業務邏輯層(BLL):針對具體問題的操作,也可以說是對數據層的操作,對數據業務邏輯處理。
3、數據訪問層(DAL):該層所做事務直接操作資料庫,針對數據的增添、刪除、修改、更新、查找等。

MVC是 Model-View-Controller,嚴格說這三個加起來以後才是三層架構中的UI層,也就是說,MVC把三層架構中的UI層再度進行了分化,分成了控制器、視圖、實體三個部分,控制器完成頁面邏輯,通過實體來與界面層完成通話;而C層直接與三層中的BLL進行對話。

6. java web現在流行用什麼框架

主流 Java Web 開發框架有Spring 框架、MyBatis 框架、 Hibernate 框架、 Struts 2 框架等。

1、Spring 框架

Spring 框架是一個輕量級的框架,滲透了 Java EE 技術的方方面面。Spring 框架是由於軟體開發的復雜性而創建的,是一個開源框架。Spring 框架的用途不僅限於伺服器端的開發,從簡單性、可測試性和松耦合性角度而言,絕大部分 Java 應用都可以從 Spring 框架中受益。

2、MyBatis 框架

MyBatis 框架是一個優秀的數據持久層框架,可在實體類和 SQL 語句之間建立映射關系,是一種半自動化的 ORM 實現。Mybatis 的封裝性要低於 Hibernate 框架,且性能優異、簡單易學,因此應用較為廣泛。

3、Hibernate 框架

Hibernate 框架不僅是一個優秀的持久化框架,也是一個開放源代碼的對象關系映射框架。它對 JDBC 進行了輕量級的對象封裝,將 POJO 與資料庫表建立映射關系,形成一個全自動的 ORM 框架。Hibernate 框架可以自動生成 SQL 語句,且自動執行。

4、Struts 2 框架

Struts 2 框架以 WebWork 的優秀設計思想為核心,吸收 Struts 框架的部分優點,提供了一個更加簡潔的基於 MVC 設計模式實現的 Web 應用程序框架,它本質上相當於一個 Servlet。在 MVC 設計模式中,Struts 2 框架作為控制器(Controller)來建立模型與視圖的數據交互。

(6)javaweb架構圖擴展閱讀:

Java Web 開發框架應用要點:

搭建Java Web應用的開發環境-----部署Tomcat伺服器、用eclipse創建Server服務、構建Java Web項目、建立第一個JSP文件、 運行JSP文件。

第一個要點是掌握tomcat的安裝和部署。在Windows系統上安裝Tomcat相對簡單,下載壓縮包解壓縮到任意目錄即可(目錄名稱不要含有中文字元)。進入tomcat的bin目錄,可以直接運行startup.bat啟動tomcat服務。

第二個要點是在eclipse中添加Server服務。把tomcat與eclipse進行關聯,方便eclipse管理tomcat。

第三個要點是構建Java Web項目。Web項目開發的第一步就是要建立項目。在新建Project項目時,選擇Dynamic Web Project項目類型,即可創建Web項目。

第四個要點是建立的項目如何在Server中運行。選擇要運行的JSP文件,單擊右鍵,在彈出的菜單中選擇Run on Server命令即可,初次運行項目時,需要配置項目在哪個Server中運行(如有多個Server)。

7. 現在java web主要用什麼框架

三大框架:Struts+Hibernate+Spring
Java三大框架主要用來做WEN應用。
Struts主要負責表示層的顯示
Spring利用它的IOC和AOP來處理控制業務(負責對資料庫的操作)
Hibernate主要是數據持久化到資料庫
再用jsp的servlet做網頁開發的時候有個 web.xml的映射文件,裡面有一個mapping的標簽就是用來做文件映射的。當你在瀏覽器上輸入URL得知的時候,文件就會根據你寫的名稱對應到一 個JAVA文件,根據java文件里編寫的內容顯示在瀏覽器上,就是一個網頁。
一 .Struts框架:struts是開源軟體。使用Struts的目的是為了幫助我們減少在運用MVC設計模型來開發Web應用的時間。如果我們想混合使用Servlets和JSP的優點來建立可擴展的應用,struts是一個不錯的選擇。
1.流程:伺服器啟動後,根據web.xml載入ActionServlet讀取struts-config.xml文件內容到內存。
2.架構:Struts對Model,View和Controller都提供了對應的組件。ActionServlet,這個類是Struts的核心控制器,負責攔截來自用戶的請求。
Model部分:由JavaBean組 成,ActionForm用於封裝用戶的請求參數,封裝成ActionForm對象,該對象被ActionServlet轉發給 Action,Action根據ActionFrom裡面的請求參數處理用戶的請求。JavaBean則封裝了底層的業務邏輯,包括資料庫訪問等。
View部分:該部分採用JSP實現。Struts提供了豐富的標簽庫,通過標簽庫可以減少腳本的使用,自定義的標簽庫可以實現與Model的有效交互,並增加了現實功能。對應上圖的JSP部分。
Controller組件:Controller組件有兩個部分組成——系統核心 控制器,業務邏輯控制器。 系統核心控制器,對應上圖的ActionServlet。該控制器由Struts框架提供,繼承HttpServlet 類,因此可以配置成標注的Servlet。該控制器負責攔截所有的HTTP請求,然後根據用戶請求決定是否要轉給業務邏輯控制器。業務邏輯控制器,負責處 理用戶請求,本身不具備處理能力,而是調用Model來完成處理。對應Action部分。
二.Spring框架
Spring是一個解決了許多在J2EE開發中常見的的問題的強大框架。 Springle提供了管理業務對象的一致方法並且鼓勵了注入對介面編程而不是對類變成的好習慣。Spring的架構基礎是基於使用JavaBean屬性 的Inversion of Control 容器。然而Spring在使用IoC容器作為構建玩關注所有架構層層的完整解決方案方面是獨一無二的。Spring提供了唯一的數據管理 抽象包括簡單和有效率的JDBC框架,極大的改進了效率並且減少了可能的錯誤。Spring的數據訪問架構還集成了Hibernate和其他O/R mapping 解決方案。
三.Hibernate框架
Hibernate 是一個開源代碼的對象關系映射框架,對JDBC驚醒了費城輕量級的 的對象封裝,使得Java程序員可以隨心所欲的使用對象變成思維來操作資料庫。Hebernate可以應用在任何使用JDBC的場合,既可以在java的 客戶端程序使用,也可以在Servlet/JSP的Web應用中使用最具革命意義的事,Hibernate可以在應用EJB的J2EE架構中取代CMP, 完成數據持久化的重任
Hibernate的核心介面一共有5個,分別為:Session、 SessionFactory、Transaction、Query和Configuration。這5個核心介面在任何開發中都會用到。通過這些介面, 不僅可以對持久化對象進行存取,還能夠進行事務控制。下面對這五個核心介面分別加以介紹。
1.Session介面:負責執行被持久化對象的CRUD操作(CRUD的任務是完成與 資料庫的交流,包含了很多常見的SQL語句。)。但需要注意的是Session對象是非線程安全的。同時,Hibernate的session不同於 JSP應用中的HttpSession。這里當使用session這個術語時,其實指的是Hibernate中的session,而以後會將 HttpSession對象稱為用戶session。
2.SessionFactory介面:負責初始化Hibernate。它充當數據存儲 源的代理,並負責創建Session對象。這里用到了工廠模式。需要注意的是SessionFactory並不是輕量級的,因為一般情況下,一個項目通常 只需要一個SessionFactory就夠,當需要操作多個資料庫時,可以為每個資料庫指定一個SessionFactory。
3.Configuration介面:負責配置並啟動Hibernate,創建SessionFactory對象。在Hibernate的啟動的過程中,Configuration類的實例首先定位映射文檔位置、讀取配置,然後創建SessionFactory對象。
4.Transaction介面:負責事務相關的操作。它是可選的,開發人員也可以設計編寫自己的底層事務處理代碼。
5.Query和Criteria介面:負責執行各種資料庫查詢。它可以使用HQL語言或SQL語句兩種表達方式。

8. JavaWeb學習路線

JavaWeb核心框架

  1. 持久層框架:Hibernate、iBATIS

  2. 表現層框架:Struts1、Struts2

  3. 業務層框架:Spring

  4. java學習路線圖:

    1、Hibernate:ORM

    Hibernate是一個Java ORM開發框架

    ORM是Object Relation Mapping的縮寫,顧名思義,即對象關系映射。

    ORM是一種以面向對象的方式來進行資料庫操作的技術。Web開發中常用的語言,都會有對應的ORM框架。而Hibernate就是Java開發中一種常用ORM框架,另一個現在流行的ORM框架是Mybatis。

    為什麼需要ORM框架?

    簡單地理解,通過Java進行資料庫訪問的正常流程可以分為以下幾步:

    准備好SQL語句

    調用JDBC的API傳入SQL語句,設置參數

    解析JDBC返回的結果

    這個過程實際上非常麻煩,比如:

    在Java代碼中拼接SQL非常麻煩,而且易於出錯

    JDBC的代碼調用有很多重復性的代碼

    從JDBC返回的結果轉換成領域模型的Java對象很繁瑣

    而使用ORM框架,則可以讓我們用面向對象的方式來操作資料庫,比如通過一個簡單的函數調用就完成上面整個流程,直接返回映射為Java對象的結果。這個流程中很大一部分工作其實可以交給ORM自動化地幫我們執行。對,類似MVC框架,ORM框架會幫你處理好相關的繁瑣事情!

    2. Struts:MVC

    Struts是一個Java Web MVC開發框架。MVC早在1978年就作為Smalltalk的一種設計模式被提出來了,引用到Web應用中來時:

    模型Model用於封裝與業務邏輯相關的數據和數據處理方法

    視圖View是數據的HTML展現

    控制器Controller負責響應請求,協調Model和View

    Model,View和Controller的分開,是一種典型的關注點分離的思想,不僅使得代碼復用性和組織性更好,使得Web應用的配置性和靈活性更好。

    MVC開發模式下,Java Web開發會遇到URL路由、模板渲染、表單綁定/提交/驗證、Session封裝、許可權驗證、國際化等一系列通用的問題,而MVC框架會將這些通用問題都封裝進框架中,你在應用中根據自己的場景進行簡單的配置和編碼即可,MVC框架就能幫你處理好一切,可以極大地簡化代碼。

    3.Spring:DI/AOP

    Spring對應的關鍵詞是DI(依賴注入)與AOP(面向切面編程),可以認為是一個以DI和AOP為核心Java Web一站式的集成(粘合)框架。

    其中DI也稱為IoC(控制發轉)用於管理Java對象之間的依賴關系(一定要說DI是IoC實現方式的童鞋們見評論區),AOP用於解耦業務代碼和公共服務代碼(如日誌,安全,事務等)。DI和AOP能夠讓代碼更加簡單,具有良好的松耦合特性和可測試性,極大地簡化開發。理解這兩者是使用Spring框架的基礎。

    Spring框架對Java企業應用開發中的各類通用問題都進行了良好的抽象,因此也能夠把應用各個層次所涉及的特定的功能和開發框架(如接下來要說的MVC框架、ORM框架)方便得組合到一起(這也得益於依賴注入和面向切面編程帶來的強大功能)。Spring是一個極其優秀的一站式的Full-Stack集成框架,因此基於Spring核心,對Java應用開發中的各類通用問題幾乎都提供了針對性的開發框架,比如你耳熟能詳(如果你對這個問題感興趣的話)的Spring MVC,Spring Data。

    Java曾經有另外一個類似的一站式框架粘合框架Seam,這是Hibernate的作者、脾氣火爆的大神Gavin King的作品,核心是基於依賴注入來黏合JSF和EJB,不過推出時Spring已經大殺四方,Seam基本已經退出歷史舞台了。記得Seam提過一個我認為很不錯的概念:「雙向注入」,類似現在前端框架中的雙向綁定,當時來說還是很超前的。

9. 怎麼查看javaweb項目的框架

SSH是 spring+struts+hibernate框架集成,SSM是Spring+SpringMVC+MyBatis框架集成。從你的截圖來看,spring框架和struts框架是用上了,但是截圖沒有展示你的層用的是MyBatis還是hibernate,如果是hibernate的話,那這個就是標準的ssh框架了。如果不是,那這個項目就是spring+struts+MyBatis了,也不能稱之為ssm框架,就叫spring+struts+MyBatis,注意區別

10. 現代Java Web開發架構分析

在本文中 我將集中討論現代的Java開發框架 分析它們的特徵和各自的使用優點 另外 我還想比較目前流行的生產質量框架 例如Struts Spring和Hibernate 並詳細討論其基本相似性及有關基本概念

我將簡短分析被用於支持這些框架的企業開發環境或工具箱 例如Borland JBuilder Eclipse以及BEA Workbench 請記住 市場上有許多有關這些開發框架的圖書;然而 在任何一篇文章中 要對它們進行深入描述是不可能的 不過 我將盡力討論最廣泛地使用的概念

共同點

幾乎所有現代的網路開發框架都遵循了模型 視圖 控制(MVC)設計模式 商業邏輯和描述被分開 由一個邏輯流控制器來協調來自客戶端的請求和伺服器上將採取的行動 這條途徑成為了網路開發的事實上的標准 每個框架的內在的機制當然是不同的 但是開發者們使用來設計和實現他們的Web應用軟體的API是很類似的 差別還存在於每個框架提供的擴展方面 例如標簽庫 JavaServer Faces或JavaBean包裝器等

所有的框架使用不同的技術來協調在Web應用程序之內的導航 例如XML配製文件 java屬性文件或定製屬性 所有的框架在控制器模塊實現的方法方面也存在明顯的不同 例如 EJB可能實例化在每個請求中需要的類或使用Java反射動態地調用一個適當的行動(Action)類 另外 不同框架在各自引入的概念上也有所不同 例如 一個框架可能定義用戶請求和反應(以及錯誤)場所 而另外一個框架可能僅僅定義一個完整的流 從一個請求到多個響答和隨後的再請求……

各種Java框架在它們組織數據流的方法方面是很類似的 在請求發出後 在應用程序伺服器上產生一些行動;而作為響應 一些可能包含對象集的數據總是被發送到JSP層 然後 從那些對象 可能是有setter和getter方法的簡單類 javabeans 值對象 或者一些集合對象 中提取數據 現代的Java框架還想方設法簡化開發者的開發任務 如通過使用簡易的API 資料庫連接池 甚至資料庫調用包等提供自動化的追蹤方式來實現 一些框架或者能夠鉤進(hooked into)另外的J EE技術中 例如JMS(Java消息服務)或JMX 或把這些技術集成到一起 伺服器數據持續性和日誌也有可能成為框架的一部分

企業開發環境

一些框架在Web開發者社區和企業發展領域變得相當流行 隨著這些框架的日漸成熟並開始發行穩定的版本 商業的IDE(集成發展環境)開始為這些框架提供支持並把他們納入到自己的產品中 一些IDE甚至基於框架的概念開發出整個的產品 例如 BEA WebLogic Workshop就是基於Struts框架建立起來的

Borland Jbuilder為Struts提供了內建的支持 也支持JSF和JSTL

Eclipse平台已成為一個很流行的開發工具 部分因為它是基於插件的 部分因為它對於Web框架的支持 現在 出現了眾多的Eclipse插件 甚至完整的基於Eclipse的IDE 許多插件被設計適合於Struts框架開發 例如MyEclipse()或M

大多數IDE都具有圖形化的流程和可視化對象(類代理) 例如 下面是一個JBuilder的行動(Action)設計器 用於規劃Web應用程序的頁面順序

WebLogic Workshop引入Java頁面流程技術 它擴展了Struts框架而提供了一個簡化的開發模型並增加了另外一些特性 Workshop使用頁面流(Page Flows) 實現輕易地把用戶介面與導航和商業邏輯分離開來 頁面流由JSP頁組成 這些頁麵包含用戶介面元素和一個控制器文件(JPF) 它包含由用戶提供的數據將怎樣被處理的指令以及下一步什麼頁面將被返回到用戶的信息 頁面流動提供給開發者一個可視化的Web應用程序總體輪廓 它讓開發者能夠看到直觀地分析不同的JSP頁彼此相關聯 並實現Web應用程序整體結構的快速建立

MyEclipse提供類似的特徵 並帶有更多吸引人的代價標簽

Apache Struts框架

Struts框架是一開源產品 基於模型 視圖 控制器(MVC)設計範例來開發Web應用軟體 它使用並且擴展了Java Servlet API 最初由Craig McClanahan創建 在 年 月 它被捐贈到Apache Foundation Struts框架展示了一個強有力的定製標簽庫 平鋪顯示 表單檢驗和I N(國際化) 另外 Struts支持許多描述層 包括JSP XML/XSLT JavaServerFaces(JSF)和Velocity;還支持一些模型層 包括JavaBeans和EJB

Spring框架

Spring框架是一個分層的Java/J EE應用程序框架 基於Expert One on One J EE設計和發行的代碼 Spring框架提供一種簡單的開發技術 用於自動化處理工程中大量的屬性文件和助理類

Spring框架包括的主要特色有:

強有力的基於JavaBeans的配置管理 使用Inversion of Control(IoC)原則 一個核心bean工廠 可用在任何環境 從applets到J EE容器程序 通用的抽象層適合於資料庫事務管理 允許可插入的事務管理器 並且不需要處理低層次的問題就可容易地劃分各事務的界限 一個很有意義的異常處理的JDBC抽象層 與Hibernate集成到一起 DAO實現支持以及事務策略

Hibernate框架

Hibernate是一適合於Java語言的對象 關系映射(ORM)解決方案 它也是開源軟體 類似Struts 並且在LGPL保護下發布 Hibernate被一群來自世界各地的Java軟體開發者所共同開發 它提供一個易用的框架來實現把一個面向對象的域模型映射到一傳統的關系資料庫 它不僅負責從Java類到資料庫表格(以及來自Java數據類型的SQL數據類型)的映射 而且還提供數據查詢和檢索能力 並能大大減少花在SQL和JDBC手工數據處理上的開發時間

Hibernate的目標是減輕開發者的與大量普通的數據持續性相聯系的編程任務 Hibernate還能夠適應開發進程 無論它是剛開始設計還是來自一現成的資料庫 Hibernate可以自動生成SQL 使開發者擺脫了手工處理結果集和進行對象轉化的繁瑣任務 並能使應用程序移植到所有的SQL資料庫 它還能提供透明的持續性 對持續性類的唯一的要求的是實現一個無參數的構造器

這個框架典型地使用在JavaSwing應用軟體 基於Servlet的Java應用軟體和使用EJBsession beans的J EE應用軟體中

結論

lishixin/Article/program/Java/hx/201311/26488