freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

基于j2ee平臺(tái)的火車站網(wǎng)上售票系統(tǒng)的實(shí)現(xiàn)-閱讀頁

2025-07-03 14:38本頁面
  

【正文】 vascript,SQL,Hibernate,而且具有眾多的插件支持,可完全滿足開發(fā)的需求。Tomcat 很受廣大程序員的喜歡,因?yàn)樗\(yùn)行時(shí)占用的系統(tǒng)資源小,擴(kuò)展性好,支持負(fù)載平衡與郵件服務(wù)等開發(fā)應(yīng)用系統(tǒng)常用的功能;而且它還在不斷的改進(jìn)和完善中,任何一個(gè)感興趣的程序員都可以更改它或在其中加入新的功能。系統(tǒng)數(shù)據(jù)庫采用的是Oracle 9i數(shù)據(jù)庫。 Hibernate配置圖 Hibernate配置圖 Hibernate配置圖這樣Struts,Spring,Hibernate的整合工作完成,自動(dòng)生成的相關(guān)配置文件:(1)(2)4 基于J2EE平臺(tái)的火車站網(wǎng)上售票系統(tǒng)的實(shí)現(xiàn) Hibernate 持久層實(shí)現(xiàn)通過使用Hibernate持久層,可以避免使用傳統(tǒng)的JDBC操作數(shù)據(jù)庫,從而更好地使用面向?qū)ο蟮姆绞絹聿僮鲾?shù)據(jù)庫。 設(shè)計(jì)持久化對(duì)象(PO)面向?qū)ο蠓治?,是指根?jù)系統(tǒng)需求提取應(yīng)用中的對(duì)象,將這些對(duì)象抽象成類,再抽取出需要持久化保存的類,這些需要持久化保存的類就是持久化對(duì)象(PO)。(1)5個(gè)持久化類Userinf:對(duì)應(yīng)用戶的信息,包括用戶的名稱、密碼、身份證號(hào)碼、性別、工作等屬性。TrainPrice:對(duì)應(yīng)列車的詳細(xì)信息,包括列車的名稱、始發(fā)地、最終地、兩地間的票價(jià)等屬性。Fankui:對(duì)應(yīng)用戶信息的反饋,包括反饋用戶、反饋信息。Userinf和Ticketorder之間存在 1N 的關(guān)系,即每個(gè)用戶可以預(yù)定多列火車的車票。 創(chuàng)建持久化類持久化對(duì)象之間的關(guān)系通過相應(yīng)的setter和getter方法實(shí)現(xiàn)。而持久化對(duì)象的普通屬性則對(duì)應(yīng)于數(shù)據(jù)庫的字段。下面是Train PO的部分源代碼:package 。private String trainName。private String firststation。private String trainPath。public Train() {}public Train(String trainName, String trainTime, String firststation, String laststation, String trainPath, String isrun) { = trainName。 = firststation。 = trainPath。}public Long getTrainId() { return 。 } public String getTrainName() { return 。 } public String getTrainTime() { return 。 } public String getFirststation() { return 。 } public String getLaststation() { return 。 } public String getTrainPath() { return 。 } public String getIsrun() { return 。}對(duì)Hibernate而言,完全支持將普通的POJO映射成PO,但這些POJO應(yīng)盡量遵守如下規(guī)則:(1)提供實(shí)現(xiàn)一個(gè)默認(rèn)的(無參數(shù)的)構(gòu)造器。(3)使用非 final 的類。 映射持久化類對(duì)于1N的關(guān)聯(lián),例如實(shí)現(xiàn)一個(gè)簡(jiǎn)單的從 Userinf到Ticketorder的1N關(guān)聯(lián)。通過關(guān)系映射,可以處理刪除操作時(shí)的級(jí)聯(lián)刪除。相關(guān)的配置如下:set name=prices inverse=true cascade=deleteorphan key column name=trainName precision=22 scale=0 / /key onetomany class= //set 實(shí)現(xiàn)DAO層 在Hibernate持久層之上,可使用DAO組件再次封裝數(shù)據(jù)庫操作。因此,使用DAO組件,即意味著引入DAO模式,使每個(gè) DAO組件包含了數(shù)據(jù)庫的訪問邏輯:每個(gè)DAO組件可對(duì)一個(gè)數(shù)據(jù)庫表完成基本的 CRUD等操作。 Spring為Hibernate的整合提供了很好的支持,Spring的DAO支持類是:HiberanteDaoSupport,該類只需要傳入一個(gè)SessionFactory引用,即可得到一個(gè)HibernateTemplate 實(shí)例,該實(shí)例功能非常強(qiáng)大,數(shù)據(jù)庫的大部分操作也很容易實(shí)現(xiàn)。而業(yè)務(wù)邏輯對(duì)象則面向接口編程,無須關(guān)心DAO的實(shí)現(xiàn)細(xì)節(jié)。系統(tǒng)有兩個(gè)DAO實(shí)現(xiàn)類:UserDao和TrainDao,分別對(duì)應(yīng)用戶模塊和管理員模塊。 } public List chaXun(Train t){String sql = from Train where firststation like 39。and laststation like 39。 and ISRUN=39。 (sql)。 } public List chaXun1(Train t){ String sql = from Train where trainName =39。 (sql)。 } public List findSelectTicket(TrainPrice t){String sql = from TrainPrice where tpName = 39。 and tpStart = 39。 and tpEnd = 39。 (sql)。 } public void addOrder(Ticketorder to){ ().save(to)。().save()、().find()、().update()、().delete()這幾個(gè)方法就可以對(duì)數(shù)據(jù)庫中的各表進(jìn)行常規(guī)的增、刪、改和查工作。 }實(shí)現(xiàn)的是向Ticketorder表中添加數(shù)據(jù),也就是相當(dāng)于實(shí)現(xiàn)了用戶訂單的添加的操作。Hiberate 為持久化訪問提供了第一層封裝,而Spring在Hibernate的基礎(chǔ)上再次簡(jiǎn)化了持久層的訪問。Spring容器負(fù)責(zé)為DAO組件注入其運(yùn)行所需要的基礎(chǔ)SessionFactory。使用LocalSessionFactoryBean配置SessionFactory之前,必須為其提供對(duì)應(yīng)的數(shù)據(jù)源,配置文件如下:beans bean id=myDataSource class= property name=driverClassName value= /property property name=url value=jdbc:oracle:thin::1521:orcl /property property name=username value=scott/property property name=password value=tiger/property /bean bean id=mySessionFactory class= property name=dataSource ref bean=myDataSource / /property property name=hibernateProperties props prop key= /prop /props /property property name=mappingResources list value/sun/domain//value value/sun/domain//value value/sun/domain//value value/sun/domain//value/list /property /bean所有繼承HibernateDaoSupport的DAO實(shí)現(xiàn)類,必須為其提供SessionFactory 的引用。應(yīng)用中同樣將所有的DAO組件配置在單獨(dú)的配置文件中,下面是DAO對(duì)象的配置:bean name=traindao class= property name=sessionFactory ref bean=mySessionFactory / /property /bean Service層的實(shí)現(xiàn)系統(tǒng)使用了兩個(gè)業(yè)務(wù)邏輯組件,對(duì)應(yīng)的是系統(tǒng)的兩個(gè)模塊:用戶模塊和管理員模塊。 service組件設(shè)計(jì) Service組件采用正面模式封裝多個(gè)DAO組件,由于每個(gè)業(yè)務(wù)方法要涉及到多個(gè)DAO操作,其DAO操作是單個(gè)的數(shù)據(jù)記錄的操作,而業(yè)務(wù)邏輯方法的訪問,則需要設(shè)計(jì)多個(gè)DAO操作,因此每個(gè)業(yè)務(wù)邏輯方法可能需要涉及多條記錄的訪問。import 。import 。import 。 public UserDao getUserDao() { return userDao。 } public void addUser(Userinf u) { (u)。 }//查詢車次 public void addOrder(Ticketorder to) { (to)。 i 。 (to)。 }//用戶登陸}在上面的業(yè)務(wù)邏輯組件中,有addUser、chaXun、addOrder、delOrder和login方法,分別負(fù)責(zé)實(shí)現(xiàn)的業(yè)務(wù)邏輯是用戶注冊(cè)、車次查詢、預(yù)訂車票、取消預(yù)訂和登陸。將配置文件按層和模塊分開配置,可以提高 Spring 配置文件的可讀性和可理解性。 MVC層的實(shí)現(xiàn)系統(tǒng)的MVC框架使用 Struts。系統(tǒng)使用Struts框架可以提高系統(tǒng)的可控制性,保證了系統(tǒng)的穩(wěn)定性及可用性。但它必須繼承Filter類這個(gè)類。public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException { (utf8)。 }通過使用這個(gè)類,就可以處理中文編碼問題。為了在應(yīng)用啟動(dòng)時(shí)由Struts負(fù)責(zé)創(chuàng)建Spring容器,應(yīng)在 :plugin className= setproperty property=contextConfigLocation value=/WEBINF/ / /plugin 創(chuàng)建ACTION系統(tǒng)分成兩個(gè)模塊,用戶模塊和管理員模塊,對(duì)應(yīng)的action為:UserAction和TrainAction,它們繼承了DispatchActionSupport,DispatchActionSupport是ActionSupport的子類,而ActionSupport又是Action的實(shí)現(xiàn)類,通過它提供的相關(guān)方法,可以直接獲取到ApplicationContext的實(shí)例。(1)TrainAction中的TrainService組件注入ApplicationContext ctx = ()。(2)UserAction中的UserService組件注入ApplicationContext ctx = ()。由于繼承DispatchActionSupport這個(gè)類,可以減少Action的創(chuàng)建。通過查詢數(shù)據(jù)庫,判斷用戶的角色是否為管理員,從而進(jìn)入不同的界面。 UserService userService = (UserService)(userservice)。 List list = (yname, ypwd)。 if((o)){ (str, 用戶已登錄)。 } else if(()==1){ Userinf u = (Userinf) (0)。 if(().equals(Y)){ return new ActionForward(/)。 }else{ (str, 用戶名或密碼錯(cuò)誤)。 } } 這里判斷了兩種角色的登錄情況,從而進(jìn)入不同角色的界面,如果用戶名或密碼為空則會(huì)提示請(qǐng)輸入用戶名和密碼,這里采用了Javascript技術(shù),這樣就可以防止頁面的刷新。yname39。 var password = (39。)。39。39。 請(qǐng)輸入用戶名或密碼39。 return false。 }} /script如果輸入的用戶名和密碼錯(cuò)誤,則會(huì)提示錯(cuò)誤信息。通過選擇查詢車次,輸入查詢所需的信息即可對(duì)車次進(jìn)行查詢。 車次查詢界面車次查詢的實(shí)現(xiàn)首先從用戶提交的表單中獲取車次“trainname”,通過輸入的信息對(duì)車次進(jìn)行數(shù)據(jù)庫查詢,然后將相關(guān)的車次信息以列表的形式表現(xiàn)出來,代碼如下: String trainname = (trainname)。 List list = (t)。 return new ActionForward(/)。用戶只需輸入車次就可以查詢到所要車次的信息。首先通過站站查詢查詢所要預(yù)訂的車次,通過選擇車次來預(yù)訂,用戶唯一能夠修改的只有預(yù)訂車票的數(shù)量,通過輸入票數(shù)的多少來確定總價(jià)
點(diǎn)擊復(fù)制文檔內(nèi)容
環(huán)評(píng)公示相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1