第一篇:java畢業(yè)論文-免費
編號
武漢軟件工程職業(yè)學院
免費的
畢 業(yè) 論 文
學生姓名 _______ _ 學
號 ___________
專
業(yè) ____ 班
級 ____ 指導教師
200 年 月
1.Java語言的出現(xiàn)
自從1946年世界上第一臺電子計算機問世以來,計算模式的發(fā)展經歷了三個階段:集中計算模式、分散計算模式和網絡計算模式。Internet的出現(xiàn),為在網絡計算模式下的科學計算和信息處理提供了良好平臺。然而,要充分利用網絡計算模式的功能與效益,平臺的運行環(huán)境是個制約因素,而Java語言和Java技術則是解決這一問題的最佳途徑。1991年,SUN公司的Jame Gosling,Bill Joe等人試圖為電視、烤箱等家用電器開發(fā)一種交互式的軟件系統(tǒng),這種應用需要的是那種小而可靠的系統(tǒng),它能夠移植,并且實時性好,適用于網絡分布環(huán)境。流行的C++是自然的選擇。不過,開發(fā)過程中遇到的許多難以克服的困難使他們意識到必須徹底解決問題了,最終,開發(fā)成功了一個名為Oak的軟件,此中蘊藏著Java的原型,當時,并未引起人們的注意。1994年下半年,隨著Internet的迅猛發(fā)展,環(huán)球信息網004km.cn、Motorola等公司均是Sun的堅強同盟。
在我國,Java的引進與開發(fā)起步早,發(fā)展水平基本與世界同步。目前,Sun公司已在中國建成了由5個授權中心、20多個Internet/Intarnet Java解決方案中心和10所Java大學、若干培訓中心組成的三級結構。全面推動Java在中國的普及、應用、研究、開發(fā),培養(yǎng)了數(shù)以十萬計的Java開發(fā)人員。此外,Sun還牽頭成立了中外軟件廠商的開發(fā)聯(lián)盟。
在中國,Java的開發(fā)可以說是“人才濟濟,成果累累”。如清華大學王克宏教授帶領的課題組面向全國,自96年開始舉辦了多期Java培訓班和講座,開設了數(shù)期本科生、研究生Java課程,出版了“Java系列叢書”10余冊,承擔了國家“九五”攻關項目“基于Java技術的交互式遠程教學系統(tǒng)”,并與日本就Java開發(fā)進行了國際合作,成績斐然;東大阿派下屬的寶鋼東軟軟件技術研究中心是國內是首屈一指的Java研發(fā)骨干企業(yè),該中心從95年起就開始了Java的研發(fā),目前,已掌握了Personal Java的核心移植技術,并成功地將JVM移植到汽車導航平臺。此外,他們還開發(fā)出支持Jini協(xié)議的即插即用網絡打印機軟件,以及一套Jini信息家電網絡的可視化演示環(huán)境,完成了基于JavaBeans的組件化軟件開發(fā)及運行支持環(huán)境等多項成果;在臺灣,22家知名計算機公司成立了“Java聯(lián)盟”,并在臺北建立了“Java開發(fā)中心”,新竹建立了“Java語言實驗室”;在香港,舉行了全島Java杯比賽,掀起了學習Java的熱潮。Java的浪潮洶涌澎湃,席卷全球!
4.Java技術
Java發(fā)展至今日,已不僅僅是一種編程語言,實際上已形成了一門技術.其內容包括: 1)Java軟件包
Java語言及其編程技術、JavaOS、Java開發(fā)環(huán)境與工具、Java語言的各種軟件包、數(shù)據庫接口JDBC等。2)Java虛擬機及其規(guī)范 3)Java嵌入技術(Java芯片)
已推出的有Java戒指、Java卡等。1999年8月2日,Sun公司宣布名為MAJC的專門為Java語言設計的的芯片優(yōu)化研制成功,欲與Intel試比高低。該芯片在設計時采用了模塊式高性能計算引擎,實質為一種芯片級并行處理機,能以更有效的方式分解計算任務,特別適合處理多媒體數(shù)據。Sun公司希望通過MAJC芯片的發(fā)布催生出一個基于Java語言的微處理器家族,與Intel公司競爭。設想中的Java處理器將應用在從低價消費電子產品到高端因特網服務器領域。4)Java計算
基于Java技術的企業(yè)Internet/Intranet信息系統(tǒng)以及其他應用系統(tǒng)。5)Jini技術
1999年初正式發(fā)布后,立刻得到業(yè)界的廣泛支持。Jini的出現(xiàn)為Java網絡連接提供了公共標準,使得任何Java設備都可以連入網絡中被自動識別,并可充分利用網絡上已有的各種資源。它把網絡上的各類設備(包括消費類電子設備如移動電話、PDA、DTV、HPC、NC、游戲機、電冰箱、智能卡等等)和各種軟件組合成一個單
一、動態(tài)的分布式系統(tǒng),使網絡更易于操縱、易于管理,具有更高的可配臵性。Jini將使網絡具有自發(fā)性,它的出現(xiàn)大大擴展了“計算”和“計算機”的含義,極大地簡化了網絡操作,對家庭用戶來說,使用網上設備即插即用,就像使用電話一樣方便。Java和Jini 不僅可以不依賴于Windows為代表的操作系統(tǒng),而且引導著信息產業(yè)的潮流,使Sun公司能在未來的、非PC類電子產品的數(shù)字化市場中強占制高點。6)Jiro平臺
異質網絡環(huán)境中安裝的存儲系統(tǒng)的多樣性和分布性,給存儲管理帶來了巨大的挑戰(zhàn)。用戶和開發(fā)人員都希望能有一種技術,能更好地促進企業(yè)存儲管理方案的開發(fā)。而Jiro平臺正是解決此問題的革命性方案。Jiro平臺實現(xiàn)了Java和Jini 技術,它是一個便于用戶管理異質網絡上由各種服務器、存儲和設備組成的混合環(huán)境的開放式存儲管理平臺。它對操作系統(tǒng)是中立的。Jiro為跨異質存儲局域網(SAN)的管理服務和設備提供了一個開放平臺,允許服務器、存儲和聯(lián)網設備在異質網絡環(huán)境中無縫地協(xié)同工作。Jiro平臺為開發(fā)者帶來的好處有: 允許開發(fā)者利用各種實現(xiàn)管理存儲網絡的目標功能創(chuàng)建應用; 提供了一個可以在各種應用、服務和設備之間交互操作的組件模型; 允許設備易被增加、刪除; 允許應用或服務被自動更新。
1999年7月,Sun發(fā)布了正式的Jiro規(guī)范草案,供公眾討論、修改。目前,Jiro平臺的團體成員已超過25家,支持Jiro平臺的廠商超過300家。有眼光的廠商紛紛加入到這些組行列,從而加快了Jiro的發(fā)展。
結語
Java自問世以來,以其得天獨厚的優(yōu)勢,在IT業(yè)界掀起了研究、開發(fā)它的浪潮,顯示了“鵬程萬里”的美好前景。作為一種與底層硬件無關的、“編寫一次,到處運行”的高級語言和計算平臺,Java天生就具有將網絡上的各個平臺連成一體的能力,真正實現(xiàn)了“網絡就是計算機”的理念。以Java為代表的網絡的成長,改變了我們的聯(lián)系方式、生活方式、學習方式和經營方式。它的來到使我們目睹了一場類似印刷術的重大變革。毫無疑問,它將影響人類社會的發(fā)展,這就是:Java加速人類進入網絡時代!
Java是當今IT產業(yè)和人類文明的創(chuàng)新和希望!
第二篇:java課程設計畢業(yè)論文
許多計算機專業(yè)的同學每學期都要做個畢業(yè)設計,下面是小編整理的java課程設計畢業(yè)論文,希望對你有所幫助!
在瀏覽器中輸入圖片網址,里面有很多的Java項目,有SSH的,還有適合初學java的新手教程
也有安卓的教程和一些案例,也有Html5的教程
下載方法:
找到要下載的項目,點擊圖片中紅線標出的區(qū)域,這是真正的下載地址
點擊按鈕后會到如圖所示的頁面,輸入驗證碼后即可下載
第三篇:基于java的博客網站設計與開發(fā)畢業(yè)論文
編號
中央廣播電視大學計算機與科學技術專業(yè)
畢
業(yè)
論
文
學生姓名:黃志剛
學 號:14360012501
專 業(yè):計算機與科學技術
班 級:
指導教師:李慧
2016年04月
目錄
目錄
I V VII VIII 1 1 1 2 2 2 3 3 3 4 5 6 6 7 摘要
前言
文獻綜述
第1章 緒論
第1節(jié) 第2節(jié) 背景
研究的目的與意義
第2章 設計簡介及設計方案
第1節(jié) 第2節(jié) 第3節(jié) 設計原則 運行架構 設計方案
第3章 相關技術介紹
第1節(jié) 第2節(jié) 第3節(jié) MVC簡介
Spring 的起源和背景 Hibernate 概述
第4章 需求分析
第1節(jié) 第2節(jié) 注冊博友 普通用戶
I 9 10 10 11 11 12 12 14 15 15 15 15 17 18 20 第5章 系統(tǒng)架構設計
第1節(jié) 第2節(jié) 系統(tǒng)架構說明: Hibernate層
5.2.1 設計持久化對象(PO)5.2.2 實現(xiàn)DAO 層 5.2.3 DAO組件的定義 5.2.4 實現(xiàn)DAO組件 5.2.5 部署DAO 層
第3節(jié) 第4節(jié) 實現(xiàn)Service 層 MVC 層實現(xiàn)
5.4.1 1.Model 部分 5.4.2 View 部分
5.4.3 3.Controller部分 5.4.4 采用Ajax加深用戶體驗
設計結果及對設計結果的分析
全文總結
致謝21
目錄
目錄
I V VII 摘要
前言
II
VIII 1 1 1 2 2 2 3 3 3 4 5 6 6 7 9 9 10 10 11 11 12 文獻綜述
第1章 緒論
第1節(jié) 第2節(jié) 背景
研究的目的與意義
第2章 設計簡介及設計方案
第1節(jié) 第2節(jié) 第3節(jié) 設計原則 運行架構 設計方案
第3章 相關技術介紹
第1節(jié) 第2節(jié) 第3節(jié) MVC簡介
Spring 的起源和背景 Hibernate 概述
第4章 需求分析
第1節(jié) 第2節(jié) 注冊博友 普通用戶
第5章 系統(tǒng)架構設計
第1節(jié) 第2節(jié) 系統(tǒng)架構說明: Hibernate層
5.2.1 設計持久化對象(PO)5.2.2 實現(xiàn)DAO 層 5.2.3 DAO組件的定義 5.2.4 實現(xiàn)DAO組件
III 14 15 15 15 15 17 18 20 5.2.5 部署DAO 層
第3節(jié) 第4節(jié) 實現(xiàn)Service 層 MVC 層實現(xiàn)
5.4.1 1.Model 部分 5.4.2 View 部分
5.4.3 3.Controller部分 5.4.4 采用Ajax加深用戶體驗
設計結果及對設計結果的分析
全文總結
致謝21
IV
摘要
越來越多的網絡用戶希望能夠在網絡平臺上更多地展現(xiàn)自己的個性,更方便地與他人互動交流,擁有一個自己獨立的空間,隨著Web2.0時代的到來,一個新的概念出現(xiàn)了——博客。
首先介紹了博客網站設計的意義和背景,主流博客網站的主要功能。重點介紹了基于J2EE架構的博客網站設計方案,實現(xiàn)的主要功能。
其次,重點講述了博客網站的業(yè)務邏輯層和持久層的設計與開發(fā)過程中所涉及的技術及開源框架。系統(tǒng)如何以Spring 框架為核心,向下整合Hibernate進行持久層訪問,向上整合Struts 按清晰的MVC 模式控制,怎樣劃分應用的層次。簡述了頁面的請求的分發(fā)及流程。
最后對BLOG網站開發(fā)中所碰到的一些問題,并針對這些問題提出一些解決方案,最后對系統(tǒng)性能作出一些簡要評估,闡述了一些個人想法。
關鍵詞: 博客,J2EE, Spring,Struts,Hibernate
Abstract More and more network users hope to unfold there characteristics in the network platform and interact with people more conveniently.From the begining of Web 2.0, a new concept of blog emerged.Firstly, we introduce the meaning and background of designing of blog site, and then introduce the main function of the blog site briefly.We also introduce the designing scheme of blog site which is based on the architecture of J2EE.The main function carried out in our blog project is presented.Secondly, we introduce the designing of logic and permanent layer of the blog site.The technic and structure refered in the process of developing are presented.We also depict how to be around with frame of Spring, how to work with Hibernate to visit permanent layer below, how to work with Struts to control the clear MVC model up and how to divide layers of application.We also give the brief introduce of distribution and flow of pages’request.Finally, we discuss some problems about the blog realization and show schemes of solving problems.Brief evaluation on the performance of system is given.We give a comment on problems occurring in our work.V
Keywords: blog, J2EE, Spring, Struts, Hibernate
VI
前言
本文介紹了基于輕量級J2EE開發(fā)博客網站。同時利用Spring、Struts、Hibernate、Ajax等框架整合開發(fā)。本文主要分為七章。
第一章主要介紹了進行博客網站的背景及意義。第二章對博客網站設計方案做了簡要介紹。第三章介紹了博客網站的需求分析。
第四章詳細介紹了系統(tǒng)的架構設計,并詳細講述了通過Spring 框架,向下整合Hibernate 進行持久層訪問,利用DAO模式隔離業(yè)務邏輯層與具體持久層,向上整合Struts按清晰的MVC模式構建系統(tǒng)。
第五章簡單講述了系統(tǒng)設計時遇到的問題及解決方案,另外對系統(tǒng)的性能作了一個簡要的評論及設計結果和設計結果分析。
第六章對全文所使用的方法、結果以及目的和意義做了全面的總結,展望java技術在Web上的一些應用。
本文的完成得到了戴祖旭博士的幫助和指導,在此向他表示衷心的感謝。
VII
文獻綜述
Hibernate相關文獻介紹
文獻錯誤!未找到引用源。圍繞著ORM,講述了對象映射配置,對象關系映射、集合映射、對象的操作和查詢。及詳細如何利用Hibernate 構建DAO層,怎樣根據PO的關系。面向對象操作數(shù)據庫,怎么配置數(shù)據庫映射文件。Java基礎文獻概述
文獻錯誤!未找到引用源。講述了java基礎知識,如控制流程、初始化和清理、接口和內部類等。并講述如何利用對象提供服務,并通過接口隱藏具體實現(xiàn)。J2EE相關文獻概述
文獻錯誤!未找到引用源。論述了在J2EE平臺中在各層經常遇到的問題,該文獻詳細講解如何解決J2EE平臺所遇到的問題。
文獻錯誤!未找到引用源。將述了如何構建輕量級的J2EE企業(yè)應用程序,并講解MVC在Web中應用,怎么將請求控制并轉發(fā),Struts標簽。
文獻錯誤!未找到引用源。詳細講述了Spring 的控制反轉、AOP編程思想。及其怎么利用Spring整合Hibernate,利用Spring提供IOC容器管理DAO組件,利用事務管理SessionFactory。
文獻錯誤!未找到引用源。以8 個小型J2EE項目講述怎么利用Struts、Hibernate、Spring等框架構建J2EE Web應用。并且也詳細講述各個框架的在項目中應用。文獻錯誤!未找到引用源。這本書是有3個具有15以上的開發(fā)經驗的企業(yè)java架構師或首席架構師所著。本書講述了J2EE的3層所涉及的核心模式。通過通用模式可以更快構建穩(wěn)定的J2EE應用。
文獻錯誤!未找到引用源。這本書詳細講述了架構設計的方法。架構設計應該包括那些方面。
怎么應用架構模式。Ajax技術文獻概述
文獻錯誤!未找到引用源。講述了JavaScript、CSS、DOM、XML的在Ajax上一些應用。如何利用這四個技術實現(xiàn)html片段的替換。并結合一些實例講述如何利用Ajax 實現(xiàn)友好用戶體驗。Eclipse文獻概述
文獻錯誤!未找到引用源。講述了如何利用Eclipse開發(fā)java應用程序。該文獻主要講如何構建java開發(fā)環(huán)境,如何安裝Eclipse插件。并利用Eclipse自動生成一些代碼。Jsp文獻概述
文獻錯誤!未找到引用源。圍繞著實例講述Jsp的各種技術。比如Servlet,JavaBean 在Jsp中的應用。本文中的圖片播放器和音頻播放器是基于這書上實例改進的。
VIII
第1章 緒論
第1節(jié) 背景
商業(yè)網站設計的主要目的一般是通過網站的推廣,實現(xiàn)更多網絡用戶的關注,從而吸引更多的企業(yè)用戶投入更多的宣傳經費到網站上。
長期的戰(zhàn)略目標,商業(yè)網站不僅是公共產品信息和服務的推廣,它還是將買家與賣家、廠商和合作伙伴緊密結合的平臺,借助這些商業(yè)網站可以消除企業(yè)與客戶之間時間與空間帶來的障礙。
Blog博客網站致力于為廣大博客提供優(yōu)質博客頁面服務的商業(yè)網站。每個博客都希望借助自己的博客頁面宣傳自己,而博客數(shù)量越多,網站的點擊率越高就越能夠吸引廣大的企業(yè)客戶選擇該商業(yè)網站作為媒介,將自己的產品展現(xiàn)給客戶??梢哉f,對這些博客網站而言:為博客提供良好的服務就意味著為網站帶來更多的商業(yè)客戶。因此,在具體設計實現(xiàn)該博客網站時,主要考慮了主流博客網站的幾個主要功能。
1.博客的注冊、登錄驗證功能
2.網絡用戶通過關鍵字搜索博文功能 3.最熱門博客頁面推薦瀏覽
4.文章詳細內容及相關評論顯示 5.博客頁面訪問量統(tǒng)計
6.博客個人文章管理維護功能
7.博客個人文章分類管理維護功能 8.博客個人友情鏈接維護功能
9.博客個人基本信息管理維護功能 10.博客圖片上傳及個人相冊管理
11.網絡用戶寫留言,博主查看留言。第2節(jié) 研究的目的與意義
Blog記載了日常發(fā)生的事情和自己的興趣愛好,把自己的思想和知識和他人分享、交流,同時又通過“六度空間”結識了更多志趣相投的朋友;而越來越多專業(yè)知識的 Blog 的出現(xiàn),讓我們看到了 Blog 更多所蘊涵的巨大的信息價值:不同的 Blog 選擇不同的內容,收集和整理成為很多人關注的專業(yè) Blog ——目前越來越多的人獲取信息的來源是一些固定的 Blog。隨著博客人數(shù)的增加,Blog 作為一種新的生活方式、新的工作方式、新的學習方式已經被越來越多的人所接受,并且在改變傳統(tǒng)的網絡和社會結構:網絡信息不再是虛假不可驗證的,交流和溝通更有明確的選擇和方向性,單一的思想和群體的智慧結合變的更加有效,個人出版變成人人都可以實現(xiàn)的夢想—— Blog 正在影響和改變著我們的生活。
第2章 設計簡介及設計方案
在整個blog進行開發(fā)之前,要確定出整個項目的整體架構,包括系統(tǒng)的選型、運行環(huán)境的確定及系統(tǒng)結構設計。下面對這進行詳細介紹。第1節(jié) 設計原則
在進行軟件系統(tǒng)開發(fā)的最初環(huán)節(jié),一般都需要進行系統(tǒng)的選型,即根據系統(tǒng)功能的實際需求,選擇合適的開發(fā)工具及軟件架構。
blog對系統(tǒng)的可靠性、穩(wěn)定性有比較高的要求。本系統(tǒng)設計時,比較主流的B/S設計有基于JSP、ASP、PHP、CGI及J2EE等模式。相比較而言PHP的功能相對簡單,不適合做大程序;而CGI效率相對較低,所以也不考慮。由于J2EE的開源的框架中提供了MVC模式實現(xiàn)框架Struts、對象關系模型中的Hibernate 的框架及擁有事務管理和依賴注入的Spring。利用現(xiàn)存框架可以更快開發(fā)系統(tǒng)。所以選擇Java技術作為blog 的開發(fā)工具。第2節(jié) 運行架構
為了增加系統(tǒng)的吞吐量,提高并發(fā)處理客戶請求數(shù)量,系統(tǒng)采用了IBM服務器作為主機。在數(shù)據庫處理方面,不需要在數(shù)據層借助存儲過程及數(shù)據庫服務器端函數(shù)封裝過多的業(yè)務邏輯,因此數(shù)據庫系統(tǒng)采用相對精巧的MySQL錯誤!未找到引用源。
該在線博客系統(tǒng)服務器端如果需要布置到其他主機上,則該主機必備條件如下:
1.服務器端操作系統(tǒng):獨立于操作系統(tǒng)的跨平臺系統(tǒng),客戶端MicroSoft Windows 2000及以上;
2.數(shù)據庫:MySQL 5.0.27版本; 3.Web服務器:Tomcat 5.5及以上版本,配合MVC設計模式及 Hibernate開發(fā)架構; 4.客戶端運行環(huán)境:能運行IE 5以上或Netscape 5以上瀏覽器的操作系統(tǒng),配合
使用Ajax技術;
5.客戶端運行工具:目前的系統(tǒng)采用瀏覽器作為客戶端,為了支持Ajax開發(fā)框架,應該選擇使用IE 5以上版本瀏覽器。
本網站以NT為Web平臺,JSP+Ajax+Servlet+JavaBean+Hibernate為網站實現(xiàn)技術,建立基于MySQL數(shù)據庫系統(tǒng)的核心動態(tài)網頁,實現(xiàn)博客網站前臺及博客個人維護管理等功能模塊。第3節(jié) 設計方案
為了在更短的時間內實現(xiàn)博客網站,我們采用J2EE架構。集成開發(fā)環(huán)境我采用對于插件即插即用的Eclipse,JSP運行環(huán)境我們采用Tomcat應用服務器,數(shù)據庫管理系統(tǒng)我們采用的是MYSQL,博客網站主要實現(xiàn)注冊用戶可以在 服務器上開辟自己的空間,也可以發(fā)布消息,上傳文件,回復消息,從服務器發(fā)送客戶端的數(shù)據應用XML來封裝.本系統(tǒng)采用的是經典的J2EE三層結構,分為表現(xiàn)層、中間層(業(yè)務邏輯層)和數(shù)據服務層。三層體系將業(yè)務規(guī)則、數(shù)據訪問及合法性校驗等工作放在中間層處理??蛻舳瞬恢苯优c數(shù)據庫交互,而是通過組件與中間層建立連接,再由中間層與數(shù)據庫交互。并利用Spring、Hibernate、Spring等輕量級框架實現(xiàn)三層結構的設計。即采用的是貧血模式,業(yè)務邏輯對象正面封裝了全部的業(yè)務邏輯方法,Web 層僅與業(yè)務邏輯組件交互即可,無須訪問底層的DAO 對象。Spring 的聲明式事務管理將負責業(yè)務邏輯對象方法的事務性。在貧血模式下,其分層非常清晰。Domain Object 并不具備領域對象的業(yè)務邏輯功能,僅僅是ORM 框架持久化所需的POJO,僅是數(shù)據載體。貧血模型容易理解,開發(fā)便捷,但嚴重背離了面向對象的設計思想,所有的Domain Object 并不是完整的Java 對象。
第3章 相關技術介紹
第1節(jié) MVC簡介
MVC 是Model、View、Controller 三個詞的縮寫,三個詞分別代表應用的三個組成部分:模型、視圖與控制器。三個部分以最少的稿合,協(xié)同工作,從而提高應用的可擴展性及可維護性。起初,MVC 模式是針對相同的數(shù)據需要不同顯示的應用而設計的,其整體的效果如圖1 所示:
圖1 MVC結構
在經典的MVC 模式中,事件由控制器處理,控制器根據事件的類型改變模型或視圖,反之亦然。具體地說,模型維護一個視圖列表,這些視圖為獲得模型變化通知,通常采用觀察者模式登記給模型。當模型發(fā)生改變時,模型向所有登記過的視圖發(fā)送通知:接下來,視圖從對應的模型中獲得信息,然后更新自己。概括起來,MVC 有如下特點。.多個視圖可以對應一個模型。按MVC 設計模式,一個模型對應多個視圖,可以減少代碼的復制及代碼的維護量,一旦模型發(fā)生改變,也易于維護。
1.模型返回的數(shù)據與顯示邏輯分離。模型數(shù)據可以應用任何的顯示技術,例如使用JSP 頁面、Velocity 模板或者直接產生Excel 文檔等。
2.應用被分隔為三層,降低了各層之間的稿合,提供了應用的可擴展性。
3.控制層的概念也很有效,由于它把不同的模型和不同的視圖組合在一起,完成不同的請求。因此,控制層可以說是包含了用戶請求權限的概念。
4.MVC 更符合軟件工程化管理的精神。不同的層各司其職,每一層的組件具有相同的特征,有利于通過工程化和工具化產生管理程序代碼。第2節(jié) Spring 的起源和背景
2002 年wrox 出版了《Expert one on one J2EE design and development》 一書。該書的作者是Rod Johnson。在書中,Johnson 對傳統(tǒng)的J2EE 架構提出深層次的思考和質疑。并提出J2EE 的實用主義思想。2003 年,J2EE 領域出現(xiàn)一個新的框架: Spring,該框架同樣出自Johnson 之手。事實上,Spring 框架是?Expert one on one J2EE design and development? 一書中思想的全面體現(xiàn)和完善,Spring 對實用主義J2EE 思想進一步改造和擴充,使其發(fā)展成更開放、清晰、全面及高效的開發(fā)框架。一經推出,就得到眾多開發(fā)者的擁戴。傳統(tǒng)J2EE 應用的開發(fā)效率低,應用服務器廠商對各種技術的支持并沒有真正統(tǒng)一,導致J2EE 的應用并沒有真正實現(xiàn)Write Once 及Run Anywhere 的承諾。Spring 作為開源的中間件,獨立于各種應用服務器,甚至無須應用服務器的支持,也能提供應用服務器的功能,如聲明式事務等。Spring 致力于J2EE 應用的各層的解決方案,而不是僅僅專注于某一層的方案??梢哉fSpring 是企業(yè)應用開發(fā)的“一站式”選擇,并貫穿表現(xiàn)層、業(yè)務層及持久層。然而,Spring 并不想取代那些已有的框架,而與它們無縫地整合。總結起來,Spring 有如下優(yōu)點: 1.低侵入式設計,代碼污染極低。
2.獨立于各種應用服務器,可以真正實現(xiàn)Write Once, Run Anywhere 的承諾。3.Spring 的DI 機制降低了業(yè)務對象替換的復雜性。
4.Spring 并不完全依賴于Spring,開發(fā)者可自由選用Spring 框架的部分或全部。
第3節(jié) Hibernate 概述
Hibernate 是目前最流行的ORM 框架,其采用非常優(yōu)雅的方式將SQL 操作完全包裝成對象化的操作。其作者Gavin King 在持久層設計上極富經驗,采用非常少的代碼實現(xiàn)了整個框架,同時完全開放源代碼,即使偶爾遇到無法理解的情況,也可以參照源代碼來理解其在持久層上靈巧而智能的設計。目前Hibernate 在國內的開發(fā)人員相當多,Hibernate 的文檔也非常豐富,這些都為學習Hiberante 鋪平了道路,因而Hibernate 的學習相對簡單一些。下面通過對比來了解Hibernate 和傳統(tǒng)JDBC 操作數(shù)據庫持久層之間的差異。
第4章 需求分析
Blog網站主要是實現(xiàn)注冊用戶登錄、管理相關信息、博文及相關評論、查看留言、友情鏈接、及圖片的上傳和圖像的播放而為上網用戶提供按博文主題搜索,查看注冊用戶的博文及提出相關評論,并為注冊用戶寫留言,游覽注冊用戶的相冊、注冊等功能的系統(tǒng)。下面就以兩種不同的用戶來分析博客網站的需求。第1節(jié) 注冊博友
首先必須在博客首頁中登錄填寫用戶名和密碼,這樣才能執(zhí)行一些相關操作,不然就是普通用戶只能查看一些信息,而不能發(fā)表博文??梢栽诠芾眄撁嫔咸砑硬┪牡姆诸?,可以上傳圖片和游覽自己的相冊,在上傳過程中可以將一張圖片定義為自己的簽名,在個人管理頁面中注冊用戶還可以修改自己的個人信息。博文管理,友情鏈接管理及博文分類管理,用例圖2。
圖2 博客管理頁面的用例圖
在博客主界面中發(fā)表博文時可以選擇博文類型,這樣可以更好管理自己的博文。并查看和刪除網友對自己的博文的一些評論、查看和刪除網友留下的一些留言,提供與其他網友交流的空間。更好交流,在信息時代人們通過個人空間溝通也用來但不能在自己的博客主頁面中提交評論和留言。這樣在本系統(tǒng)中就可以為博友提供更多的個人色彩。在管理頁面中添加和刪除友情連接。這樣博友可以在自己空間中快速定位自己的關心的網站。這樣還可以讓網友看到自己的一些信息。友情鏈接及網頁訪問量統(tǒng)計顯示:在博客的個人頁面中還提供了推薦給普通網絡用戶的相關友情鏈接,此外,對個人頁面的訪問量也在隨時進行統(tǒng)計,并在個人頁面中進行直觀的顯示。博客主頁面的用例圖如圖3所示:
圖3 博客主頁面的用例圖
第2節(jié) 普通用戶
在博客注冊頁面注冊成為博客的注冊用戶,才可以擁有自己獨立的空間,進入某一博客頁面查看相關文章信息時,可以隨時對自己所感興趣的文章發(fā)表評論,同時也可以查看到其他人針對該博文的評論。普通用戶在閱讀博文時可以在最后留下自己的一些評論。他也可以留下更多的信息。這樣他可以寫留言。這樣他留下的信息就更快地被博友所看到。普通用戶進入博友的用例圖如圖4所示:
圖4上網博友在博客主頁面的用例圖
普通網友可以搜索自己關心的一些數(shù)據。并且在搜索結果中提供在結果范圍內再次搜索。這樣就可以將范圍縮小。首頁向注冊用戶提供登陸模塊,注冊用戶在博客網站首頁跟上網網友一樣可以查看博客和博文推薦。上網網友可以注冊成為博客用戶,擁有自己獨立的空
間。這一模塊的用例圖如圖5所示:
圖5 博客首頁的用例圖
第5章 系統(tǒng)架構設計
本系統(tǒng)采用嚴格的J2 EE 應用結構,主要有如下幾個分層。
1.表現(xiàn)層:由JSP 頁面組成。2.MVC 層:使用Struts框架。
3.業(yè)務邏輯層:主要由Spring loC 容器管理的業(yè)務邏輯組件組成。
4.DAO 層:由7 個DAO 組件組成,實現(xiàn)類必須繼承Spring提供的HibernateDaoSupport。
5.Hibernate 持久層:由7 個PO 組成,并在Hibernate Session 管理下,完成數(shù)據庫訪問。
6.數(shù)據庫服務層:使用MySQL 數(shù)據庫存儲持久化數(shù)據。系統(tǒng)的具體分層如圖5 所示。
圖6 系統(tǒng)結構圖
在圖6 黑色大方框內的MVC 控制層、Service 層及DAO 組件層的組件,都由Spring IOC 容器負責生成,并管理組件的實例(實例必須是單身模式的,本系統(tǒng)中的bean基本上是單身的)。
第1節(jié) 系統(tǒng)架構說明:
本系統(tǒng)不僅嚴格按MVC 模式設計,還按J2 EE 分層設計,將中間層嚴格分成業(yè)務邏輯層、DAO 層及數(shù)據持久層等。MVC 層的控制器絕對禁止持久層訪問,甚至不參與業(yè)務邏輯的實現(xiàn)。表現(xiàn)層采用傳統(tǒng)JSP 技術。
本系統(tǒng)采用的是典型的J2EE 三層結構,分為表現(xiàn)層、中間層(業(yè)務邏輯層)和數(shù)據服務
層。三層體系將業(yè)務規(guī)則、數(shù)據訪問及合法性校驗等工作放在中間層處理??蛻舳瞬恢苯优c數(shù)據庫交互,而是通過組件與中間層建立連接,再由中間層與數(shù)據庫交互。Jsp廣泛的應用和穩(wěn)定的表現(xiàn),為其作為表現(xiàn)層技術打下了堅實的基礎。中間層采用的是流行的Spring+Hibernate,為了將控制層與業(yè)務邏輯層分離,又細分為以下幾種。
Web 層,就是MVC 模式里面的C,負責邏輯層和表現(xiàn)層的交互。調用業(yè)務邏輯層,并將業(yè)務數(shù)據返回給表現(xiàn)層作組織表現(xiàn),該系統(tǒng)的MVC采用Struts框架。
Service 層(就是業(yè)務邏輯層),負責實現(xiàn)業(yè)務邏輯。業(yè)務邏輯層以DAO 層為基礎,通過對DAO 組件的正面模式包裝,完成系統(tǒng)所要求的業(yè)務邏輯。
DAO 層,負責與持久化對象交互。該層封裝了數(shù)據的增、刪、查、改的操作。
PO,持久化對象。通過實體關系映射工具將關系型數(shù)據庫的數(shù)據映射成對象,很方便地實現(xiàn)以面向對象方式操作數(shù)據庫,該系統(tǒng)采用Hibernate 作為ORM 框架。Spring 的作用貫穿了整個中間層,將Web 層、Service 層、DAO 層及PO 無縫整合,其數(shù)據服務層用來存放數(shù)據。
第2節(jié) Hibernate層
通過使用Hibernate 持久層,可以避免使用傳統(tǒng)的JDBC 操作數(shù)據庫,對JDBC近一步包裝,從而更好地使用面向對象的方式來操作數(shù)據庫。保證了整個軟件開發(fā)過程以面向對象的方式進行,即面向對象分析、設計及編程,透過Hibernte 對PO對象持久化操作,不管插入還是查詢都是通過PO。5.2.1 設計持久化對象(PO)面向對象分析,是指根據系統(tǒng)需求提取應用中的對象,將這些對象抽象成類,再抽取出需要持久化保存的類,這些需要持久化保存的類就是持久化對象(PO)。該系統(tǒng)并沒有預先設計數(shù)據庫,而是完全從面向對象分析開始,設計了7 個持久化類。本系統(tǒng)一共設計了如下7 個PO。
1.Blog: 對應博客網友的一些基本信息,必如id、username、password、sex、picturename、name、address、uid、subject。還包括一些集合,博友的博文(Articles)、圖片(Pictures)、留言(Messages),這樣在系統(tǒng)中我們可以隨時通過getXxx()訪問博客的一些屬性就不用編寫sql語句來訪問博友的些屬性,2.Picture: 對應博友的圖片,包含name、blog,filename,這樣我們可以將圖片 的路徑名保存到數(shù)據庫中,在根據路徑名訪問博友上傳的圖片,就不用用到數(shù)據庫中的Blob類型,將圖片數(shù)據格式轉來轉去,不過這樣服務器直接存儲客戶的圖片。
3.Messages: 對應網友留下的留言,屬性有id、username、Blog、注冊用戶可以查看別人寫的留言,但不能在自己的空間內留言。
4.FeedBack: 對應回復,包括id、article、username、content。他對于一篇博文,是網友閱讀博文后對博文的評論。該評論無論是誰都可以看到。
5.Sort: 對應博文分類屬性有Id、Blog、name、Articles,注冊用戶可以在自己的空間定義一些分類,這樣可以更好管理自己的博文,一個分類對應一個Blog,一個分類可能有很多分類。
6.Article: 博客系統(tǒng)的核心 對應有 title,Id、blog、content、sort,一個博文屬于一種分類,可以有很多回復,7.Links: 對應有情連接,包括id、url、name、blog博友通過添加有情連接可以在自己的空間中提供快速的自己關心的網站。
客觀世界中的對象不是孤立存在的,以上7 個PO 也不是孤立存在的,它們之間存在復雜的關聯(lián)關系。分析關聯(lián)關系也是面向對象分析的必要步驟,這7 個PO 的關系如下。Blog除了FeedBack外,與另外5個都是1-N的關系,在blog類里對應有個集合。比如messages,是SetArticle 和FeedBack之間存在I-N 的關系,每篇博文可以被很多人評論。Article和sort 之間存在N-1 的關系,即每篇博文只能屬于一種分類中,并且只屬于一個博友,在Hibernate框架中它提供了以xml文件形式出現(xiàn)的映射文件,完成從PO到數(shù)據庫表映射后,即完成面向對象的程序設計語言與關系數(shù)據庫的映射。以面向對象的方式操作關系數(shù)據庫。5.2.2 實現(xiàn)DAO 層
在Hibernate 持久層之上,可使用DAO 組件再次封裝數(shù)據庫操作。通過DAO 層,可以讓業(yè)務邏輯層與具體持久層技術分離,一旦需要更換持久層技術時,業(yè)務邏輯層組件不需要任何改變。因此,使用DAO 組件,即意味著引入DAO 模式,使每個DAO 組件包含了數(shù)據庫的訪問邏輯:每個DAO 組件可對一個數(shù)據庫表完成基本的CRUD 等操作。DAO 模式的實現(xiàn)至少需要如下三個部分。1.DAO 工廠類。2.DAO 接口。
3.DAO 接口的實現(xiàn)類。DAO 模式是一種更符合軟件工程的開發(fā)方式,使用DAO 模式有如下理由。
1)DAO 模式抽象出數(shù)據訪問方式,業(yè)務邏輯組件無須理會底層的數(shù)據庫 訪問,而只專注于業(yè)務邏輯的實現(xiàn)。
2)DAO 將數(shù)據訪問集中在獨立的一層,所有的數(shù)據訪問都由DAO 對象完成,這層獨立的DAO 分離了數(shù)據訪問的實現(xiàn)與其他業(yè)務邏輯,使得系統(tǒng)更具可維護性。
3)DAO 還有助于提升系統(tǒng)的可移植性。獨立的DAO 層使得系統(tǒng)能在不同的數(shù)據庫之間輕易切換,底層的數(shù)據庫實現(xiàn)對于業(yè)務邏輯組件是透明的。數(shù)據庫移植時僅僅影響DAO 層,不同數(shù)據庫的切換不會影響業(yè)務邏輯組件,因此提高了系統(tǒng)的可復用性。
對于不同的持久層技術,Spring 的DAO 提供一個DAO 模板,將通用的操作放在模板里完成,而對于特定的操作,則通過回調接口完成。Spring 為Hibernate 提供的DAO 支持類是: HibernateDaoSupport,5.2.3 DAO組件的定義
DAO 組件提供了各持久化對象的基本的CRUD 操作。而在DAO 接口里則對DAO組件包含的各種CRUD 方法提供了聲明,但有一些IDE 工具也可以生成基本的CRUD方法。使用DAO 接口的原因是:避免業(yè)務邏輯組件與特定的DAO組件藕合。由于DAO 組件中的方法不是開始
就設計出來的,其中的很多方法可能會隨著業(yè)務邏輯的需求而增加,但以下幾個方法是通用 的。
? get: 根據主鍵加載持久化實例。
? saveor update: 保存或更新持久化實例。? remove: 刪除持久化實例。
上面涉及了7個PO,這樣我們必須設計7個對應的PODao 7個Dao必須繼承BaseDao 這個BaseDao 有對接口的一些基本的CURD操作。7個Dao 如下。LinksDao,BlogDao、FeedBackDao、ArticleDao、MessageDao、SortDao、PictureDao。這7個Dao 分別封裝對自己的持久化對象的一些操作。5.2.4 實現(xiàn)DAO組件
借助于Spring的DAO支持,可以很方便地實現(xiàn)DAO類。Spring 為Hibernate 的整合提供了很好的支持,Spring 的DAO 支持類是:HiberanteDaoSupport,該類只需要傳入一個SessionFactory 引用,即可得到一個HibernateTemplate 實例,該實例功能非常強大,數(shù)據庫的大部分操作也很容易實現(xiàn)。所有的DAO 類都繼承HibernateDaoSupport,并實現(xiàn)相應的DAO 接口。而業(yè)務邏輯對象則面向接口編程,無須關心DAO 的實現(xiàn)細節(jié)。通過這種方式,可以讓應用在不同的持久化技術之間切換。LinksDaoHiberante,BlogDaoHiberante、FeedBackDaoHiberante、ArticleDaoHiberante、MessageDaoHiberante、SortDaoHiberante、PictureDaoHiberante分別是LinksDao,BlogDao、FeedBackDao、ArticleDao、MessageDao、SortDao、PictureDao的實現(xiàn)類,并繼承HibernateDaoSupport,并通過Spring IoC容器向7個Dao 實現(xiàn)類注入SessionFactroy,在7個Dao 的實現(xiàn)類就可以通過HibernateTemplate對PO持久化操作。并借助于Spring 提供的兩個工具類: HibernateDaoSupport和HibernateTemplate,可以很容易地實現(xiàn)DAO 組件。這種簡單的實現(xiàn)較之傳統(tǒng)的JDBC 持久化訪問,簡直不可同日而語。比如我現(xiàn)在要得到所有Blog對象我只需一句 return getHibernateTemplate().find(“from Blog”);則返回一個Blog對象的列表。5.2.5 部署DAO 層
HibernateDaoSupport類只需要一個SessionFactory 屬性,即可完成數(shù)據庫訪問。SessionFactroy創(chuàng)建Session,而數(shù)據庫的CRUD操作都是有Session 完成,并將查詢結果保存在一級緩存中,每次用戶提交一次會話,可能需要Session完成一些數(shù)據庫的操作而實際的數(shù)據庫訪問由模板類HibernateTemplate完成,該模板類提供了大量便捷的方法,簡化了數(shù)據庫的訪問。5.2.5.1 DAO 組件運行的基礎
應用的DAO 組件以Hibernate和Spring 為基礎,由Spring 容器負責生成并管理DAO組件。Spring 容器負責為DAO 組件注入其運行所需要的基礎SessionFactory。Spring 為整合Hibernate 提供了大量工具類,通過LocalSessionFactoryBean 類,可以將Hibernate 的SessionFactory 納入其IoC 容器內。使用LocalSessionFactoryBean 配置
SessionFactory之前,必須為其提供對應的數(shù)據源,配置代碼如下:
在將dataSource注入到上面簡述的7個Dao中,就可以用HibernateTemplate提供的大量便捷的方法。進一步簡化了持久層討問,其模板的操作大大降低Hibernate 的重復操作;Spring 提供的DAO 支持簡化了DAO 開發(fā);SessionFactory 的依賴注入簡化了Session 的控制等;這些都極大地提高J2EE應用的開發(fā)效率。聲明式事務的管理分離了業(yè)務邏輯和事務邏輯,將應用從特定的事務邏輯中解料,使應用可以方便地在不同的事務策略之間切換。在所有的ORM 框架中,Sping 對Hibernate 的支持最好。Spring 提供很多IoC 特性的支持,方便地處理大部分典型的Hibernate 整合問題,如SessionFactory 的注入到7個PODao中、HibernateTemplate 的簡化操作及DAO 支持等,然后在7個PODao實現(xiàn)類繼承HibernateDaoSupport,這樣的話,Dao實現(xiàn)類就可以通過HibernateTemplment以面向對象的方式操作數(shù)據庫。另外,Spring 還提供了統(tǒng)一的異常體系及聲明式事務管理等。一旦Hibernate 處于Spring 的管理下,Hibernate 所需要的基礎資源,都由Spring 提供注入。Hibernate創(chuàng)建SessionFactory 必需的DataSource,執(zhí)行持久化必需的Session 及持久層訪問必需的事務控制等,這些原本必須通過代碼控制的邏輯,都將由Spring 接管:DataSource, SessionFactory, TransactionManager 等,都將作為Spring 容器中的beano 將這些bean 放在配置文件中管理,可以提供很好的解耦。Spring 提供了DAO 支持,可以大大簡化DAO 組件的開發(fā)。IOC 容器的使用,提供了DAO 組件與業(yè)務邏輯組件之間的松糯合。所有的DAO實現(xiàn)Bean 組件,都由容器負責注入到業(yè)務邏輯組件中,其業(yè)務組件無須關心DAO 組件的實現(xiàn)。面向接口編程及DAO 模式的使用,提高了系統(tǒng)組件之間的解稿,降低了系統(tǒng)重構的成本。通過Spring 整合Hibernate,使持久層的訪問更加容易,使用Spring 管理Hibernate持久層有如下優(yōu)勢。
1.有效的Session管理: Spring提供了有效、簡單和安全的Hibernate Session處理。2.IoC 容器提高了DAO 組件與業(yè)務邏輯層之間的解糯。3.DAO 模式的使用,降低了系統(tǒng)重構的代價。
4.方便的事務管理: Hibernate 的事務管理處理會限制Hibernate 的表現(xiàn),而 5.Spring的聲明式事務管理力度是方法級。
6.通用的資源管理: Spring 的ApplicationContext 能管理SessionFactory,使得 配置值很容易被管理和修改,無須使用Hibernate 的配置文件。
7.異常包裝:Spring 能夠包裝Hibernate 異常,把它們從checked exception 變?yōu)?runtimeException;開發(fā)者可選擇在恰當?shù)膶犹幚頂?shù)據中不可恢復的異常,從而避免煩瑣的catch/throw 及異常聲明。配置DAD 組件所有繼承HibernateDaoSupport 的DAO 實現(xiàn)類,必須為其提供SessionFactory 的引用。由于所有DAO 組件都需要注入SessionFactory 引用,因此可以使用bean 繼承簡化DAO 組件的配置。本應用同樣將所有的DAO 組件配置在單獨的配置文件中daoContext.xml中例如:由于7個Dao 都必須利用IoC容器注入
SessionFactory。我們先配一個dao模板,然后7個Dao就繼承該模板這樣就可以簡化daoContext.xml文件
parent=“daoTemplate”/> 其余6個PODAO的配置相似。從上面的配置文件可以看出Spring Ioc容器在Tomcat啟動時就可以向Dao 注入SessionFactory 第3節(jié) 實現(xiàn)Service 層 Service 組件采用正面模式封裝多個DAO 組件,DAO 對象與Service 組件之間的關Service 組件需要實現(xiàn)的業(yè)務方法主要取決于業(yè)務的需要,通常需要在業(yè)務組件中包含對應的方法。 業(yè)務層組件的實現(xiàn)業(yè)務層組件與具體的數(shù)據庫訪問技術分離,使所有的數(shù)據庫訪問依賴于DAO 組件,定義一個FacadeManagerImpl來包裝7個Dao這樣就可以把邏輯層和Dao分開,達到松散耦合的效果。事務管理將推遲到Service 組件而不是DAO 組件,因為只有對業(yè)務邏輯方法添加事務才有實際的意義,對于單個DAO 方法(基本的CRUD 方法)增加事務操作是沒有太大實際意義的。關于事務屬性的配置,本系統(tǒng)使用Spring 提供的TransactionProxyFactoryBean配置事務代理。這樣不必為每個目標對象配置代理bean;避免了目標對象被直接調用。部暑業(yè)務層組件單獨配置系統(tǒng)的業(yè)務邏輯層,可避免因配置文件過大引起配置文件難以閱讀。將配置文件按層和模塊分開配置,可以提高Spring 配置文件的可讀性和可理解性。在applicationContext.xml 配置文件中配置數(shù)據源、事務管理器、業(yè)務邏輯組件和事務管理器等bean。配置文件如下:
PROPAGATION_REQUIRED
利用SpringFrameWork的TransactionProxyFactoryBean管理業(yè)務組件的事務,對應業(yè)務的方法名調用不同的事務管理,所以在業(yè)務邏輯組件的方法取名時一定要規(guī)范化。txProxyTemplate Bean是個業(yè)務組件事務管理的一個代理的父Bean,業(yè)務組件代理繼承txProxyTemplate,并注入對應目標業(yè)務組件FacadeManagerImpl的在業(yè)務控制器根據請求
調用的是一個業(yè)務邏輯事務管理的代理,這個代理把請求分發(fā)給目標業(yè)務邏輯組件去處理,業(yè)務邏輯組件根據請求調用相應得Dao去執(zhí)行。這樣通過FacadeManagerImpl隔離業(yè)務邏輯控制器與Dao耦合。業(yè)務不需要知道是那個Dao執(zhí)行的,也不需要Dao的 實現(xiàn)類。我們通過 Spring向FacadeManagerImpl注入7個Dao組件,業(yè)務邏輯組件是 面向DAO 接口編程,可讓業(yè)務邏輯組件從DAO 組件的實現(xiàn)中分離。因此業(yè)務邏輯組件只關心業(yè)務邏輯的實現(xiàn),無須關心數(shù)據訪問邏輯的實現(xiàn)。第4節(jié) MVC 層實現(xiàn)
MVC 架構的核心思想是:將程序分成相對獨立,而又能協(xié)同工作的三個部分。通過使用MVC 架構,可以降低模塊之間的耦合,提高應用的可擴展性。另外,MVC 的每個組件只關心組件內的邏輯,不應與其他組件的邏輯混合。
本文的MVC采用Struts框架。因為Struts 是最健壯,應用最廣的MVC 框架。系統(tǒng)使用Struts 框架可以提高系統(tǒng)的可控制性,保證了系統(tǒng)的穩(wěn)定性及可用性。5.4.1 1.Model 部分
模型獨立于數(shù)據的顯示,博客中所涉及的Model 都是ActionForm和JavaBean組成。模型返回的數(shù)據與顯示邏輯分離。應用被分隔為三層,降低了各層之間的耦合,提高了應用的可擴展性。其中ActionForm用于封裝用戶請求參數(shù),所有的用戶請求參數(shù)由系統(tǒng)自動封裝成ActionForm 對象:該對象被ActionServlet轉發(fā)給Action;然后Action 根據ActionForm里的請求參數(shù)處理用戶請求。比如本系統(tǒng)中的Registfrom封裝了注冊用戶的所有信息,但頁面觸發(fā)了.do結尾 的 Http請求。這Struts的核心控制器ActionServlet將填充RegistForm 即調用RegistForm的setXxx。然后RegistAction就可以向業(yè)務邏輯組件提交添加RegistForm到博客。這樣就完成用戶的注冊。而JavaBean 則封裝了底層的業(yè)務邏輯,包括數(shù)據庫訪問等。比如本文中FacadeManagerImpl,通過業(yè)務外觀向表現(xiàn)層封裝數(shù)據的處理部分,而ActionForm 封裝了請求參數(shù)以一個值對象(VO)的形似穿透J2EE的各層。
5.4.2 View 部分
Struts 的View 部分采用JSP 實現(xiàn)。整個應用由客戶端請求驅動,當客戶端請求被ActionServlet 攔截時,ActionServlet根據請求決定是否需要調用Model 處理用戶請求,當用戶請求處理完成后,其處理結果通過JSP 呈現(xiàn)給用戶。通過Jsp將業(yè)務邏輯組件返回的值對象格式化,用戶和系統(tǒng)通過View交互的。5.4.3 3.Controller部分
Struts 的Controller由系統(tǒng)核心控制器及業(yè)務邏輯控制器。
系統(tǒng)核心控制攔截特定形式的請求,再根據請求調用相應得業(yè)務邏輯控制器處理請求,在web.xml中如下定義:
com.blog.webapp.util.MyActionServlet
config
/WEB-INF/struts-config.xml
整合Struts 與Spring 只有一個要求,讓Struts 將攔截到客戶端的請求轉發(fā)給Spring容器中的bean。也就是說Struts的業(yè)務邏輯控制器可以將從核心控制器轉發(fā)過來的請求教給spring IOC容器管理業(yè)務邏輯組件處理。本系統(tǒng)使用DelegatingRequestProcessor 的整合策略,使用DelegatingRequestProcessor的整合策略可避免創(chuàng)建過多的本系統(tǒng)采用DelegatingActionProxy,提前將請求轉發(fā)到Spring 容器內的bean。為了在應用啟動時由Struts 負責創(chuàng)建Spring 容器,應在struts-config.xml 文件中增加如下配置:
className=“org.springframework.web.struts.ContextLoaderPlugIn”>
1.在struts-config且xm1文件中配置對應的Action。
2.在Spring 容器中配置實際的Action,在本文中需要與數(shù)據層交流Action必須
繼承BaseAction,而BaseAction 具有一個facadeManger的屬性,本文的請求不直接處理請求,而是交給業(yè)務邏輯組件處理。本文通過向Action注入相應得業(yè)務邏輯組件facadeManger,Acton 將請求交給它處理。我們在action-servlet.xml 里配置一個
這樣的Bean 然后每個Action將繼承actionTemplate,這樣Action就可以把請求交給facadeManager 處理。而facadeManager是個業(yè)務邏輯事務處理的一個代理。這樣通過Spring 將facadeManager注入到業(yè)務邏輯控制器中,Action 就可以將請求分發(fā)給Spring Ioc容器中目標業(yè)務邏輯處理。這樣完成Spring 向上整合Struts。5.4.4 采用Ajax加深用戶體驗
為了加深用戶體驗,本系統(tǒng)在處理請求時還應用到Ajax 技術。頁面提交一個非.do結尾的請求,及觸發(fā)了一個文檔模型(DOM)事件。Ajax處理請求如下: 1.DOM事件處理者收到事件發(fā)生的消息進行處理,即在JavaScript定義的一個函數(shù)處理。2.處理者開始創(chuàng)建一個XMLHttpRequest對象,并根據觸發(fā)的事件對XMLHttpRequest 對象設置目標URL、http 方法(GET或POST),在本系統(tǒng)中URL是一個以.do結尾的請求。主要是請求交給業(yè)務邏輯組件處理,再注冊服務器的回調函數(shù)。3.向服務器分派異步的Http請求。
4.異步的Http請求發(fā)出后,游覽器不必等待服務器的響應,用戶還可以與頁面交互。5.Struts 的核心控制攔截http請求,根據請求分派Action去處理請求。
6.Action交給業(yè)務邏輯組件處理。Action 接受到業(yè)務邏輯組件處理后的結果(一般是VO或VO數(shù)組),再將返回的結果序列化成XML作為服務器的響應內容。核心控制器再將響應內容返回給游覽器。
7.調用XMLHttpRequest注冊的回調函數(shù)。
8.回調函數(shù)解析響應內容XML文檔,在這里我們利用DOM將XML換成html格式數(shù)據流。利用DOM改變交互頁面的html節(jié)點。達到用戶的需求。
設計結果及對設計結果的分析
本系統(tǒng)是一個小組(3個人)合力設計的。我負責底層即Hibernate Dao層邏輯層,MVC層,PO 和DAO 的設計。故我們采用值對象(VO)作為我們的數(shù)據交流載體。我負責VO的處理,而胡愛梅負責數(shù)據的顯示即利用Jsp格式化從我設計業(yè)務邏輯層返回的數(shù)據。陳成負責搜索引擎的設計,他主要用到我設計的PO和外觀組件(Dao封裝體)去查詢實體。在設計的過程中溝通是非常重要的。為了更好地向胡愛梅同學提供更好的服務。在設計邏輯組件返回的數(shù)據時我利用VO或XML來封裝。利用DOM將XML格式轉化為html的一格節(jié)點或者將VO填充到Jsp的內置對象比如Session。在JavaScript中替換她在Jsp頁面定義的Html 節(jié)點。她轉發(fā)的請求參數(shù)統(tǒng)一利用ActionForm來封裝。而Struts 的核心控制器會幫我們填充。只要Action中將ActionForm換成我在Hibernate層定義的持久化對象PO就行了。再把PO交給facadeManger處理。這樣只要胡愛梅同學知道我設計的PO的結構并將PO填充的Session的那個屬性,她就可以將PO顯示在頁面上。而我只要知道她需要完成那些功能,即知道請求格式(請求的URL,ActionForm)和需要返回何種數(shù)據就行了。我便可以設計Action應該如何處理業(yè)務邏輯,再考慮將數(shù)據格式化成何種XML結構。并舉例如何解析XML數(shù)據,或者將PO(List
)填充到Session的屬性告訴她。為了更容易操控數(shù)據庫,及格式化查詢結果。我采用Hibernate 的DAO模式,利用Hibernate 查詢的結果本來就是一個對象或對象列表,這就更方便我數(shù)據系列化成xml文件了。
本系統(tǒng)基本上可以實現(xiàn)前面需求分析中所要求實現(xiàn)的功能。另外添加了mp3播放和像word軟件一樣的編輯器。
由于第一次利用Java開發(fā)程序,第一次開發(fā)web應用程序。第一次利用Spring、Hibernate、Struts、Ajax等技術或框架編寫程序,第一次利用MyEclipse 編寫java應用程序、第一次利用MySql作為數(shù)據庫系統(tǒng)。種種第一次,使的我在設計本系統(tǒng)困難重重。下面詳細講述我在開發(fā)過程中所遇到的問題和我的解決方案。1.到處出現(xiàn)亂碼。為次我必須統(tǒng)一我的編碼方式。
我統(tǒng)一采用UTF-8作為我的編碼方式。并且在ActionServlet將請求轉發(fā)的時候先將request的編碼統(tǒng)一設為UTF-8,這樣還是不能將Actionform 的亂碼解決。ActionForm的編碼是ISO-8859-1 為此我可以采用String類提供的構造函數(shù)解決。比如ActionFom的String屬性str,我通過new String(ActionForm.getStr().getByte(“ISO-8859-1”),”UTF-8”)可以將ActionForm轉為UTF-8。開始裝MySql 時就要設定 數(shù)據庫建表時表所用到的編碼。同樣設為UTF-8,開始我有些Form是采用Struts的DynaActionForm,這樣可以少寫個ActionForm類。但DynaActionForm的編碼不確定。最后我只能將DynaActionForm改為ActionForm的類。對于Struts 不能攔截的請求我們統(tǒng)一采用Actionform一樣的方式。
利用Validator驗證失敗能返回到指定的頁面上去。
input=“/registadmin.jsp ” validate=“true”>
Struts 失敗驗證后Struts 不會將請求交給registAction處理直接轉到input定義下的/registadmin.jsp頁面上。而事實并不能轉發(fā),而是轉到一個空白頁面,由于驗證成功可以轉發(fā),所以,其他一切都沒錯,只能是Action 的配置有錯。將input=“/registadmin.jsp ” 改為input=“input”,定義input為一個forward 這樣可以解決問題。在input屬性直接配置他jsp頁面是從書上將的。從這可以得出只有實驗才體驗框架的工作原理。2.圖片上傳
圖片上傳需要解決兩個問題,1圖片以什么形式出現(xiàn)在MySql中?以Blob,還是圖片的一個路徑名。博主將 圖片上傳到服務器,將圖片的路徑名保存到
MySql數(shù)據庫中。我采用Struts提供的FileForm 作為上傳圖片ActionForm的文件屬性,在Action處理時通過FileForm.getfile()得到該文件2,怎么產生路徑名?為了不使圖片的名稱一樣我采用以時間和用戶名兩個參數(shù)隨機產生一個字符串作為圖片的路徑名。激將上傳圖片統(tǒng)一保存到一個特定的文件夾內。最后在表單中必須有 enctype=“multipart/form-data”這樣可以讓Jsp知道表單含有大量數(shù)據要上傳。3.博文字數(shù) 多時不能就博文提交。
必須把寫博文的表單中method設為post而不是get,因為get只是在提交請求 時帶些參數(shù)而已。
4.一個對象不能同時在兩個Session中,由于我開始沒有將查詢作為一個事務處理。后來將曾經查詢過的對象作一些修改。由于對象的修改是在一個事務管理中。查詢和修改不在一個事務管理中,則修改時事務管理重新開啟一個Session。將對象保存到數(shù)據庫中,這時一個對象同時在兩個Session中,JDBC是不支持的。要修改對象,以前需要查詢操作,由于利用了Spring 的事務管理,這就必須將兩次操作放到一個事務中。
5.在blog主頁面的所有Jsp頁面刷新后的mp3重新播放
由于在mp3播放的頁面中是采用在頁面中嵌入
由于本系統(tǒng)的jsp容器是Tomcat,系統(tǒng)設計也采用輕量級的Hibernate,而不是EJB所以在群集,負載均衡、安全性、事務、系統(tǒng)管理都不很理想。數(shù)據庫的連接池也不能很大,因為tomcat 不便管理。在本系統(tǒng)的數(shù)據庫中只采用了一級緩存Session 沒有啟動二級緩存SessionFactory,由于大量重復數(shù)據的查詢,性能可能有所降低。對于頁面的分頁處理,一般有兩種,一種是物理分頁,利用Sql語句向數(shù)據庫查詢指定那個頁面所需要的數(shù)據,對于種方式由于數(shù)據庫的差異,數(shù)據庫提供的offset也不同,對于明確數(shù)據庫的項目來說,物理分頁在性能上講顯然比邏輯分頁要來的好。第二種是邏輯分頁,通過sql語句查詢所有數(shù)據,再利用for語句讀取用戶所需要的數(shù)據,查詢數(shù)據全部提交給客戶端,還是將當前頁面的數(shù)據相應客戶端,是不好選擇,因為如果全部相應,則用戶可能只關心一部分,浪費了大量帶寬,將當前數(shù)據提交給客戶端則客戶可能還關心其他數(shù)據,便再次相應服務器,要求得到其他數(shù)據,數(shù)據都在服務器的緩存中,加重服務器的壓力,我選擇的是將數(shù)據全部相應客戶端。
全文總結
本文從博客網站的所需要實現(xiàn)的功能模塊開始分析,決定使用Java開發(fā)博客網站。并利用JDK,Tomcat,MyEclipse,MySQL等軟件來搭建開發(fā)環(huán)境,我的主要任務利用Java技術的Spring、Hibernate、Struts等開源框架設計J2EE三層結構的中業(yè)務邏輯層和數(shù)據服務層,blog網站以Spring 框架為核心,向下整合Hibernate 進行持久層訪問;向上整合Struts 按清晰的MVC 模式控制。這樣可以更快開發(fā)松散耦合的blog 網站。
由于沒接觸過Java,還有一些軟件還沒用過,如MyEclipse,因此完成此次畢業(yè)并不容易。通過摸索、翻閱并購買了大量相關參考資料,讓我java 技術有了一定的了解。比較圓滿地完成了本次畢業(yè)設計的任務,達到了此次畢業(yè)設計的目的和要求。
通過這次畢業(yè)設計學會利用java構建Web 網站,在畢業(yè)設計中接觸過不少開源框架。開源框架的強大讓我覺得還有很多技術需要去學習,這也讓我明白,要不斷地學習新知識才會利于自己各方面的發(fā)展。還讓我體會到在項目小組里沒有比溝通更重要
致謝
在論文結束之際,首先要感謝我的指導老師戴祖旭教授,在我的論文設計以及實現(xiàn)過程中均給了我大量的幫助和指導,他嚴謹?shù)木礃I(yè)精神和治學態(tài)度給我留下了深刻的印象。從他身上,我學到了許多能使我受益終身的東西,再次對戴老師表示衷心的感謝。
感謝理學院領導以及老師給我們創(chuàng)造的良好的學習環(huán)境和諸多幫助。
感謝父母,兄弟姐妹對我學業(yè)的支持;感謝寢室同學對我學習生活的諸多幫助。感謝的人太多,只能說感謝所有給我關心、幫助和支持的人們。
第四篇:java個人簡歷
個人簡歷
個人信息
姓 名:張x
性別: 男 專業(yè): 軟件技術 年齡:23 學歷: 電 話:111111111 Email:xxxxxxx@126.om現(xiàn)住址:北京市海淀區(qū)
擇業(yè)目標
Java軟件工程師
專業(yè)技能
? 精通 COREJAVA
? 熟練掌握 Hibernate,struts
? 熟練掌握
? 熟練應用;
?熟悉
?熟悉
?了解,;
?了解……
主要工作經歷
XXXX年XX月—XXXX年XX月XX公司XX
項目經驗
XXXX年XX月—XXXX年XX月XX公司XX 項目名稱1:XXX
項目描述:
責任描述:
開發(fā)環(huán)境:
項目名稱2:XXX
項目描述:
責任描述:
開發(fā)環(huán)境:
項目名稱3:XXX
項目描述:
責任描述:
開發(fā)環(huán)境:
……
個人情況
性別:X
年 齡:XX現(xiàn)住址:XXX 培訓經歷
XXXX年XX月—XXXX年XX月XXXX軟件工程師
教育背景
XXXX年XX月—XXXX年XX月XXX大學XX專業(yè)???/p>
自我評價
第五篇:java簡歷
姓名
男 |1989 年1月生 | 戶口:河北承德 | 現(xiàn)居住于北京-海淀區(qū)
團員(入黨積極分子)| 身份證:xxxxxxxxxxxxxxxxxx
電話:***(手機)E-mail: 598802631@qq.com
求職意向
·工作性質: 全職
·期望職業(yè): 軟件測試、研發(fā)工程師、軟件工程師、其他
·期望行業(yè): 計算機軟件
·工作地區(qū): 北京
·目前狀況: 我目前處于離職狀態(tài),可立即上崗
自我評價
簡而言之,我認為我有如下的優(yōu)點:目標管理能力較好、團隊意識較強、有企業(yè)歸屬感、踏實勤奮、自學能力強、溝通能力好、社會經驗較多。
四年的計算機學習使我對軟件行業(yè)充滿了憧憬,為了使自己能快速的融入這個行業(yè),并獲得一個較高的起點,我選擇了工信部藍橋計劃(專業(yè)Java軟件工程師培訓)來充實和提升自己。經過4個月的項目實戰(zhàn)培訓,我對Java有了全新的認識,也對軟件開發(fā)有了全新的認識。
Java是一個特別適合團隊協(xié)作的語言,1+1>2是我們的共同的目標,我是團隊的一員,我有義務為了達到我們共同的目標而努力。
本人大學期間曾在必勝客兼職一年半,雖然工作很累,薪水也不高,但我看重的是他們的企業(yè)文化和企業(yè)氛圍。這段工作經歷,使我積累了很多的工作經驗,培養(yǎng)了我溝通能力,協(xié)調能力。我認為我的付出是值得,我感謝每一次曾經給我機會的企業(yè)和個人,我永遠會懷著一個感恩的心認真工作。
工作經歷
2012/08--2012/10
國信藍點科技有限公司|軟件工程師
工作描述:開發(fā)工具是MyEclipse+oracle+sqlplus
通過這幾個月的實踐,能夠熟練地運用myEclipse、Eclipse,sqlplus工具,hibernate,struts,spring這三大框架實現(xiàn)了三層結構的調度.能夠獨立的完成小型管理系統(tǒng)的制作,.熟練掌握XHTML、CSS和AJAX等前端頁面開發(fā)技術,javase(在線聊天系統(tǒng),網絡版坦克大戰(zhàn))web,oracle(在線購物系統(tǒng))javaee(各個平日的辦公應用,OA辦公系統(tǒng))等十幾個開發(fā)項目,通過每日一練,每周一做,每月大總結,積累了大量的項目經驗和實戰(zhàn)經驗!
項目名稱:在線購物系統(tǒng)開發(fā)
軟件環(huán)境:WindowsXP + JSP + Struts + Hibernate +Spring+ Oracle
開發(fā)工具:MyEclipse
項目描述:
該項目是一個B2C模式的購物網站,主要用于出售各種商品,系統(tǒng)功能可分為:用戶模塊,產品模塊,購物車模塊和訂單模塊。用戶模塊有驗證登錄和注冊信息,修改信息。產品模塊有產品分頁展示,產品搜索,產品的增加和刪除以及修改。只有用戶登錄后,才能進行購買和下訂單。本項目基于B/S架構下的MVC模式,分為展現(xiàn)層、控制層、業(yè)務層和數(shù)據庫訪問層。采用的技術有JSP、AJAX、Struts、Hibernate、Log4J和JUnit等技術,其中展現(xiàn)層使用JSP和Struts標簽,對于用戶登錄和用戶注冊等實時性要求較高的界面使用AJAX,進一步提高用戶體驗度;使用Struts的Action充當控制層,負責接收用戶的輸入請求并負責調度和控制整個流程的流轉;數(shù)據訪問層借助于Hibernate實現(xiàn),代碼簡潔且可適應不同的數(shù)據庫。
項目中指責:產品模塊的開發(fā),并和團隊成員共同分析、解決項目中出現(xiàn)的問題。最后整合各個模塊之間出現(xiàn)的問題。
體會:
1、關鍵是業(yè)務邏輯分析清楚再著手編程會事半功倍,2、自己在業(yè)務邏輯分析上有一定的思想。
項目名稱:點餐支付系統(tǒng)
周期:1個月
軟件開發(fā)環(huán)境:window xp+myeclipe+oracle+jdk6.0+Tomcat
實用技術:spring+struts2+hibernate+log4j+Ajax+jsp
項目描述:
摒棄火鍋城傳統(tǒng)服務員手寫菜品信息,然后服務員送菜單到后臺繁瑣過程的弊端,運用oracle數(shù)據庫存儲信息,jsp界面錄入和顯示,struts2完成轉發(fā),根據spring的配置文件采用多模塊的集成方式完成,按功能劃分模塊。
主要功能描述:
1.前端頁面顯示該店的菜品及菜品圖片和相應的詳細信息,用戶通過菜單選取菜品,顧客點單確定后,服務員確認以點菜品和酒水,待確認后,在前臺界面錄入臺號和以點物品,運用加cookie的技術記錄菜品信息,錄入完畢后 ,一并提交給后臺處理。
2.前臺提交的信息分類生成總表單,然后分類轉發(fā)各個生產部門,已完成菜品及酒水的服務。
3.經理登陸后可以根據消費的總金額和優(yōu)惠級別進行對應的優(yōu)惠操作。收銀員根據菜單及消費詳單進行相應收費。
4.促銷界面顯示火鍋城的相應新菜品和催銷,推銷產品,由點餐員工進行相應的促銷和點餐調整工作。項目中我的職責:
1.將以點菜品和酒水保存并分配到后臺各個工作站進行制作
2.進行酒水和菜品等的價格合計(不包括打折和其他的優(yōu)惠)。
3.統(tǒng)計本次消費菜品和酒水的記錄,同時可以查看當天相應產品的銷售狀況和庫存量,來及時的調整促銷和訂貨。
項目總結:
通過本次的項目,雖然各司其職,但還是需要及時的與其余的人員交流,我主要是和訂貨系統(tǒng)和前臺銷售系統(tǒng)的制作人員交流,深入的知道了團隊里面的每個人都是項目里的一塊基石,只有每塊石頭都穩(wěn)固才可以完成整個項目。再次重審的是書寫規(guī)范性的重要性和團隊協(xié)作的重要性。
在校學習情況
曾獲
院校級二等獎學金
2008/10
三好學生|縣市級
在校期間,學習成績優(yōu)異,積極的承擔了學習委員的職位,自己組織班級學生周日補課,并多次帶全班同學去養(yǎng)老院做義務工,得到了全校老師的認同,特別給予三好學生稱號!
培訓經歷
2012/07--2012/1
1培訓課程:java全部課程
所獲證書:軟件初級工程師,DB2認證,計算機等級證書
培訓地點:北京國信藍點
詳細描述:我通過在藍橋計劃學習,現(xiàn)在能夠熟練掌握Java、JSP/Servlet,熟悉XML、JavaScript等語言;熟悉J2EE相關技術JPA、JNDI等,了解Web Service技術;熟練掌握Struts、Hibernate開源框架,熟悉Spring、JUnit、JQuery工具,熟悉Oracle數(shù)據庫的開發(fā)和標準SQL語法,熟練使用myEclipse、sqlplus,mysql等工具;在此期間學會了軟件集成技術,能夠熟練地運用三大框架,在此期間參與了在線在購物系統(tǒng),和一個公司的管理系統(tǒng)制作,在學習期間就將學習與應用能力相結合,能夠適應各種程序的制作并在此期間積累了大量的工作經驗。
在校實踐經驗
2011/09--2012/03
初級java程序員 | 通過半年的在校實踐,本人主要是負責機房設備維護和簡單的java程序編寫,王老師等人負責學校選課系統(tǒng)的編制工作,并在此期間和我們講解相關的知識點和需要技能,在此期間我主要學會了jsp頁面的簡單制作和jsp頁面的美化工作,因為以前對java知識的匱乏,每天要不停的學習JAVASE基礎知識,并沒有掌握過多的個框架的聯(lián)合使用技術??傮w來說,本人更深入的了解了java的用途和前景,為今年在國信藍點深入的學習打下了良好的基礎。
證書
2012/09
全國計算機應用技術證書
2012/09
初級工程師
2012/09
程序員
2010/09
全國計算機等級二級
2012/10
IBM db2-302a合格認證
2010/03
全國計算機等級一級
2010/12
大學英語四級
證書說明:英語四級497分
2012/01
普通話等級證書
證書說明:二級甲等
語言能力
英語:讀寫能力熟練|聽說能力良好
特殊技能
我自信有很好的團隊協(xié)作能力和交際能力,在大二上學期我加入了百勝企業(yè)(必勝客)開始了兼職生活,在必勝客的一年零八個月的時間里,上班的時候基本上每次來回騎車二十公里,即使這樣我也從來沒有放棄過,因為很好的團隊能力和耐心的培訓能力,很快的升到組長(兼職最高職位)的職位,在這段時間有深深的體會到了團隊協(xié)作的重要性,我深知一個人的能力只能是代表自己,一個團隊的協(xié)作能力才是組織的靈魂所在。通過那段時間的鍛煉與深造,我能夠獨立的解決學費和生活費,還自己攢錢報了駕校。
除此之外,二零一零年七月初到八月末在北京懷柔區(qū)歐曼汽車配件廠當過機器控制員,負責半自動化機器的生產和維護工作,我自信能夠適應北京的快節(jié)奏生活,能夠吃苦耐勞。
我有很好的自學能力,計算機二級和java基礎都是自己學完成?,F(xiàn)在專業(yè)的學習了java技術,自信能夠成為一個好的程序員,希望您能給我一次展現(xiàn)自我的機會,我一定會全身心的投入到工作中去,不辜負您的期盼!
尊敬的領導,期待您的慧眼垂青!靜候佳音!
祝:貴單位事業(yè)興旺!