基于JSP/Servlet校園二手交易平臺(二)

目錄

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等通信服務,JDBCJava命名和目錄接口(Java naming and Directory Interface,JNDI)Java連接器體系結構(Java Connector Architecture,JCA)Java事務API/Java事務服務(JTA/JTS)XML處理API等通用服務以及ServletJava服務器頁面(JSP)、企業級JavaBean(EJB)等組件技術。任何J2EE的實現都必須要在其特定容器中實現。?

2.3 Servlet/JSP技術

????????Servlet是JSP技術的基礎,JSP本身就是預先被編譯成Servlet,然后再運行的,而且大型的Web應用程序的開發需要Java ServletJSP配合才能完成。?Servlet其實和傳統的CGI程序和ISAPINSAPIWeb程序開發工具的作用是相同的,在使用Java Servlet以后,用戶不必再使用效率低下的CGI方式,也不必使用只能在某個固定Web服務器平臺運行的API方式來動態生成Web頁面。許多Web服務器都支持Servlet,即使不直接支持ServletWeb服務器也可以通過附加的應用服務器和模塊來支持ServletJSPJavaServer Pages)是一種基于Java的腳本技術。在JSP 的眾多優點之中,其中之一是它能將?HTML 編碼從?Web 頁面的業務邏輯中有效地分離出來。用?JSP 訪問可重用的組件,如?ServletJavaBean 和基于?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 數據庫開發工具選擇及配置

????????目前數據庫的開發工具,大、中、小型的有很多,比如OracleMS SQL Server2000DB2、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

?

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:
http://www.pswp.cn/bicheng/15580.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/15580.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/15580.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

D365 SysDictTable\SysDictField

