申報(bào)技師的技術(shù)論文(2)
申報(bào)技師的技術(shù)論文篇二
科技申報(bào)系統(tǒng)設(shè)計(jì)的關(guān)鍵技術(shù)分析
[摘 要] 計(jì)算機(jī)和互聯(lián)網(wǎng)技術(shù)的不斷發(fā)展,使得包括科技申報(bào)在內(nèi)的各種網(wǎng)上辦公活動(dòng)成為現(xiàn)實(shí)。發(fā)達(dá)國家已率先使用科技申報(bào)系統(tǒng)進(jìn)行科技申報(bào)管理活動(dòng),2000年以來,科技申報(bào)系統(tǒng)在我國的部分省市開始使用,發(fā)揮了積極作用。Struts技、Hibernate、Spring技術(shù),整合出科技申報(bào)系統(tǒng)的應(yīng)用框架,提供了表現(xiàn)層、業(yè)務(wù)邏輯層、數(shù)據(jù)訪問層的相關(guān)基類。實(shí)現(xiàn)了編程接口的統(tǒng)一、事務(wù)自動(dòng)處理。
[關(guān)鍵詞] 科技申報(bào) MVCStruts Spring
一、JSP技術(shù)
JSP(Java Server Pages)技術(shù)是由Sun公司發(fā)布的用于開發(fā)動(dòng)態(tài)Web應(yīng)用的一項(xiàng)技術(shù)。它以其簡(jiǎn)單易學(xué)、跨平臺(tái)的特性,在眾多動(dòng)態(tài)Web應(yīng)用程序設(shè)計(jì)語言中異軍突起,在短短幾年中已經(jīng)形成了一套完整的規(guī)范,并廣泛地應(yīng)用于電子商務(wù)等各個(gè)領(lǐng)域中。
JSP規(guī)范是Web服務(wù)器、應(yīng)用服務(wù)器、交易系統(tǒng)以及開發(fā)工具供應(yīng)商間廣泛合作的結(jié)果。Sun開發(fā)出這個(gè)規(guī)范來整合和平衡已經(jīng)存在的對(duì)Java編程環(huán)境(例如,Java Servlet和JavaBeans)進(jìn)行支持的技術(shù)和工具。其結(jié)果是產(chǎn)生了一種新的、開發(fā)基于Web應(yīng)用程序的方法,給予使用基于組件應(yīng)用邏輯的頁面設(shè)計(jì)者以強(qiáng)大的功能
二、 Struts2技術(shù)
Struts2并不是一個(gè)陌生的web框架,它是以Webwork的設(shè)計(jì)思想為核心,吸收struts1的優(yōu)點(diǎn),可以說Struts2是struts1和Webwork結(jié)合的產(chǎn)物。它的工作原理如下:
一個(gè)請(qǐng)求在Struts2框架中的處理可分為如下7個(gè)步驟:
(1)客戶端發(fā)出一個(gè)指向servlet容器的請(qǐng)求(tomcat);
(2)這個(gè)請(qǐng)求會(huì)經(jīng)過圖中的幾個(gè)過濾器,最后會(huì)到達(dá)FilterDispatcher過濾器。
(3)過濾器FilterDispatcher是struts2框架的心臟,在處理用戶請(qǐng)求時(shí),它和請(qǐng)求一起相
三、Hibernate技術(shù):
Hibernate是一個(gè)開放源代碼的對(duì)象關(guān)系映射框架,它對(duì)JDBC進(jìn)行了非常輕量級(jí)的對(duì)象封裝,使得Java程序員可以隨心所欲的使用對(duì)象編程思維來操縱數(shù)據(jù)庫。 Hibernate可以應(yīng)用在任何使用JDBC的場(chǎng)合,既可以在Java的客戶端程序使用,也可以在Servlet/JSP的Web應(yīng)用中使用,最具革命意義的是,Hibernate可以在應(yīng)用EJB的J2EE架構(gòu)中取代CMP,完成數(shù)據(jù)持久化的重任。
Hibernate的核心接口一共有5個(gè),分別為:Session、SessionFactory、Transaction、Query和Configuration。這5個(gè)核心接口在任何開發(fā)中都會(huì)用到。通過這些接口,不僅可以對(duì)持久化對(duì)象進(jìn)行存取,還能夠進(jìn)行事務(wù)控制。下面對(duì)這五個(gè)核心接口分別加以介紹。
Session接口:Session接口負(fù)責(zé)執(zhí)行被持久化對(duì)象的CRUD操作(CRUD的任務(wù)是完成與數(shù)據(jù)庫的交流,包含了很多常見的SQL語句。)。但需要注意的是Session對(duì)象是非線程安全的。同時(shí),Hibernate的session不同于JSP應(yīng)用中的Http Session。這里當(dāng)使用session這個(gè)術(shù)語時(shí),其實(shí)指的是Hibernate中的session,而以后會(huì)將Http Sesion對(duì)象稱為用戶session。
Session Factory接口:Session Factory接口負(fù)責(zé)初始化Hibernate。它充當(dāng)數(shù)據(jù)存儲(chǔ)源的代理,并負(fù)責(zé)創(chuàng)建Session對(duì)象。這里用到了工廠模式。需要注意的是Session Factory并不是輕量級(jí)的,因?yàn)橐话闱闆r下,一個(gè)項(xiàng)目通常只需要一個(gè)Session Factory就夠,當(dāng)需要操作多個(gè)數(shù)據(jù)庫時(shí),可以為每個(gè)數(shù)據(jù)庫指定一個(gè)Session Factory。
Configuration接口:Configuration接口負(fù)責(zé)配置并啟動(dòng)Hibernate,創(chuàng)建Session Factory對(duì)象。在Hibernate的啟動(dòng)的過程中,Configuration類的實(shí)例首先定位映射文檔位置、讀取配置,然后創(chuàng)建Session Factory對(duì)象。
Transaction接口:Transaction接口負(fù)責(zé)事務(wù)相關(guān)的操作。它是可選的,開發(fā)人員也可以設(shè)計(jì)編寫自己的底層事務(wù)處理代碼。
Query和Criteria接口:Query和Criteria接口負(fù)責(zé)執(zhí)行各種數(shù)據(jù)庫查詢。它可以使用HQL語言或SQL語句兩種表達(dá)方式。
四、 Spring技術(shù)
Spring是一個(gè)開源框架,它由Rod Johnson創(chuàng)建。它是為了解決企業(yè)應(yīng)用開發(fā)的復(fù)雜性而創(chuàng)建的。Spring使用基本的JavaBean來完成以前只可能由EJB完成的事情。然而,Spring的用途不僅限于服務(wù)器端的開發(fā)。從簡(jiǎn)單性、可測(cè)試性和松耦合的角度而言,任何Java應(yīng)用都可以從Spring中受益。它能解決企業(yè)應(yīng)用開發(fā)的復(fù)雜性,使用基本的JavaBean代替EJB,并提供了更多的企業(yè)應(yīng)用功能。Spring有如下特點(diǎn):
a.輕量――從大小與開銷兩方面而言Spring都是輕量的。完整的Spring框架可以在一個(gè)大小只有1MB多的JAR文件里發(fā)布。并且Spring所需的處理開銷也是微不足道的。此外,Spring是非侵入式的:典型地,Spring應(yīng)用中的對(duì)象不依賴于Spring的特定類。
b.控制反轉(zhuǎn)――Spring通過一種稱作控制反轉(zhuǎn)(IoC)的技術(shù)促進(jìn)了松耦合。當(dāng)應(yīng)用了IoC,一個(gè)對(duì)象依賴的其它對(duì)象會(huì)通過被動(dòng)的方式傳遞進(jìn)來,而不是這個(gè)對(duì)象自己創(chuàng)建或者查找依賴對(duì)象。你可以認(rèn)為IoC與JNDI相反――不是對(duì)象從容器中查找依賴,而是容器在對(duì)象初始化時(shí)不等對(duì)象請(qǐng)求就主動(dòng)將依賴傳遞給它。
c.面向切面――Spring提供了面向切面編程的豐富支持,允許通過分離應(yīng)用的業(yè)務(wù)邏輯與系統(tǒng)級(jí)服務(wù)(例如審計(jì)(auditing)和事務(wù)(transaction)管理)進(jìn)行內(nèi)聚性的開發(fā)。應(yīng)用對(duì)象只實(shí)現(xiàn)它們應(yīng)該做的――完成業(yè)務(wù)邏輯――僅此而已。它們并不負(fù)責(zé)(甚至是意識(shí))其它的系統(tǒng)級(jí)關(guān)注點(diǎn),例如日志或事務(wù)支持。
d.容器――Spring包含并管理應(yīng)用對(duì)象的配置和生命周期,在這個(gè)意義上它是一種容器,你可以配置你的每個(gè)bean如何被創(chuàng)建――基于一個(gè)可配置原型(prototype),你的bean可以創(chuàng)建一個(gè)單獨(dú)的實(shí)例或者每次需要時(shí)都生成一個(gè)新的實(shí)例――以及它們是如何相互關(guān)聯(lián)的。然而,Spring不應(yīng)該被混同于傳統(tǒng)的重量級(jí)的EJB容器,它們經(jīng)常是龐大與笨重的,難以使用。
e.框架――Spring可以將簡(jiǎn)單的組件配置、組合成為復(fù)雜的應(yīng)用。在Spring中,應(yīng)用對(duì)象被聲明式地組合,典型地是在一個(gè)XML文件里。Spring也提供了很多基礎(chǔ)功能(事務(wù)管理、持久化框架集成等等),將應(yīng)用邏輯的開發(fā)留給了你。所有Spring的這些特征使你能夠編寫更干凈、更可管理、并且更易于測(cè)試的代碼它們也為Spring中的各種模塊提供了基礎(chǔ)支持。
五、MVC技術(shù)
MVC是一個(gè)設(shè)計(jì)模式,它強(qiáng)制性的使應(yīng)用程序的輸入、處理和輸出分開。使用MVC應(yīng)用程序被分成三個(gè)核心部件:模型、視圖、控制器。它們各自處理自己的任務(wù)。
1.視圖
視圖是用戶看到并與之交互的界面。對(duì)老式的Web應(yīng)用程序來說,視圖就是由JSP元素組成的界面,在新式的Web應(yīng)用程序中,JSP依舊在視圖中扮演著重要的角色,但一些新的技術(shù)已層出不窮,它們包括Macromedia Flash和象XJSP,XML/XSL,WML等一些標(biāo)識(shí)語言和Web services.
如何處理應(yīng)用程序的界面變得越來越有挑戰(zhàn)性。MVC一個(gè)大的好處是它能為你的應(yīng)用程序處理很多不同的視圖。在視圖中其實(shí)沒有真正的處理發(fā)生,不管這些數(shù)據(jù)是聯(lián)機(jī)存儲(chǔ)的還是一個(gè)雇員列表,作為視圖來講,它只是作為一種輸出數(shù)據(jù)并允許用戶操縱的方式。
2.模型
模型表示企業(yè)數(shù)據(jù)和業(yè)務(wù)規(guī)則。在MVC的三個(gè)部件中,模型擁有最多的處理任務(wù)。例如它可能用象EJBs和ColdFusion Components這樣的構(gòu)件對(duì)象來處理數(shù)據(jù)庫。被模型返回的數(shù)據(jù)是中立的,就是說模型與數(shù)據(jù)格式無關(guān),這樣一個(gè)模型能為多個(gè)視圖提供數(shù)據(jù)。由于應(yīng)用于模型的代碼只需寫一次就可以被多個(gè)視圖重用,所以減少了代碼的重復(fù)性。
3.控制器
控制器接受用戶的輸入并調(diào)用模型和視圖去完成用戶的需求。所以當(dāng)單擊Web頁面中的超鏈接和發(fā)送JSP表單時(shí),控制器本身不輸出任何東西和做任何處理。它只是接收請(qǐng)求并決定調(diào)用哪個(gè)模型構(gòu)件去處理請(qǐng)求,然后確定用哪個(gè)視圖來顯示模型處理返回的數(shù)據(jù)。
現(xiàn)在我們總結(jié)MVC的處理過程,首先控制器接收用戶的請(qǐng)求,并決定應(yīng)該調(diào)用哪個(gè)模型來進(jìn)行處理,然后模型用業(yè)務(wù)邏輯來處理用戶的請(qǐng)求并返回?cái)?shù)據(jù),最后控制器用相應(yīng)的視圖格式化模型返回的數(shù)據(jù),并通過表示層呈現(xiàn)給用戶。
參考文獻(xiàn):
[1]張海蕃:軟件工程導(dǎo)論[M].北京:清華大學(xué)出版社, 2005 , 160-171
[2] Ian Somerville. Software engineering[M].北京:機(jī)械工業(yè)出版社,2004,73-84
看了“申報(bào)技師的技術(shù)論文”的人還看: