專利名稱::一種基于java的web開發(fā)中間件的制作方法
技術(shù)領(lǐng)域:
:本發(fā)明屬于計算機領(lǐng)域,涉及到web開發(fā)技術(shù)和數(shù)據(jù)庫訪問技術(shù),更為具體地,涉及基于java的web開發(fā)中間件。
背景技術(shù):
:由于網(wǎng)絡(luò)的飛速發(fā)展,出現(xiàn)了很多基于java的web開發(fā)框架,其中,Struts,Spring,Hibernate是當(dāng)前流行的javaweb開發(fā)架構(gòu),分別屬于不同開源組織或者公司,并且針對于特定的領(lǐng)域?qū)崿F(xiàn)其功能struts負責(zé)外部數(shù)據(jù)的采集,hibernate負責(zé)數(shù)據(jù)庫的持久化,spring則負責(zé)對象的實例,遠程調(diào)用等。三者組合起來可以形成一個javaweb的開發(fā)結(jié)構(gòu),當(dāng)前這三者已經(jīng)發(fā)展得十分龐大,導(dǎo)致在一些小型應(yīng)用中如果采用此結(jié)構(gòu)會造成系統(tǒng)開發(fā)臃腫,學(xué)習(xí)成本過高,一些基于web的技術(shù)需要在此基礎(chǔ)單獨開發(fā)才能形成效果。另外開發(fā)javaweb應(yīng)用時,不使用模板或者架構(gòu),如果從底層基礎(chǔ)構(gòu)建,就會造成效率低下,開發(fā)周期長,維護困難,培訓(xùn)周期長,重復(fù)的web技術(shù)開發(fā)。另一方面,使用模板開發(fā),確實會提高開發(fā)效率,但是模板開發(fā)都會固定好一些基礎(chǔ)內(nèi)容,使用者并不能隨心所欲的進行全面自主設(shè)計,并在瓶頸問題上會處于被動的狀態(tài),無法做優(yōu)化。同時,web開發(fā)中數(shù)據(jù)庫操作也是一個讓開發(fā)人員頭痛的問題,需要建立一種便捷的數(shù)據(jù)庫、對象映射,簡化數(shù)據(jù)庫操作。
發(fā)明內(nèi)容鑒于上述,本發(fā)明的目的在于提供一種輕量快捷的基于java的web開發(fā)中間件,提供接收web請求,進行邏輯處理,并將其返回的處理結(jié)果生成網(wǎng)頁的開發(fā)框架;同時,還提供一種基于MQL的數(shù)據(jù)庫、對象映射方式。該中間件的邏輯處理中,提供了以插入攔截器的方式,來滿足多變的個性化需求。在網(wǎng)頁生成中提供了模板和非模板兩種方式,同時兼顧生成頁面的靈活性和快捷性?;贛QL的數(shù)據(jù)庫、對象映射,簡化了繁瑣的數(shù)據(jù)庫操作。應(yīng)用本發(fā)明,可以使web開發(fā)靈活高效,縮短開發(fā)周期。本發(fā)明所述的基于java的web開發(fā)中間件,包括動作模塊,負責(zé)接收http請求數(shù)據(jù),并把該數(shù)據(jù)發(fā)往指定的邏輯處理單元進行處理,然后,用相應(yīng)邏輯處理單元處理的結(jié)果生成需要格式的網(wǎng)頁數(shù)據(jù),在瀏覽器中顯示,在網(wǎng)頁生成中,提供了基于模板和不基于模板兩種方式,在基于模板方式中,采用預(yù)先定義的XML模板限定規(guī)則,設(shè)定了生成網(wǎng)頁的格式;在邏輯處理中,通過地插入攔截器,以完成個性化的處理需求;動作模塊包括的組件及其典型的執(zhí)行順序如附圖1,動作模塊包含如下組件任務(wù)分配組件,依據(jù)配置文件,將不同的web請求交給指定的處理邏輯;web數(shù)據(jù)轉(zhuǎn)換組件,將從web接收的數(shù)據(jù)轉(zhuǎn)換為任務(wù)處理組件指定的數(shù)據(jù)對象;任務(wù)處理組件,用于完成所需的邏輯處理;攔截器組件,用于在任務(wù)處理組件處理前,對web請求進行處理,開發(fā)者可以自己定義攔截器,以完成自己需要的個性化功能;結(jié)果返回組件,將邏輯處理單元的處理結(jié)果數(shù)據(jù)轉(zhuǎn)換為網(wǎng)頁數(shù)據(jù),返回給瀏覽器顯不O結(jié)果返回組件返回的結(jié)果類型包括base類型,redirect類型,redirectAction類型,json類型等類型,其中Base類型直接返回響應(yīng)的內(nèi)容;Redirect類型返回跳轉(zhuǎn)連接;redirectAction類型將數(shù)據(jù)發(fā)給下一個action處理;json類型返回具有{key:value,......}格式的json串;在base類型中,可以使用一種基于預(yù)先定義的XML限定規(guī)則的模板,按模板格式生成網(wǎng)頁。動作模塊中的各組件的典型執(zhí)行順序見附圖1,http請求先通過任務(wù)分配組件指定對應(yīng)的處理邏輯;然后,通過web數(shù)據(jù)轉(zhuǎn)換組件將所述請求的中的數(shù)據(jù)轉(zhuǎn)換為邏輯處理中需要的類型;之后,如果有攔截器,則按攔截器配置的先后順序依次調(diào)用個攔截器;再后,通過邏輯處理組件做邏輯處理;最后,將上述邏輯處理的結(jié)果通過結(jié)果處理組件生產(chǎn)網(wǎng)頁,送瀏覽器顯示。數(shù)據(jù)訪問模塊,負責(zé)接收和執(zhí)行數(shù)據(jù)庫的操作請求,利用MQL腳本語言,實現(xiàn)數(shù)據(jù)庫和javabean對象的自動映射,將數(shù)據(jù)庫的復(fù)雜操作轉(zhuǎn)化為對javabean對象的操作;數(shù)據(jù)訪問模塊包含的組件及其典型的執(zhí)行順序如附圖2所示,數(shù)據(jù)訪問模塊包括如下組件數(shù)據(jù)庫操作接口組件,用于提供可變粒度的數(shù)據(jù)庫查詢接口;會話管理組件,用于完成web交互中的會話管理;事務(wù)處理組件,用于執(zhí)行數(shù)據(jù)庫事務(wù);回滾處理組件,用于執(zhí)行數(shù)據(jù)庫操作的回滾;基本操作組件,用于執(zhí)行普通的數(shù)據(jù)庫增、刪、改、查操作;數(shù)據(jù)庫、對象映射組件,用于實現(xiàn)數(shù)據(jù)庫和javabean對象的映射,其中,使用MQL腳本語言,將數(shù)據(jù)庫中的表和指定的javabean對象關(guān)聯(lián)起來,完成數(shù)據(jù)和對象間的映射;該關(guān)聯(lián)的Javabean帶有特定的注解,以完成數(shù)據(jù)和對象間的映射。數(shù)據(jù)訪問模塊中各個組件的典型執(zhí)行順序如附圖2所示首先,通過數(shù)據(jù)庫操作接口組件,發(fā)起數(shù)據(jù)操作;然后,會話管理組件會建立一個會話,并管理這個會話;之后,依據(jù)數(shù)據(jù)庫操作的粒度和類型,決定調(diào)用基本操作組件、事務(wù)處理組件或回滾處理組件;再后,通過數(shù)據(jù)庫、對象映射組件將操作映射到數(shù)據(jù)庫,取得數(shù)據(jù)庫操作結(jié)果。根據(jù)下述參照附圖進行的詳細描述,本發(fā)明的特征和優(yōu)點將變得更加顯而易見。在附圖中圖I示出了動作模塊處理web請求的數(shù)據(jù)流程;圖2示出了動作模塊中模板生成網(wǎng)頁數(shù)據(jù)的流程;圖3示出了數(shù)據(jù)訪問模塊處理數(shù)據(jù)庫操作請求時的數(shù)據(jù)流程;圖4示出了動作模塊的一種實現(xiàn);圖5示出了數(shù)據(jù)訪問模塊的一種實現(xiàn);圖6示出了用MQL實現(xiàn)對象映射的處理流程;具體實施例方式下面描述本發(fā)明的實現(xiàn)。應(yīng)該明白的是,本文的實施可以以多種多樣形式具體體現(xiàn),并且在本文中公開的任何具體結(jié)構(gòu)、功能或兩者僅僅是代表性的?;诒疚牡慕虒?dǎo),本領(lǐng)域技術(shù)人員應(yīng)該明白的是,本文所公開的一個方面可以獨立于任何其它方面實現(xiàn),并且這些方面中的兩個或多個方面可以按照各種方式組合?;趈ava的web開發(fā)中間件,主要包含兩個模塊動作模塊和數(shù)據(jù)訪問模塊。動作模塊負責(zé)接收http請求數(shù)據(jù),并把該數(shù)據(jù)發(fā)往指定的邏輯處理單元,然后,把相應(yīng)邏輯處理單元處理的結(jié)果生成需要的網(wǎng)頁數(shù)據(jù)格式,在瀏覽器中顯示。附圖4是動作模塊的一種實現(xiàn)在本實施方式中與網(wǎng)頁交互的是BasicFilter類,其核心是Forward類,它負責(zé)了整個任務(wù)分配,相當(dāng)路由功能,它會根據(jù)配置文件的信息指定哪個邏輯來處理哪個web頁面,BasicFilter、Forward類一起構(gòu)成了本發(fā)明所述的任務(wù)分配組件。接下來的DefaultActionInvocation類是一個類型適配器,實現(xiàn)數(shù)據(jù)類型轉(zhuǎn)換,變量映射等,它構(gòu)成了本發(fā)明的web數(shù)據(jù)轉(zhuǎn)換組件。然后是若干個攔截器,interceptorl,interceptor2,----,攔截器為開發(fā)者自己定義,攔截器為開發(fā)者提供個性化功能定制,用來滿足一些開發(fā)者自己需要定制的的特殊能力,這些攔截器構(gòu)成了本發(fā)明所述的攔截器組件。返回結(jié)果由對象IResult來封裝,返回結(jié)果的類型可以是基本的base類型,redirect類型,這兩種都是直接將數(shù)據(jù)發(fā)回瀏覽器!redirectAction類型,它是將數(shù)據(jù)直接發(fā)往下一個action動作形成一條action動作邏輯處理鏈,json類型,返回具有{key:value,……}格式的數(shù)據(jù),然后發(fā)回瀏覽器。關(guān)于模板,模板技術(shù)主要是為了解決諸如報表,圖表等設(shè)計的,在開發(fā)中,開發(fā)者往往面臨最多的是數(shù)據(jù)如何顯示,所以模板的提供也是快速開發(fā)一種方式。本實施例中的模板也是IResult的一個實現(xiàn),當(dāng)中間件判斷開發(fā)者是使用Template時,就會根據(jù)配置文件獲取模板文件,模板文件設(shè)計為中間件約束的XML格式,如〈tablelist〉將會將數(shù)據(jù)顯示為列表,最終模板文件將翻譯成標準的html格式,當(dāng)然如果開發(fā)者想自己翻譯其它格式,則只要實現(xiàn)相關(guān)接口就行了,在翻譯結(jié)束后,送往瀏覽器顯示。如下是Template的一個示例權(quán)利要求1.一種基于java的web開發(fā)中間件,包括動作模塊,負責(zé)接收http請求數(shù)據(jù),并把該數(shù)據(jù)發(fā)往指定的邏輯處理單元進行處理,然后,用相應(yīng)邏輯處理單元處理的結(jié)果生成需要格式的網(wǎng)頁數(shù)據(jù),在瀏覽器中顯示,在網(wǎng)頁生成中,提供了基于模板和不基于模板兩種方式,在基于模板方式中,采用預(yù)先定義的XML模板限定規(guī)則,設(shè)定了生成網(wǎng)頁的格式;在邏輯處理中,通過地插入攔截器,以完成個性化的處理需求;數(shù)據(jù)訪問模塊,負責(zé)接收并執(zhí)行對數(shù)據(jù)庫操作請求,利用MQL腳本語言,實現(xiàn)數(shù)據(jù)庫和javabean對象的自動映射,將對數(shù)據(jù)庫的復(fù)雜操作轉(zhuǎn)化為對javabean對象的操作。2.如權(quán)利要求I所述的中間件,其中動作模塊包括web數(shù)據(jù)轉(zhuǎn)換組件,將從web接收的數(shù)據(jù)轉(zhuǎn)換為邏輯處理單元指定的數(shù)據(jù)對象;任務(wù)分配組件,依據(jù)配置文件,將不同的web請求交給指定的處理邏輯;任務(wù)處理組件,用于完成所需的邏輯處理;攔截器組件,用于在任務(wù)處理組件處理之前,對web請求進行處理,開發(fā)者可以通過自己定義攔截器,完成需要的個性化功能;結(jié)果返回組件,將邏輯處理的結(jié)果數(shù)據(jù)轉(zhuǎn)換為網(wǎng)頁數(shù)據(jù),返回給瀏覽器顯示。3.如權(quán)利要求I所述的中間件,其中數(shù)據(jù)訪問模塊包括會話管理組件,用于完成web交互中的會話管理;操作接口組件,用于提供可變粒度的數(shù)據(jù)庫操作接口;數(shù)據(jù)、對象映射組件,用于實現(xiàn)數(shù)據(jù)庫和javabean對象的映射。4.如權(quán)利要求2所述的動作模塊,其中,結(jié)果返回組件的特征包括返回結(jié)果類型包括base類型,redirect類型,redirectAction類型,json類型等類型,其中,Base類型直接返回響應(yīng)的內(nèi)容;Redirect類型返回跳轉(zhuǎn)連接;redirectAction類型將數(shù)據(jù)發(fā)給下一個action處理;json類型返回具有{key:value,......}格式的json串。5.如權(quán)利要求2所述的動作模塊,其中,攔截器組件為可選組件,依據(jù)需要可以不配置攔截器,也可配置一個或多個攔截器;當(dāng)攔截器為多個時,按攔截器配置的先后順序依次調(diào)用。6.如權(quán)利要求4所述的結(jié)果返回組件中,其base類型返回結(jié)果特征如下可以依據(jù)需要選用基于模板方式和不基于模板方式,其中,基于模板方式,提供一種基于預(yù)先定義的XML限定規(guī)則的模板,按模板格式生成網(wǎng)頁;在網(wǎng)頁生成中,首先判斷是否采用模板,如果采用模板,首先讀入模板文件,然后對該文件做解析,最后生成模板定義格式的網(wǎng)頁;對于不采用模板方式的頁面,直接生成頁面。7.如權(quán)利要求3所述的數(shù)據(jù)訪問模塊,數(shù)據(jù)、對象映射組件特征包括使用MQL腳本語言,將數(shù)據(jù)庫中的表和指定的javabean對象關(guān)聯(lián)起來,完成數(shù)據(jù)和對象間的映射;Javabean帶有特定的注解,以完成數(shù)據(jù)和對象間的映射。全文摘要提供了一種基于java的web開發(fā)中間件,包括動作模塊,負責(zé)接收http請求數(shù)據(jù),并把該數(shù)據(jù)發(fā)往指定的邏輯處理單元進行處理,然后,把相應(yīng)邏輯處理單元處理的結(jié)果生成需要格式的網(wǎng)頁數(shù)據(jù),在瀏覽器顯示。在邏輯處理中,本發(fā)明以插入攔截器的方式,來適應(yīng)個性化處理的需要;在網(wǎng)頁生成中,本發(fā)明同時提供了模板和非模板方式,其中模板方式,以一種基于XML標記方式的模板,定義要生成網(wǎng)頁的格式;數(shù)據(jù)訪問模塊,負責(zé)接收并執(zhí)行對數(shù)據(jù)庫的操作請求,利用MQL腳本語言,實現(xiàn)數(shù)據(jù)庫和javabean對象的自動映射,將對數(shù)據(jù)庫的復(fù)雜操作轉(zhuǎn)化為對javabean對象的操作。利用上述的開發(fā)中間件,使得web開發(fā)靈活快捷,簡化了繁瑣的數(shù)據(jù)庫操作,可以縮短web開發(fā)周期,提高開發(fā)效率。文檔編號G06F9/44GK102968307SQ20121050113公開日2013年3月13日申請日期2012年11月29日優(yōu)先權(quán)日2012年11月29日發(fā)明者李星,楊成申請人:中國傳媒大學(xué)