文章目錄 前言一、示例 前言 SysDictField 和 SysDictTable 用于訪問表和字段的元數據信息。 一、示例 循環表,使對應數據源的字段禁止編輯 public void fieldNoAllowEdit(Common _common,formDataSource fds,boolean aE false){TableId tab…

小程序-購物車-基于SKU電商規格組件實現

SKU 概念: 存貨單位( Stock Keeping Unit ), 庫存 管理的最小可用單元,通常稱為“單品”。 SKU 常見于電商領域,對于前端工程師而言,更多關注 SKU 算法 ,基于后端的 SKU 數據…

(二)vForm 動態表單設計器之下拉、選擇

系列文章目錄 (一)vForm 動態表單設計器之使用 目錄 系列文章目錄 前言 一、后端需提供接口 二、組件配置 總結 前言 動態表單下拉、選擇等組件,大概率要使用數據庫中的數據,那么vForm如何拿到數據庫中的數據呢?跟隨…

僵尸進程、孤兒進程、守護進程

【一】僵尸進程和孤兒進程 【1】引入 我們知道在unix/linux中,正常情況下,子進程是通過父進程創建的,子進程在創建新的進程。 子進程的結束和父進程的運行是一個異步過程,即父進程永遠無法預測子進程 到底什么時候結束。 當一個 進程完成它…

動物合并消除休閑游戲源碼 Animal Merge 益智游戲

一款動物合并消除休閑游戲源碼,Animal Merge是一款引人入勝的益智游戲,玩家的任務是合并方塊,創造出可愛的動物,這些動物的體型會逐漸變大。游戲玩法包括將方塊放到網格上,并戰略性地將它們合并以形成更大的動物形狀。…

作文筆記9 描寫方法

動態描寫: 威尼斯小艇,窗外的風景飛快的后退。 靜態描寫: 牧場之國,牛不再哞哞,馬忘記了踢馬房的擋板。 動靜結合: 火車進站,人聲鼎沸,叫賣聲,廣播聲,人…

【408精華知識】主存相關解題套路大揭秘!

講完了Cache,再來講講主存是怎么考察的,我始終認為,一圖勝千言,所以對于很多部件,我都是通過畫圖進行形象的記憶,那么接下來我們對主存也畫個圖,然后再來詳細解讀其考察套路~ 文章目錄 零、主存…

機器人正逆運動學、動力學概念

1.基本概念 建立機器人的正逆運動學和正逆動力學模型是為了解決不同類型的控制和規劃問題。這些模型幫助工程師和研究人員理解和預測機器人的行為,從而設計出更有效的控制策略和運動規劃。以下是建立這些模型的主要原因和一些應用實例: 正運動學模型 正…

python-pytorch 下批量seq2seq+Bahdanau Attention實現問答1.0.000

python-pytorch 下批量seq2seq+Bahdanau Attention實現簡單問答1.0.000 前言原理看圖數據準備分詞、index2word、word2index、vocab_size輸入模型的數據構造注意力模型decoder的編寫關于損失函數和優化器在預測時完整代碼參考前言 前面實現了 luong的dot 、general、concat注意…

【話題】我眼神的IT行業現狀與未來趨勢

目錄 一、挑戰 教學資源的重新分配 教師角色的轉變 學生學習方式的改變 教育評價體系的挑戰 二、機遇 個性化學習 跨學科學習 國際合作與交流 創新教育模式 三、如何培養下一代IT專業人才 更新教育理念 加強基礎設施建設 整合課程資源 加強實踐教學 培養跨學科…

easy-es EsAutoConfiguration RestHighLevelClient 沒有自動注入配置

我用的easy-es.version 是 2.0.0-beta1,是基于springboot2開發的,自動注入配置的目錄掃描的是META-INF/spring.factories文件;而我使用的框架是springboot3,springboot3掃描的是META-INF/spring/org.springframework.boot.autocon…

【算法刷題day57】Leetcode:739. 每日溫度、496.下一個更大元素 I

文章目錄 Leetcode 739. 每日溫度解題思路代碼總結 Leetcode 496.下一個更大元素 I解題思路代碼總結 草稿圖網站 java的Deque Leetcode 739. 每日溫度 題目:739. 每日溫度 解析:代碼隨想錄解析 解題思路 維護一個單調棧,當新元素大于棧頂&a…

【Linux】TCP協議【中】{確認應答機制/超時重傳機制/連接管理機制}

文章目錄 1.確認應答機制2.超時重傳機制:超時不一定是真超時了3.連接管理機制 1.確認應答機制 TCP協議中的確認應答機制是確保數據可靠傳輸的關鍵部分。以下是該機制的主要步驟和特點的詳細解釋: 數據分段與發送: 發送方將要發送的數據分成一…

vue深度選擇器(:deep?)

處于 scoped 樣式中的選擇器如果想要做更“深度”的選擇&#xff0c;也即&#xff1a;影響到子組件&#xff0c;可以使用 :deep() 這個偽類&#xff1a; <style lang"scss" scoped> .evaluation-situation-details :deep .cl-icon-arrow-right {display: none…

【Python 對接QQ的接口(二)】簡單用接口查詢【等級/昵稱/頭像/Q齡/當天在線時長/下一個等級升級需多少天】

文章日期&#xff1a;2024.05.25 使用工具&#xff1a;Python 類型&#xff1a;QQ接口 文章全程已做去敏處理&#xff01;&#xff01;&#xff01; 【需要做的可聯系我】 AES解密處理&#xff08;直接解密即可&#xff09;&#xff08;crypto-js.js 標準算法&#xff09;&…

JS根據所選ID數組在源數據中取出對象

let selectIds [1, 3] // 選中id數組let allData [{ id: 1, name: 123 },{ id: 2, name: 234 },{ id: 3, name: 345 },{ id: 4, name: 456 },] // 源數據let newList [] // 最終數據selectIds.map((i) > {allData.filter((item) > {item.id i && newList.pus…

websocket的壓縮和wireshark如何解碼tls

1. websocket的壓縮 見Compression EXPERIMENTAL那一節。 官方文檔&#xff1a;gorilla/websocket 2. 如何wireshark如何解碼tls 下文中代碼中去掉sudo。正常執行 Mac電腦安裝配置Wireshark 抓包工具&#xff0c;解決Https無法抓包問題_mac winshark抓不到-CSDN博客 如果…

aws sqs基礎概念和隊列參數解析

分布式隊列的組成部分 生產者&#xff0c;向隊列發送消息的組件消費者&#xff0c;接受隊列消息隊列&#xff0c;多個sqs服務器存儲冗余存儲消息 sqs自動刪除超過最大留存時間的消息&#xff08;默認4天&#xff09;&#xff0c;可以通過SetQueueAttributes調整為&#xff08…

【408真題】2009-13

“接”是針對題目進行必要的分析&#xff0c;比較簡略&#xff1b; “化”是對題目中所涉及到的知識點進行詳細解釋&#xff1b; “發”是對此題型的解題套路總結&#xff0c;并結合歷年真題或者典型例題進行運用。 涉及到的知識全部來源于王道各科教材&#xff08;2025版&…

JMH 微基準測試(性能測試)

寫本文主要是簡單記錄一下JMH的使用方式。JMH全名是Java Microbenchmark Harness&#xff0c;主要為在jvm上運行的程序進行基準測試的工具。作為一個開發人員&#xff0c;在重構代碼&#xff0c;或者確認功能的性能時&#xff0c;可以選中這個工具。 本文場景&#xff1a;代碼重…