目錄
2 開發技術及開發環境
2.1 Java語言簡介
2.2 J2EE技術介紹
2.3 Servlet/JSP技術
2.4 MVC 簡介
2.5 Struts 技術
2.6 Hibernate 技術
2.6.1?應用程序的分層體系結構
2.6.2 Hibernate的應用及API簡介
2.7 開發環境及環境配置
2.7.1 Java/JSP系統環境
2.7.2 JSP環境的安裝和環境變量的設置
2.7.3?Eclipse開發工具
2.7.4 Tomcat服務器
2.8 數據庫開發工具選擇及配置
前面內容請移步
基于JSP/Servlet校園二手交易平臺(一)
免費資源+源代碼+畢業論文
校園二手平臺項目
2 開發技術及開發環境
2.1 Java語言簡介
????????Java語言是美國Sun公司于1995年推出的一種簡單的、面向對象的、分布式的、可解釋的、鍵壯的、安全的、結構的、中立的、可移植的、性能很優異的多線程的、動態的語言。其前身為OAK語言,是SUN公司為一些消費性電子產品而設計的一個通用環境。他們最初的目的只是為了開發一種獨立于平臺的軟件技術。經過Sun公司的工程師的不懈努力以及全世界無數的編程愛好者的使用,Java終于發展成為今天這樣一個集桌面(J2SE)、網絡(J2EE)、移動平臺(J2ME)應用為一體的功能強大的編程語言。目前Java由于其平臺無關及分布式特性,最重要的應用是在網絡應用上[1]。
2.2 J2EE技術介紹
????????J2EE技術是Java網絡應用的技術,廣泛應用于企業級的應用。它是由一套規范(shannin,2001)和建立在J2SE平臺上的應用編程接口(API)組成。J2EE擁有Sun公司提供免費開發工具,稱為J2EE軟件開發工具包(Software Development Kit,SDK )(http://java.sun.com/j2ee)。J2EE技術是一種Java網絡應用技術的組合,包含有遠程方法調用(Remote Method Invocation,RMI)、Java消息服務(Java Message Service,JMS)、JavaMail等通信服務,JDBC、Java命名和目錄接口(Java naming and Directory Interface,JNDI)、Java連接器體系結構(Java Connector Architecture,JCA)、Java事務API/Java事務服務(JTA/JTS)、XML處理API等通用服務以及Servlet、Java服務器頁面(JSP)、企業級JavaBean(EJB)等組件技術。任何J2EE的實現都必須要在其特定容器中實現。?
2.3 Servlet/JSP技術
????????Servlet是JSP技術的基礎,JSP本身就是預先被編譯成Servlet,然后再運行的,而且大型的Web應用程序的開發需要Java Servlet和JSP配合才能完成。?Servlet其實和傳統的CGI程序和ISAPI、NSAPI等Web程序開發工具的作用是相同的,在使用Java Servlet以后,用戶不必再使用效率低下的CGI方式,也不必使用只能在某個固定Web服務器平臺運行的API方式來動態生成Web頁面。許多Web服務器都支持Servlet,即使不直接支持Servlet的Web服務器也可以通過附加的應用服務器和模塊來支持Servlet。JSP(JavaServer Pages)是一種基于Java的腳本技術。在JSP 的眾多優點之中,其中之一是它能將?HTML 編碼從?Web 頁面的業務邏輯中有效地分離出來。用?JSP 訪問可重用的組件,如?Servlet、JavaBean 和基于?Java 的?Web 應用程序。JSP 還支持在?Web 頁面中直接嵌入?Java 代碼。可用兩種方法訪問?JSP 文件:瀏覽器發送?JSP 文件請求、發送至?Servlet 的請求。?
????a) JSP 文件訪問?Bean 或其它能將生成的動態內容發送到瀏覽器的組件。
????????b) 發送至?Servlet 的請求生成動態內容,并調用?JSP 文件將內容發送到瀏覽器。該訪問使得將內容生成從內容顯示中分離出來更為方便。
????????JSP最大的優點在于其與平臺無關性,具有“一次編寫,處處運行”的特點。
2.4 MVC 簡介
????????模型-視圖-控告器(MVC)是20世紀80年代Smalltalk-80出的一種軟件模式,現在已經被廣泛使用。
? ? ? ? 1.?模型(Model)
模型是應用程序的主體部分。模型表示業務數據,或者業務邏輯。
? ? ? ? 2.?視圖(View)
視圖是應用程序中用戶界面相關的部分,是用戶看到并與之交互的界面。
? ? ? ? 3.控制器(Controller)
控制器的工作就是根據用戶的輸入,控制用戶界面顯示和更新模型對象的狀態。典型的MVC模式所包含的模塊、每個模塊的功能以及模塊之間的關系如圖2-1所示[2]:
圖2-1 MVC組件的關系和功能
????????MVC模式的出現不僅實現的功能模塊和顯示模塊的分離,同是賽馬場還提高了應用系統的可維護性、可擴展性、可移植性和組件的可利用性。
????????在早期的程序中,如果不注意對數功能和顯示的解耦合,常常估導致程序的復雜及難以維護,像VB,Delphi等RAD程序都有這種問題。甚至現在有C#,Java有時候也會出現把業務邏輯寫在顯示模塊中的現象。
????????盡管MVC設計模式很早的提出了,但在Web項目的開發中引入MVC卻是步履艱難。主要原因是在早期的Web項目開發中,程序語言和Html的分離一直難以實現,CGI程序以字條串輸出的形式動態的生成html內容。直到基于J2EE的JSP Model2問世時才得以改觀。它用JSP技術實現視圖的功能,用Servlet技術實現控制器的功能,用JavaBean實現模型的功能。JSP Model2 結構如圖2-2所示:
圖2-2 JSP Model2 結構圖
????????在Model 2這種框架結構中,Servlet作為控制器負責處理用戶的請求以及創建JSP頁面中所有要使用的Bean對象,并且還要根據用戶的請求來返回到不同的JSP頁面。
????????在使用Model 2開發框架時,一定要保證在JSP頁面中不能包含任何的業務處理邏輯。它只是簡單地得到對象或者在Servlet中創建的Bean,然后通過這些動態的內容來生成動態顯示的頁面。
????????Struts 本質上就是在Model 2的基礎上實現一個MVC架構,它只有一個中心控制器,采用定制轉向的URL并采用Action來處理邏輯。
2.5 Struts 技術
????????Struts是一個為開發基于模型(Model)-視圖(View)-控制器(Controller)(MVC)模式的應用架構的開源框架,是利用Java Servlet和JSP構建Web應用的一項非常有用的技術。首先事件是指從客戶端頁面(瀏覽器)由用戶操作觸發的事件,Struts使用Action來接受瀏覽器表單提交的事件,這里使用了Command模式,每個繼承Action的子類都必須實現一個方法execute。
????????struts重要的表單對象是ActionForm,它代表了一種應用,這個對象中至少包含幾個字段,這些字段是Jsp頁面表單中的input字段,因為一個表單對應一個事件,所以,當我們需要將事件粒度細化到表單中這些字段時,也就是說,一個字段對應一個事件時,單純使用Struts就不太可能,當然通過結合JavaScript也是可以轉彎實現的。
????????Struts是一個基于Sun J2EE平臺的MVC框架,主要是采用Servlet和JSP技術來實現的。Struts把Servlet、JSP、自定義標簽和信息資源(message resources)整合到一個統一的框架中,開發人員利用其進行開發時不用再自己編碼實現全套MVC模式,極大的節省了時間。
????????Struts包含了一組想相互協作的類、Servlet和JSP標記,它們共同組成了一個可重用的MVC模板。通過定義可以看出,Struts是Web應用的開發框架,Struts包含豐富的標記庫和獨立于該框架工作的實用程序類。圖2-3 顯示了Struts的基本結構。
圖 2-3 Struts基本結構
????????通過圖 2-3可以看出,采用Struts框架結構的Web應用程序主要由控制器、業務邏輯、模型和視圖組成。其中的控制器、模型和視圖為Struts框架的主要組成部分,而事務邏輯則是我們需要實現的系統業務邏輯處理部分。
2.6 Hibernate 技術
2.6.1?應用程序的分層體系結構
????????隨著計算機應用軟件的發展,應用程序逐漸由單層體系結構發展為多層體系結構。其中,三層結構是目前典型的一種應用軟件結構。
????????表述層:提供與用戶交互的界面,如GUI(圖形用戶界面),web頁面等;
????????業務邏輯層:負責各種業務邏輯,直接訪問數據庫,提供對業務數據的保存、更新、刪除和查詢操作;
????????數據庫層:負責存放管理應用的持久性業務數據。
????????三層結構的特點是:所有下層向上層提供調用的接口,具體實現細節對上層透明。層與層之間存在自上而下的依賴關系,即上層會訪問下層的API,但下層不依賴于上層。
????????分離出的持久化層封裝了數據訪問細節,為業務邏輯層提供了面向對象的API[2]。
????????持久(Persistence),即把數據(如內存中的對象)保存到可永久保存的存儲設備中(如磁盤)。持久化的主要應用是將內存中的數據存儲在關系型的數據庫中,當然也可以存儲在磁盤文件中、XML數據文件中等等。
????????持久層(Persistence Layer),即專注于實現數據持久化應用領域的某個特定系統的一個邏輯層面,將數據使用者和數據實體相關聯。
????????三層軟件結構如圖2-4所示:
圖2-4 三層軟件結構圖
????????數據庫的讀寫是一個很耗費時間和資源的操作,當大量用戶同時直接訪問數據庫的時候,效率將非常低,如果將數據持久化就不需要每次從數據庫讀取數據,直接在內存中對數據進行操作,這樣就節約了數據庫資源,而且加快了系統的反映速度。增加持久化層提高了開發的效率,使軟件的體系結構更加清晰,在代碼編寫和系統維護方面變得更容易。特別是在大型的應用里邊,會更有利。同時,持久化層作為單獨的一層,人們可以為這一層獨立的開發一個軟件包,讓其實現將各種應用數據的持久化,并為上層提供服務。從而使得各個企業里做應用開發的開發人員,不必再來做數據持久化的底層實現工作,而是可以直接調用持久化層提供的API。
2.6.2 Hibernate的應用及API簡介
????????Hibernate是一種Java語言下的對象關系映射解決方案。它是一種自由、開源的軟件。它用來把對象模型表示的對象映射到基于SQL的關系模型結構中去,為面向對象的領域模型到傳統的關系型數據庫的映射,提供了一個使用方便的框架。
????????Hibernate不僅管理Java類到數據庫表的映射(包括從Java數據類型到SQL數據類型的映射),還提供數據查詢和獲取數據的方法,可以大幅度減少開發時人工使用SQL和JDBC處理數據的時間。
????????Hibernate對JDBC進行了非常輕量級的對象封裝,使得Java程序員可以隨心所欲的使用對象編程思維來操縱數據庫。Hibernate可以應用在任何使用JDBC的場合,它既可以在Java的客戶端程序使用,也可以在Servlet/JSP的Web應用中使用。最具革命意義的是,Hibernate可以在應用EJB(EnterpriseJavaBeans是Java應用于企業計算的框架)的J2EE架構中取代CMP,完成數據持久化的重任。
????????Hibernate使用 Java 反射機制 而不是字節碼增強程序來實現透明性。Hibernate 的性能非常好,因為它是個輕量級框架。映射的靈活性很出色。Hibernate支持各種關系數據庫,從一對一到多對多的各種復雜關系。Hibernate核心接口如圖2-5所示:
圖2-5 Hibernate核心接口框圖
2.7 開發環境及環境配置
2.7.1 Java/JSP系統環境
????????開發及測試的系統環境,我選擇了Microsoft Windows Advanced Server 2000。由于其本身就是為服務器版的,適合用于搭設成為服務器端。要開發JSP,首先必須要求有Java環境,我選擇了JavaTM Platform, Standard Edition 6?Development Kit。
????????作為JSP的容器,選擇了目前非常流行的Tomcat 6.0。而IDE工具則選擇了Eclipse(MyEclips)。
2.7.2 JSP環境的安裝和環境變量的設置
????????首先安裝JDK,安裝Tomcat。
????????接下來配置環境變量:右鍵點擊“我的電腦”,在彈出的菜單中點“屬性”,在系統特性里選擇“高級”,找到“環境變量”,點擊進入后,“系統變量”就是我們需要設置的地方。
? ? ? ? 1、新建變量CATALINA_HOME,變量值為:
????????????????D:\apache-tomcat-6.0.18
? ? ? ? 2、新建JAVA_HOME變量,然后在變量值中輸入以下內容:
????????????????C:\Program Files\Java\jdk1.6.0_12
? ? ? ? 3、編輯path變量:在原有的變量值后添加JDK的BIN目錄
????????????????%JAVA_HOME%\bin;%CATALINA_HOME%\BIN
2.7.3?Eclipse開發工具
????????Eclipse平臺體系結構主要由5部分組成,分別是平臺運行庫、工作區、工作臺、團隊支持和幫助。
????????在運行時內核是整個架構的核心,其他部件都是以插件方式來實現的。Eclipse采用動態加載機制,即只有需要的才加載,這樣可以降低啟動時間,提高資源使用效率。
????????工作空間插件即所謂的工作區,主要負責管理用戶資源,例如用戶創建項目的管理、文件變更等,并負責通知其他插件關于資源變更的信息。
????????工作臺插件是Eclipse 提供的用戶界面。它使用標準窗口工具包(SWT)和一個更高級的API(JFace)構建的。SWT是Java的Swing/AWT的非標準替代者,JFace則以SWT為基礎,但更易于使用。
????????團隊支持插件負責提供版本控制和配置管理支持。它允許用戶根據需要添加視圖,并與允許用戶使用的任何版本控制系統交互。
????????幫助插件允許以HTML文件形式添加文檔,并提供了一個附加的導航結構以便用戶使用幫助功能搜索相關信息。
2.7.4 Tomcat服務器
????????Tomcat是Sun的JSWDK(Java?Server Web Development Kit)中Servlet的運行環境(servlet容器)。Tomcat是Apache Jakarta軟件組織的一個子項目,Tomcat是一個JSP/Servlet容器,它是在SUN公司的JSWDK(Java Server Web Development Kit)基礎上發展起來的一個JSP和Servlet規范的標準實現,使用Tomcat可以體驗JSP和Servlet的最新規范。經過多年的發展,Tomcat不僅是JSP和Servlet規范的標準實現,而且具備了很多商業Java Servlet容器的特性,并被一些企業用于商業用途[4]。
Tomcat目錄如下:
Tomcat_home
|---bin Tomcat:存放啟動和關閉tomcat腳本;
|---conf Tomcat:存放不同的配置文件(server.xml和web.xml);
|---doc:存放Tomcat文檔;
|---lib/japser/common:存放Tomcat運行需要的庫文件(JARS);
|---logs:存放Tomcat執行時的LOG文件;
|---src:存放Tomcat的源代碼;
|---webapps:Tomcat的主要Web發布目錄(包括應用程序示例);
|---work:存放jsp編譯后產生的class文件;
2.8 數據庫開發工具選擇及配置
????????目前數據庫的開發工具,大、中、小型的有很多,比如Oracle、MS SQL Server2000、DB2、MySQL、Access等等許多關系數據庫,在系統開發初期,我用SQL server2000 進行數據庫連接,因為可以于Windows 2000服務器系統很好的兼容,并且對大并發訪問有很好支持,功能強大且使用簡單,然而在后期的開發中,由于經常更換設計環境,而且自己用到Hibernate,對軟件有一定要求,每次系統移植都要花很多時間配置環境,所以又更換了移植性很好的MySQL做數據庫。
????????MySQL是一個小型關系型數據庫管理系統,被廣泛地應用在Internet上的中小型網站中。由于其體積小、速度快、總體擁有成本低,尤其是開放源碼這一特點,許多中小型網站為了降低網站總體擁有成本而選擇了MySQL作為網站數據庫。
????????與其他的大型數據庫例如Oracle、DB2、SQL Server等相比,MySQL自有它的不足之處,如規模小、功能有限(MySQL Cluster的功能和效率都相對比較差)等,但是這絲毫也沒有減少它受歡迎的程度。對于一般的個人使用者和中小型企業來說,MySQL提供的功能已經綽綽有余,而且由于MySQL是開放源碼軟件,因此可以大大降低總體擁有成本[3]。
????????在本系統中,對MySQL的配置最重要是數據庫字符編碼設置,因為數據庫的錄入的大多是中文字符,默認編碼為GBK會減少許多操作,配置如下:
????????default-character-set=gbk
?