【正文】
的開(kāi)發(fā)。它的設(shè)計(jì)目標(biāo)是將軟件開(kāi)發(fā)人員從大量相同的數(shù)據(jù)持久層相關(guān)編程工作中解放出來(lái)。MVC模式結(jié)構(gòu)清晰,現(xiàn)今已被大量運(yùn)用。Struts在英文中是“支架、支撐”的意思,這表明了Struts在Web應(yīng)用開(kāi)發(fā)中的巨大作用,采用Struts可以更好地遵循MVC模式。JSP具備了Java技術(shù)的簡(jiǎn)單易用,完全的面向?qū)ο?,具有平臺(tái)無(wú)關(guān)性且安全可靠,主要面向因特網(wǎng)的所有特點(diǎn)。網(wǎng)頁(yè)還能通過(guò)tags和scriptlets訪問(wèn)存在于服務(wù)端的資源的應(yīng)用邏輯。利用B/S結(jié)構(gòu)便于用戶(hù)在網(wǎng)上進(jìn)行查詢(xún)、訂票、退票等操作。這是實(shí)時(shí)性很強(qiáng)商業(yè)系統(tǒng)理想的選擇。能消除系統(tǒng)中的瓶頸,允許多臺(tái)服務(wù)器集成部署?;贘2EE的應(yīng)用程序不依賴(lài)任何特定操作系統(tǒng)、中間件、硬件。每一個(gè)供應(yīng)商都對(duì)現(xiàn)有的客戶(hù)提供了不用廢棄已有投資,進(jìn)入可移植的J2EE領(lǐng)域的升級(jí)途徑。 總體評(píng)價(jià) 就企業(yè)而言,內(nèi)部眾多系統(tǒng)的整合、系統(tǒng)的延展性、安全性是更需要注意的議題,而這些都是J2EE的優(yōu)勢(shì),也是微軟的不足處。事實(shí)上,由于實(shí)體EJB的load()和store()方法的同步機(jī)制,將大大緩解因并發(fā)而使數(shù)據(jù)庫(kù)產(chǎn)生的瓶頸。在結(jié)構(gòu)上,Windows (runtime framework)和組件模型 (ponent model)中。并且實(shí)現(xiàn)了多重接口繼承,擴(kuò)展的元數(shù)據(jù)和新的代理模型等。微軟的跨平臺(tái)解決方案是Web services,它解決的是異種平臺(tái)上不同應(yīng)用之間的連通性問(wèn)題。但它們的目的都是為了企業(yè)應(yīng)用提供分布式的、高可靠性的解決方案。(5)設(shè)計(jì)和實(shí)現(xiàn)系統(tǒng)的三層結(jié)構(gòu):表示層、業(yè)務(wù)邏輯層和數(shù)據(jù)服務(wù)層。然而,鐵路買(mǎi)票難問(wèn)題就顯得更為突出了。%,%,%,%的用戶(hù)因?yàn)閮r(jià)格便宜選擇了網(wǎng)上訂票。當(dāng)今世界信息技術(shù)飛速發(fā)展,人們?cè)絹?lái)越多地利用計(jì)算機(jī)技術(shù)、通信技術(shù)和Internet創(chuàng)建一個(gè)國(guó)際化、信息化、跨地域的商務(wù)活動(dòng)的便利環(huán)境來(lái)拓展商務(wù)經(jīng)營(yíng)。 通過(guò)網(wǎng)上售票的方式,可以大大提高售票的效率,減少乘客排隊(duì)購(gòu)票的時(shí)間。基于J2EE平臺(tái)的火車(chē)站網(wǎng)上售票系統(tǒng)的實(shí)現(xiàn)摘 要:隨著國(guó)民經(jīng)濟(jì)的快速發(fā)展,人們出行越來(lái)越頻繁,對(duì)服務(wù)的快捷、便利性要求也越來(lái)越高。 關(guān)鍵詞:售票系統(tǒng);J2EE;Struts;Spring;HibernateThe Implementation Of Online Ticketing System of Railway Station On J2EE PlatformAbstract:With the rapid development of the national economy, people travel more frequently. It bees higher and higher to the requirements of quick convenience service for people. In the business of selling tickets at the railway station, the problem of the ticket of hard purchase is the biggest one of the rail passenger services. If it can not be resolved for a long time, the result will inevitably lead to the continuous loss of passenger flow. With the rapid development of emerce, presenting a new type of ticket sale, online ticket sale, is not only technical innovation, but also will improve the railway services. It can solve this major problem of the ticket of hard purchase to a certain extent. The subject analyses the characteristic and demand of online ticketing system. It studies J2EE architecture and its related technologies deeply. Integrating J2EE39。在此背景下,產(chǎn)生了電子商務(wù),電子商務(wù)的產(chǎn)生是計(jì)算機(jī)和Internet的發(fā)展以及商務(wù)應(yīng)用需求的必然結(jié)果,已成為當(dāng)今商務(wù)發(fā)展的一大趨勢(shì)[1]。 國(guó)外現(xiàn)狀與發(fā)展早在20世紀(jì)70年代,歐美及日本等發(fā)達(dá)國(guó)家就開(kāi)始了計(jì)算機(jī)售票,英國(guó)的Tribute系統(tǒng)具有列車(chē)運(yùn)行時(shí)刻表管理、運(yùn)營(yíng)運(yùn)價(jià)算法管理、席位預(yù)訂、發(fā)售歐洲其他國(guó)家車(chē)票等功能。因此就需要開(kāi)發(fā)一個(gè)網(wǎng)上售票系統(tǒng)來(lái)解決這個(gè)問(wèn)題。(6)實(shí)現(xiàn)了用戶(hù)模塊和管理員模塊的功能。它們?cè)诩軜?gòu)上有著很多的相似之處[5],: 技術(shù)J2EE.NET通信協(xié)議RMI/IIOPXML編程語(yǔ)言JAVAC,COBOL運(yùn)行時(shí)環(huán)境JVMCLR胖客戶(hù)端Java SwingWindows Forms目錄服務(wù)JNDIADSI數(shù)據(jù)訪問(wèn)JDBC異步消息處理JMSMicrosoft Message Queue表示層技術(shù)Servlets,JSP中間層組建模型EJB,JavaBeanCOM+,COM安全訪問(wèn)JAASCOM+ Security事務(wù)處理JTSMSDTC開(kāi)發(fā)工具Jbuilder,EclipseVisual 技術(shù)比較(1)一對(duì)多 兩種平臺(tái)主流的開(kāi)發(fā)語(yǔ)言Java和C在架構(gòu)上有著相似之處:虛擬機(jī)技術(shù),基于沙箱的安全模型,分層的命名空間,垃圾回收等。但在現(xiàn)實(shí)中所更迫切需要的是如何在異構(gòu)的平臺(tái)上構(gòu)造具有可擴(kuò)展性、高可靠性、高可用性、故障冗余和錯(cuò)誤恢復(fù)能力的企業(yè)應(yīng)用。舊有的COM和COM+組件也可被映射到新的運(yùn)行環(huán)境中。在瘦客戶(hù)模型中,WML,XML作為表示層。也可以采用不屬于J2EE規(guī)范的第三方數(shù)據(jù)訪問(wèn)工具,象WebGain的TopLink。在效率方面,J2EE陣營(yíng)主張通過(guò)硬件的效能增加來(lái)彌補(bǔ)軟件的不足。由于基于J2EE平臺(tái)的產(chǎn)品幾乎能夠在任何操作系統(tǒng)和硬件配置上運(yùn)行,現(xiàn)有的操作系統(tǒng)和硬件也能被保留使用。因此設(shè)計(jì)合理的基于J2EE的程序只需開(kāi)發(fā)一次就可部署到各種平臺(tái)。這種部署可達(dá)數(shù)千個(gè)處理器,實(shí)現(xiàn)可高度伸縮的系統(tǒng),滿(mǎn)足未來(lái)商業(yè)應(yīng)用的需要。 B/S結(jié)構(gòu)系統(tǒng)實(shí)現(xiàn)的是網(wǎng)上售票的功能,需要借助于互聯(lián)網(wǎng),所以采用B/S結(jié)構(gòu),B/S結(jié)構(gòu)即瀏覽器和服務(wù)器結(jié)構(gòu)。 JSP技術(shù)系統(tǒng)的表示層采用的是JSP(Java Server Pages)技術(shù)。JSP將網(wǎng)頁(yè)邏輯與網(wǎng)頁(yè)設(shè)計(jì)和顯示分離,支持可重用的基于組件的設(shè)計(jì),使基于Web的應(yīng)用程序的開(kāi)發(fā)變得迅速和容易。自JSP推出后,眾多大公司都支持JSP技術(shù)的服務(wù)器,如IBM、Oracle、Bea公司等,所以JSP迅速成為商業(yè)應(yīng)用的服務(wù)器端語(yǔ)言。此外,Struts提供了一套完備的規(guī)范,以及基礎(chǔ)類(lèi)庫(kù),可以充分利用 JSP/Servlet 的優(yōu)點(diǎn),減輕程序員的工作量,具有很強(qiáng)的可擴(kuò)展性。Struts 通過(guò)提供一個(gè)控制器Servlet 實(shí)現(xiàn)了Sun的Model2架構(gòu),這個(gè)控制器可以用來(lái)管理JSP頁(yè)面和其他表現(xiàn)設(shè)備之間的流程。無(wú)論是從設(shè)計(jì)草案還是從一個(gè)遺留數(shù)據(jù)庫(kù)開(kāi)始,開(kāi)發(fā)人員都可以采用Hibernate。從簡(jiǎn)單性、可測(cè)試性和松耦合的角度而言,任何Java應(yīng)用都可以從Spring中受益。你可以認(rèn)為IoC與JNDI相反——不是對(duì)象從容器中查找依賴(lài),而是容器在對(duì)象初始化時(shí)不等對(duì)象請(qǐng)求就主動(dòng)將依賴(lài)傳遞給它。它們也為Spring中的各種模塊提供了基礎(chǔ)支持。(4)提供了與第三代高級(jí)語(yǔ)言的接口軟件PRO*系列,能在C,C++等主語(yǔ)言中嵌入SQL語(yǔ)句及過(guò)程化(PL/SQL)語(yǔ)句,對(duì)數(shù)據(jù)庫(kù)中的數(shù)據(jù)進(jìn)行操縱。由于有了Sun 的參與和支持,最新的Servlet和JSP規(guī)范總是能在Tomcat 中得到體現(xiàn),Tomcat5支持最新的Servlet 。Tomcat提供了可執(zhí)行程序的安裝程序,可以從其官方網(wǎng)站免費(fèi)下載。 系統(tǒng)的總體結(jié)構(gòu)設(shè)計(jì)根據(jù)J2EE體系結(jié)構(gòu)的特點(diǎn),開(kāi)發(fā)出基于J2EE、Struts、Hibernate、Spring、XML和Oracle三層模型架構(gòu)的網(wǎng)上火車(chē)站訂票系統(tǒng)。系統(tǒng)模塊具體功能描述如下:(1)用戶(hù)模塊的功能① 列車(chē)信息查詢(xún)用戶(hù)登陸成功后,通過(guò)選擇車(chē)次查詢(xún),就可對(duì)車(chē)次信息進(jìn)行查詢(xún),查詢(xún)方式的方式有兩種,分別為:車(chē)次查詢(xún)、站站查詢(xún)。 系統(tǒng)架構(gòu)說(shuō)明系統(tǒng)的架構(gòu)采用的是典型的J2EE三層結(jié)構(gòu),分為表現(xiàn)層、中間層(業(yè)務(wù)邏輯層)和數(shù)據(jù)服務(wù)層。 ③ DAO層,負(fù)責(zé)與持久化對(duì)象交互。數(shù)據(jù)庫(kù)的好壞將直接對(duì)應(yīng)用系統(tǒng)的效率以及實(shí)現(xiàn)的效果產(chǎn)生影響。(fankui)表字 段說(shuō) 明類(lèi) 型 ( 長(zhǎng) 度 )備 注Id編號(hào)Number不允許空,主鍵Userid用戶(hù)名Varchar(20)不允許空Info信息Varchar(20)不允許空IsAnswer是否回復(fù)Varchar(20)不允許空 系統(tǒng)開(kāi)發(fā)環(huán)境系統(tǒng)的開(kāi)發(fā)、測(cè)試平臺(tái)為Windows XP,經(jīng)測(cè)試最終可在多種平臺(tái)上運(yùn)行。保證了整個(gè)軟件開(kāi)發(fā)過(guò)程以面向?qū)ο蟮姆绞竭M(jìn)行,即面向?qū)ο蠓治?、設(shè)計(jì)及編程。 (2)5個(gè)持久化對(duì)象之間的關(guān)系Train和TrainPrice之間存在 1N 的關(guān)系,即每列車(chē)兩地間的車(chē)票價(jià)格是多樣的,每列車(chē)有不同的票價(jià)。public class Train implements {private Long trainId。 = trainTime。 } public void setTrainName(String trainName) { = trainName。 } public void setTrainPath(String trainPath) { = trainPath。其映射代碼如下:set name=users key column name=username/ /key onetomany class= //set set name=users 但這種配置會(huì)導(dǎo)致效率降低,因此可以通過(guò)在集合類(lèi)映射上指定 notnull=true來(lái)解決這個(gè)問(wèn)題:set name=users key column name=username/ /key onetomany class= notnull=true//set 對(duì)所有1N的關(guān)聯(lián)關(guān)系,建議不要使用“1”的一端控制關(guān)系,因此建議為set元素增加inverse= true 屬性,讓“N”的一端來(lái)控制關(guān)聯(lián)關(guān)系。所有的DAO類(lèi)都繼承HibernateDaoSupport,并實(shí)現(xiàn)相應(yīng)的DAO接口。+ ()+39。 return ().find(sql)。 return ().find(sql)。 部署DAO層應(yīng)用的DAO組件以 Hibernate和Spring為基礎(chǔ),由Spring容器負(fù)責(zé)生成并管理DAO組件。下面是UserService的部分源代碼:package 。 } public void setUserDao(UserDao userDao) { = userDao。 } }//取消訂票 public List login(String username, String password){ return (username, password)。 解決中文編碼問(wèn)題在頁(yè)面?zhèn)鬟f和數(shù)據(jù)查找中,必然會(huì)遇到中文的編碼問(wèn)題,系統(tǒng)通過(guò)使用Filter類(lèi)來(lái)解決中文的編碼問(wèn)題。在action中注入組件,來(lái)完成一些通用操作。 登錄界面用戶(hù)登錄時(shí),首先從session中獲得session信息,如果獲得的信息與輸入的用戶(hù)名一致,表明用戶(hù)已經(jīng)登錄,就會(huì)提示“用戶(hù)已登錄”的信息,采用這種機(jī)制可以防止用戶(hù)重復(fù)登錄。 return new ActionForward(/)。相關(guān)的Javascript代碼如下:script type=text/javascript function validate(){ var username = (39。 || == 39。 登錄失敗界面 用戶(hù)車(chē)次查詢(xún)模塊的實(shí)現(xiàn)用戶(hù)通過(guò)驗(yàn)證登陸后,進(jìn)入用戶(hù)界面。通過(guò)兩種方式的查詢(xún),使用戶(hù)能夠更便捷更快速的查詢(xún)自己所要列車(chē)的信息,上面代碼實(shí)現(xiàn)的是按車(chē)次查詢(xún)的功能。 車(chē)票預(yù)訂功能模塊實(shí)現(xiàn)用戶(hù)登陸后,點(diǎn)擊車(chē)票預(yù)訂即可進(jìn)行車(chē)票的預(yù)定。查詢(xún)車(chē)次的方式有兩種:按車(chē)次查詢(xún)和按站站查詢(xún)。){ alert(39。)。 ().setAttribute(uname, yname)。相關(guān)的代碼實(shí)現(xiàn)如下:public ActionForward login(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServle