本發(fā)明實(shí)施例涉及網(wǎng)絡(luò)信息處理技術(shù),尤其涉及一種網(wǎng)頁(yè)請(qǐng)求的處理方法、裝置和系統(tǒng)。
背景技術(shù):
MVC是一種使用模型-視圖-控制器(Model View Controller,MVC)設(shè)計(jì)創(chuàng)建Web應(yīng)用程序的模式:其中,Model(模型)是應(yīng)用程序中用于處理應(yīng)用程序數(shù)據(jù)邏輯的部分,通常模型對(duì)象負(fù)責(zé)在數(shù)據(jù)庫(kù)中存取數(shù)據(jù)。View(視圖)是應(yīng)用程序中處理數(shù)據(jù)顯示的部分,通常視圖是依據(jù)模型數(shù)據(jù)創(chuàng)建的。Controller(控制器)是應(yīng)用程序中處理用戶(hù)交互的部分,通??刂破髫?fù)責(zé)從視圖讀取數(shù)據(jù),控制用戶(hù)輸入,并向模型發(fā)送數(shù)據(jù)。
現(xiàn)有的web開(kāi)發(fā)一般都采用MVC模式,在實(shí)現(xiàn)本發(fā)明的過(guò)程中發(fā)現(xiàn):Controller作為前端網(wǎng)頁(yè)請(qǐng)求的分發(fā)控制器,根據(jù)前端網(wǎng)頁(yè)請(qǐng)求需要定義對(duì)應(yīng)的業(yè)務(wù)方法類(lèi)。基于現(xiàn)有的web業(yè)務(wù)開(kāi)發(fā)方式,隨著業(yè)務(wù)的不斷發(fā)展,Controller需要不斷的定義業(yè)務(wù)方法類(lèi),這樣形成大量冗余的代碼和重復(fù)開(kāi)發(fā),從而導(dǎo)致web開(kāi)發(fā)的效率降低。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明實(shí)施例提供一種網(wǎng)頁(yè)請(qǐng)求的處理方法、裝置和系統(tǒng),用以克服現(xiàn)有技術(shù)中存在大量冗余的代碼和重復(fù)開(kāi)發(fā)導(dǎo)致的web開(kāi)發(fā)的效率降低的問(wèn)題。
本發(fā)明實(shí)施例提供一種網(wǎng)頁(yè)請(qǐng)求的處理方法,包括:
控制器接收web前端發(fā)送的根據(jù)預(yù)先定義的封裝形式封裝后的網(wǎng)頁(yè)請(qǐng)求;
根據(jù)與所述封裝形式對(duì)應(yīng)的解封裝形式,獲取所述網(wǎng)頁(yè)請(qǐng)求中包括的 對(duì)象信息和方法信息;
根據(jù)所述對(duì)象信息,確定與所述對(duì)象信息對(duì)應(yīng)的業(yè)務(wù)方法類(lèi),根據(jù)所述方法信息,在所述業(yè)務(wù)方法類(lèi)中確定與所述方法信息對(duì)應(yīng)的業(yè)務(wù)方法;
將所述網(wǎng)頁(yè)請(qǐng)求發(fā)送給與所述業(yè)務(wù)方法對(duì)應(yīng)的業(yè)務(wù)模型進(jìn)行相應(yīng)的處理。
可選地,所述網(wǎng)頁(yè)請(qǐng)求中包括的對(duì)象信息和方法信息為根據(jù)預(yù)先定義的加密方式進(jìn)行加密后的信息;
所述獲取所述網(wǎng)頁(yè)請(qǐng)求中包括的對(duì)象信息和方法信息包括:
所述控制器根據(jù)與所述加密方式對(duì)應(yīng)的解密方式,解密所述網(wǎng)頁(yè)請(qǐng)求中包括的對(duì)象信息和方法信息。
可選地,所述網(wǎng)頁(yè)請(qǐng)求中還包括其他業(yè)務(wù)參數(shù),所述其他業(yè)務(wù)參數(shù)為所述web前端根據(jù)預(yù)設(shè)格式轉(zhuǎn)化成為相應(yīng)的字符串,所述預(yù)設(shè)格式包括json格式。
可選地,將所述網(wǎng)頁(yè)請(qǐng)求發(fā)送給與所述業(yè)務(wù)方法對(duì)應(yīng)的業(yè)務(wù)模型進(jìn)行相應(yīng)的處理之前,包括:
將所述網(wǎng)頁(yè)請(qǐng)求中包括的其他業(yè)務(wù)參數(shù)進(jìn)行字符串反序列化為所述業(yè)務(wù)模型識(shí)別的參數(shù)形式。
本發(fā)明實(shí)施例提供一種網(wǎng)頁(yè)請(qǐng)求的處理裝置,位于控制器側(cè),包括:
接收模塊,用于接收web前端發(fā)送的根據(jù)預(yù)先定義的封裝形式封裝后的網(wǎng)頁(yè)請(qǐng)求;
獲取模塊,用于根據(jù)與所述封裝形式對(duì)應(yīng)的解封裝形式,獲取所述網(wǎng)頁(yè)請(qǐng)求中包括的對(duì)象信息和方法信息;
確定模塊,用于根據(jù)所述對(duì)象信息,確定與所述對(duì)象信息對(duì)應(yīng)的業(yè)務(wù)方法類(lèi),根據(jù)所述方法信息,在所述業(yè)務(wù)方法類(lèi)中確定與所述方法信息對(duì)應(yīng)的業(yè)務(wù)方法;
發(fā)送模塊,用于將所述網(wǎng)頁(yè)請(qǐng)求發(fā)送給與所述業(yè)務(wù)方法對(duì)應(yīng)的業(yè)務(wù)模型進(jìn)行相應(yīng)的處理。
可選地,所述網(wǎng)頁(yè)請(qǐng)求中包括的對(duì)象信息和方法信息為根據(jù)預(yù)先定義 的加密方式進(jìn)行加密后的信息;
所述獲取模塊具體用于:根據(jù)與所述加密方式對(duì)應(yīng)的解密方式,解密所述網(wǎng)頁(yè)請(qǐng)求中包括的對(duì)象信息和方法信息。
可選地,所述網(wǎng)頁(yè)請(qǐng)求中還包括其他業(yè)務(wù)參數(shù),所述其他業(yè)務(wù)參數(shù)為所述web前端根據(jù)預(yù)設(shè)格式轉(zhuǎn)化成為相應(yīng)的字符串,所述預(yù)設(shè)格式包括json格式。
可選地,所述的裝置還包括:
轉(zhuǎn)化模塊,用于將所述網(wǎng)頁(yè)請(qǐng)求中包括的其他業(yè)務(wù)參數(shù)進(jìn)行字符串反序列化為所述業(yè)務(wù)模型識(shí)別的參數(shù)形式。
本發(fā)明實(shí)施例提供一種網(wǎng)頁(yè)請(qǐng)求的處理系統(tǒng),包括:控制器和web前端;
所述web前端,用于檢測(cè)到瀏覽器觸發(fā)的網(wǎng)頁(yè)請(qǐng)求,根據(jù)預(yù)先定義的封裝形式封裝的所述網(wǎng)頁(yè)請(qǐng)求,并將所述封裝后的網(wǎng)頁(yè)請(qǐng)求發(fā)送給所述控制器;
所述控制器包括上述網(wǎng)頁(yè)請(qǐng)求的處理裝置。
可選地,所述網(wǎng)頁(yè)請(qǐng)求中還包括其他業(yè)務(wù)參數(shù);
所述web前端,還用于將所述其他業(yè)務(wù)參數(shù)根據(jù)預(yù)設(shè)格式轉(zhuǎn)化成為相應(yīng)的字符串,所述預(yù)設(shè)格式包括json格式。
本實(shí)施例通過(guò)控制器對(duì)web前端發(fā)送的根據(jù)預(yù)先定義的封裝形式封裝后的網(wǎng)頁(yè)請(qǐng)求;根據(jù)與所述封裝形式對(duì)應(yīng)的解封裝形式,獲取所述網(wǎng)頁(yè)請(qǐng)求中包括的對(duì)象信息和方法信息;之后,根據(jù)所述對(duì)象信息,確定與所述對(duì)象信息對(duì)應(yīng)的業(yè)務(wù)方法類(lèi),根據(jù)所述方法信息,在所述業(yè)務(wù)方法類(lèi)中確定與所述方法信息對(duì)應(yīng)的業(yè)務(wù)方法;將所述網(wǎng)頁(yè)請(qǐng)求發(fā)送給與所述業(yè)務(wù)方法對(duì)應(yīng)的業(yè)務(wù)模型進(jìn)行相應(yīng)的業(yè)務(wù)處理,實(shí)現(xiàn)了控制器對(duì)web前端發(fā)送的任一網(wǎng)頁(yè)請(qǐng)求,由于任一網(wǎng)頁(yè)請(qǐng)求都具有統(tǒng)一的封裝形式,控制器不需要對(duì)每一個(gè)網(wǎng)頁(yè)請(qǐng)求定義對(duì)應(yīng)的業(yè)務(wù)方法類(lèi),解決控制器大量重復(fù)開(kāi)發(fā)冗余代碼導(dǎo)致的web開(kāi)發(fā)的效率降低的問(wèn)題。
附圖說(shuō)明
此處所說(shuō)明的附圖用來(lái)提供對(duì)本申請(qǐng)的進(jìn)一步理解,構(gòu)成本申請(qǐng)的一部分,本申請(qǐng)的示意性實(shí)施例及其說(shuō)明用于解釋本申請(qǐng),并不構(gòu)成對(duì)本申請(qǐng)的不當(dāng)限定。在附圖中:
圖1為本發(fā)明一種網(wǎng)頁(yè)請(qǐng)求的處理方法實(shí)施例一的流程圖;
圖2為本發(fā)明一種網(wǎng)頁(yè)請(qǐng)求的處理方法實(shí)施例二的流程圖;
圖3為本發(fā)明一種網(wǎng)頁(yè)請(qǐng)求的處理裝置實(shí)施例一的結(jié)構(gòu)示意圖;
圖4為本發(fā)明一種網(wǎng)頁(yè)請(qǐng)求的處理系統(tǒng)實(shí)施例一的結(jié)構(gòu)示意圖。
具體實(shí)施方式
以下將配合附圖及實(shí)施例來(lái)詳細(xì)說(shuō)明本申請(qǐng)的實(shí)施方式,藉此對(duì)本申請(qǐng)如何應(yīng)用技術(shù)手段來(lái)解決技術(shù)問(wèn)題并達(dá)成技術(shù)功效的實(shí)現(xiàn)過(guò)程能充分理解并據(jù)以實(shí)施。
在一個(gè)典型的配置中,計(jì)算設(shè)備包括一個(gè)或多個(gè)處理器(CPU)、輸入/輸出接口、網(wǎng)絡(luò)接口和內(nèi)存。
內(nèi)存可能包括計(jì)算機(jī)可讀介質(zhì)中的非永久性存儲(chǔ)器,隨機(jī)存取存儲(chǔ)器(RAM)和/或非易失性?xún)?nèi)存等形式,如只讀存儲(chǔ)器(ROM)或閃存(flash RAM)。內(nèi)存是計(jì)算機(jī)可讀介質(zhì)的示例。
計(jì)算機(jī)可讀介質(zhì)包括永久性和非永久性、可移動(dòng)和非可移動(dòng)媒體可以由任何方法或技術(shù)來(lái)實(shí)現(xiàn)信息存儲(chǔ)。信息可以是計(jì)算機(jī)可讀指令、數(shù)據(jù)結(jié)構(gòu)、程序的模塊或其他數(shù)據(jù)。計(jì)算機(jī)的存儲(chǔ)介質(zhì)的例子包括,但不限于相變內(nèi)存(PRAM)、靜態(tài)隨機(jī)存取存儲(chǔ)器(SRAM)、動(dòng)態(tài)隨機(jī)存取存儲(chǔ)器(DRAM)、其他類(lèi)型的隨機(jī)存取存儲(chǔ)器(RAM)、只讀存儲(chǔ)器(ROM)、電可擦除可編程只讀存儲(chǔ)器(EEPROM)、快閃記憶體或其他內(nèi)存技術(shù)、只讀光盤(pán)只讀存儲(chǔ)器(CD-ROM)、數(shù)字多功能光盤(pán)(DVD)或其他光學(xué)存儲(chǔ)、磁盒式磁帶,磁帶磁磁盤(pán)存儲(chǔ)或其他磁性存儲(chǔ)設(shè)備或任何其他非傳輸介質(zhì),可用于存儲(chǔ)可以被計(jì)算設(shè)備訪問(wèn)的信息。按照本文中的界定,計(jì)算機(jī)可讀介質(zhì)不包括非暫存電腦可讀媒體(transitory media),如調(diào)制的數(shù)據(jù)信號(hào)和載波。
實(shí)施例描述
下面以一實(shí)施例對(duì)本申請(qǐng)方法的實(shí)現(xiàn)作進(jìn)一步說(shuō)明,圖1為本發(fā)明一種網(wǎng)頁(yè)請(qǐng)求的處理方法實(shí)施例一的流程圖,如圖1所示,本實(shí)施例的方法可以包括:
步驟101、控制器接收web前端發(fā)送的根據(jù)預(yù)先定義的封裝形式封裝后的網(wǎng)頁(yè)請(qǐng)求。
本發(fā)明實(shí)施例中,web前端預(yù)先定義統(tǒng)一的封裝形式,對(duì)觸發(fā)每個(gè)業(yè)務(wù)的網(wǎng)頁(yè)請(qǐng)求根據(jù)前述預(yù)先定義的封裝形式進(jìn)行統(tǒng)一的封裝;這樣,盡管每個(gè)業(yè)務(wù)的網(wǎng)頁(yè)請(qǐng)求具體種類(lèi)和形式是不同的,但是經(jīng)過(guò)統(tǒng)一封裝后的網(wǎng)頁(yè)請(qǐng)求形式是統(tǒng)一,例如web前端定義一個(gè)公共的網(wǎng)頁(yè)請(qǐng)求的編碼方法。
步驟102、根據(jù)與所述封裝形式對(duì)應(yīng)的解封裝形式,獲取所述網(wǎng)頁(yè)請(qǐng)求中包括的對(duì)象信息和方法信息。
在本發(fā)明一實(shí)施例中,控制器只需要對(duì)經(jīng)過(guò)統(tǒng)一封裝后的網(wǎng)頁(yè)請(qǐng)求對(duì)應(yīng)地定義一個(gè)公共的業(yè)務(wù)方法類(lèi)用以解編碼前述經(jīng)過(guò)統(tǒng)一編碼后的網(wǎng)頁(yè)請(qǐng)求,獲取網(wǎng)頁(yè)請(qǐng)求中包括的對(duì)象信息和方法信息。
進(jìn)一步地,假設(shè)Web前端對(duì)上述網(wǎng)頁(yè)請(qǐng)求中的對(duì)象信息和方法信息經(jīng)過(guò)加密處理的話,控制器需要根據(jù)與所述加密方式對(duì)應(yīng)的解密方式,解密所述網(wǎng)頁(yè)請(qǐng)求中包括的對(duì)象信息和方法信息。
進(jìn)一步地,所述網(wǎng)頁(yè)請(qǐng)求中還包括其他業(yè)務(wù)參數(shù),web前端可以根據(jù)預(yù)設(shè)格式將其他業(yè)務(wù)參數(shù)轉(zhuǎn)化成為相應(yīng)的字符串,其中,預(yù)設(shè)格式包括json格式。
步驟103、根據(jù)所述對(duì)象信息,確定與所述對(duì)象信息對(duì)應(yīng)的業(yè)務(wù)方法類(lèi),根據(jù)所述方法信息,在所述業(yè)務(wù)方法類(lèi)中確定與所述方法信息對(duì)應(yīng)的業(yè)務(wù)方法。
對(duì)應(yīng)地,本發(fā)明實(shí)施例中,控制器獲取網(wǎng)頁(yè)請(qǐng)求中包括的對(duì)象信息和方法信息之后,根據(jù)所述對(duì)象信息,確定與所述對(duì)象信息對(duì)應(yīng)的業(yè)務(wù)方法類(lèi),根據(jù)所述方法信息,在所述業(yè)務(wù)方法類(lèi)中確定與所述方法信息對(duì)應(yīng)的業(yè)務(wù)方法,即反射調(diào)用后端的業(yè)務(wù)邏輯代碼。
步驟104、將所述網(wǎng)頁(yè)請(qǐng)求轉(zhuǎn)發(fā)給與所述業(yè)務(wù)方法對(duì)應(yīng)的業(yè)務(wù)模型進(jìn)行相應(yīng)的處理。
對(duì)應(yīng)地,控制器根據(jù)確定的業(yè)務(wù)方法確定業(yè)務(wù)模型,并將網(wǎng)頁(yè)請(qǐng)求發(fā)送給對(duì)應(yīng)的業(yè)務(wù)模型,以便業(yè)務(wù)模型對(duì)該網(wǎng)頁(yè)請(qǐng)求進(jìn)行相應(yīng)的業(yè)務(wù)處理。
進(jìn)一步地,當(dāng)網(wǎng)頁(yè)請(qǐng)求中還包括其他業(yè)務(wù)參數(shù)時(shí),控制器可以將所述網(wǎng)頁(yè)請(qǐng)求中包括的其他業(yè)務(wù)參數(shù)進(jìn)行字符串反序列化為所述業(yè)務(wù)模型識(shí)別的參數(shù)形式。
具體舉例來(lái)說(shuō),在現(xiàn)有技術(shù)中,當(dāng)去訪問(wèn)一個(gè)網(wǎng)站網(wǎng)頁(yè),網(wǎng)站網(wǎng)頁(yè)里面有不同的按鈕,這些按鈕都會(huì)觸發(fā)后臺(tái)的不同的ajax請(qǐng)求,這種ajax請(qǐng)求定義的url都是各式各樣的,在后臺(tái)的控制器(controller)里也會(huì)定義不同的類(lèi)或方法,來(lái)接受前端發(fā)過(guò)來(lái)的請(qǐng)求。
而根據(jù)圖1所示實(shí)施例所述的方法,當(dāng)去訪問(wèn)一個(gè)網(wǎng)站網(wǎng)頁(yè),網(wǎng)站網(wǎng)頁(yè)里面有不同的按鈕,這些按鈕都會(huì)觸發(fā)后臺(tái)的不同的ajax請(qǐng)求,這種ajax請(qǐng)求定義的url都是各式各樣的,首先是將各式各樣的url的ajax請(qǐng)求進(jìn)行封裝,封裝后的ajax請(qǐng)求的url是統(tǒng)一的,只不過(guò)請(qǐng)求中攜帶的參數(shù)bean和method不一樣,這樣,控制器只需要定義一個(gè)類(lèi)一個(gè)方法,去接收前端的所有的ajax請(qǐng)求,進(jìn)而根據(jù)傳過(guò)來(lái)的bean和method進(jìn)行反射,確定對(duì)應(yīng)的業(yè)務(wù)方法,將ajax請(qǐng)求轉(zhuǎn)發(fā)給與該業(yè)務(wù)方法對(duì)應(yīng)的業(yè)務(wù)模型進(jìn)行相應(yīng)的處理。
本實(shí)施例通過(guò)控制器對(duì)web前端發(fā)送的根據(jù)預(yù)先定義的封裝形式封裝后的網(wǎng)頁(yè)請(qǐng)求;根據(jù)與所述封裝形式對(duì)應(yīng)的解封裝形式,獲取所述網(wǎng)頁(yè)請(qǐng)求中包括的對(duì)象信息和方法信息;之后,根據(jù)所述對(duì)象信息,確定與所述對(duì)象信息對(duì)應(yīng)的業(yè)務(wù)方法類(lèi),根據(jù)所述方法信息,在所述業(yè)務(wù)方法類(lèi)中確定與所述方法信息對(duì)應(yīng)的業(yè)務(wù)方法;將所述網(wǎng)頁(yè)請(qǐng)求發(fā)送給與所述業(yè)務(wù)方法對(duì)應(yīng)的業(yè)務(wù)模型進(jìn)行相應(yīng)的業(yè)務(wù)處理,實(shí)現(xiàn)了控制器對(duì)web前端發(fā)送的任一網(wǎng)頁(yè)請(qǐng)求,由于任一網(wǎng)頁(yè)請(qǐng)求都具有統(tǒng)一的封裝形式,控制器不需要對(duì)每一個(gè)網(wǎng)頁(yè)請(qǐng)求定義對(duì)應(yīng)的業(yè)務(wù)方法類(lèi),解決控制器大量重復(fù)開(kāi)發(fā)冗余代碼導(dǎo)致的web開(kāi)發(fā)的效率降低的問(wèn)題。
下面采用具體的實(shí)施例,對(duì)圖1所示方法實(shí)施例的技術(shù)方案進(jìn)行詳細(xì)說(shuō)明。
圖2為本發(fā)明一種網(wǎng)頁(yè)請(qǐng)求的處理方法實(shí)施例二的流程圖,如圖2所 示,本實(shí)施例的方法可以包括:
步驟201、web前端根據(jù)公共的ajax請(qǐng)求的js方法對(duì)ajax的url請(qǐng)求進(jìn)行封裝,并將封裝好的數(shù)據(jù)信息發(fā)送給控制器。
具體地,當(dāng)web前端定義一個(gè)公共的ajax請(qǐng)求的js方法,用于對(duì)瀏覽器觸發(fā)的ajax的url請(qǐng)求進(jìn)行統(tǒng)一封裝。以一個(gè)具體例子說(shuō)明,如下是一個(gè)公共的ajax請(qǐng)求的js方法的實(shí)例
WdmUtil.ajax=function(method,bean,map,excute,url){}
其具體參數(shù)說(shuō)明如下:
Method為后端所要調(diào)用的方法信息,基于安全考慮,本實(shí)施例中可以對(duì)該方法信息進(jìn)行加密;
Bean為后端所要調(diào)用的對(duì)象信息,基于安全考慮,本實(shí)施例中可以對(duì)對(duì)象信息進(jìn)行加密;
Map為ajax請(qǐng)求所需要的其他業(yè)務(wù)參數(shù),例如用戶(hù)輸入的用戶(hù)名或密碼等信息,可以根據(jù)具體業(yè)務(wù)進(jìn)行自定義;
excute為ajax請(qǐng)求完之后執(zhí)行的方法,用戶(hù)可以自定義;
url為需要在ajax請(qǐng)求里做特殊的封裝操作,例如定義新的url,用于封裝ajax請(qǐng)求中各式各樣的url。
需要說(shuō)明的是,bean和method是后端處理具體業(yè)務(wù)邏輯的對(duì)象和方法,采用加密的方式大大降低被攻擊的風(fēng)險(xiǎn),本發(fā)明對(duì)具體的加密技術(shù)不做詳細(xì)描述,可以為現(xiàn)有的加密技術(shù)。
在這個(gè)例子中,ajax請(qǐng)求中包括其他業(yè)務(wù)參數(shù)時(shí),web前端需要根據(jù)預(yù)設(shè)格式將其他業(yè)務(wù)參數(shù)轉(zhuǎn)化成為相應(yīng)的字符串,所述預(yù)設(shè)格式包括json格式。
具體地,web前端定義一個(gè)公共的map轉(zhuǎn)化字符串的js方法,對(duì)傳入的其他業(yè)務(wù)參數(shù)由map對(duì)象轉(zhuǎn)化成json格式的字符串,如:functionmapToJson(map){}。因?yàn)樵趈s里,Map對(duì)象是鍵值對(duì)的形式存在,不能在http上作為參數(shù)請(qǐng)求,必須要轉(zhuǎn)化成字符串的形式進(jìn)行傳遞。
步驟202、控制器根據(jù)預(yù)先定義的公共的業(yè)務(wù)方法類(lèi)對(duì)web前端發(fā)送的ajax請(qǐng)求進(jìn)行解封裝,獲取ajax請(qǐng)求中的對(duì)象信息和方法信息,并反射調(diào)用后端的業(yè)務(wù)邏輯代碼。
具體地,控制器只需要定義一個(gè)公共的業(yè)務(wù)方法類(lèi)用以解編碼前述經(jīng)過(guò)統(tǒng)一編碼后的ajax請(qǐng)求,獲取ajax請(qǐng)求中包括的對(duì)象信息和方法信息。
例如,這個(gè)公共的業(yè)務(wù)方法類(lèi)要實(shí)現(xiàn)ApplicationContextAware這個(gè)接口,主要是對(duì)里面的setApplicationContext(ApplicationContext applicationContext)這個(gè)方法進(jìn)行重寫(xiě)。把容器的上下文對(duì)象信息(applicationContext)注入到這個(gè)對(duì)象里面,目的是在應(yīng)用容器初始化后是能通過(guò)這個(gè)接口對(duì)應(yīng)的方法來(lái)拿到后端業(yè)務(wù)的所有對(duì)象信息。這里的對(duì)象信息與web前端發(fā)送過(guò)來(lái)的bean這個(gè)參數(shù)是對(duì)應(yīng)的。
進(jìn)一步地,當(dāng)web前端發(fā)送過(guò)來(lái)的ajax請(qǐng)求中還包括其他業(yè)務(wù)參數(shù)時(shí), 即前端傳過(guò)來(lái)的json參數(shù),控制器例如可以利用gson這個(gè)第三方j(luò)ar包,調(diào)用gson.fromJson這個(gè)方法進(jìn)行字符串反序列化成Java的Map<String,Object>對(duì)象,因?yàn)檎{(diào)用后端的方法需要發(fā)送過(guò)來(lái)的其他業(yè)務(wù)參數(shù)統(tǒng)一是Map<String,Object>對(duì)象。
假設(shè)前端web對(duì)參數(shù)bean,method經(jīng)過(guò)加密處理,則控制器需要根據(jù)對(duì)應(yīng)的解密技術(shù)對(duì)參數(shù)bean,method進(jìn)行解密還原成正常的字符串,再利用java自帶的反射api(Class.getMethod),動(dòng)態(tài)調(diào)用后端的業(yè)務(wù)邏輯層(業(yè)務(wù)模型)。
具體地,反射調(diào)用包括:
獲得反射的對(duì)象信息:obj=applicationContext.getBean(bean)
獲得反射的方法信息:me=obj.class.getMethod(method,
new Class[]{HashMap.class})
之后,進(jìn)行反射調(diào)用:me.invoke(obj,map)
舉例來(lái)說(shuō),控制器定義一個(gè)公共的業(yè)務(wù)方法類(lèi)來(lái)反射調(diào)用后端的業(yè)務(wù)邏輯代碼的主要Java代碼片段:
步驟203、控制器根據(jù)業(yè)務(wù)邏輯代碼,將ajax的url請(qǐng)求中的其他業(yè)務(wù)參數(shù)發(fā)送給對(duì)應(yīng)業(yè)務(wù)邏輯層進(jìn)行相應(yīng)的處理。
對(duì)應(yīng)地,控制器根據(jù)步驟202中反射調(diào)用的業(yè)務(wù)邏輯代碼確定對(duì)應(yīng)的業(yè)務(wù)邏輯層(業(yè)務(wù)模型),并將步驟202獲取的Map<String,Object>發(fā)送給對(duì)應(yīng)的業(yè)務(wù)模型,以便業(yè)務(wù)模型對(duì)該ajax的url請(qǐng)求進(jìn)行相應(yīng)的業(yè)務(wù)處理。
本實(shí)施例,web前端利用公共的ajax請(qǐng)求的js方法對(duì)ajax的url請(qǐng)求封裝為固定格式ajax請(qǐng)求,之后,其他所有的url請(qǐng)求不需要控制器一一 定義對(duì)應(yīng)業(yè)務(wù)方法類(lèi)和業(yè)務(wù)方法,這樣,控制器只需要編寫(xiě)一個(gè)公共的業(yè)務(wù)方法類(lèi)來(lái)反射調(diào)用后端的業(yè)務(wù)邏輯代碼類(lèi)就可以了。解決控制器大量重復(fù)開(kāi)發(fā)冗余代碼導(dǎo)致的web開(kāi)發(fā)的效率降低的問(wèn)題。
進(jìn)一步地,為了保住業(yè)務(wù)安全可以對(duì)ajax請(qǐng)求中的參數(shù)bean和參數(shù)method進(jìn)行加密處理。
圖3為本發(fā)明一種網(wǎng)頁(yè)請(qǐng)求的處理裝置實(shí)施例一的結(jié)構(gòu)示意圖,如圖3所示,本實(shí)施例的裝置可以包括:
接收模塊31,用于接收web前端發(fā)送的根據(jù)預(yù)先定義的封裝形式封裝后的網(wǎng)頁(yè)請(qǐng)求;
獲取模塊32,用于根據(jù)與所述封裝形式對(duì)應(yīng)的解封裝形式,獲取所述網(wǎng)頁(yè)請(qǐng)求中包括的對(duì)象信息和方法信息;
確定模塊33,用于根據(jù)所述對(duì)象信息,確定與所述對(duì)象信息對(duì)應(yīng)的業(yè)務(wù)方法類(lèi),根據(jù)所述方法信息,在所述業(yè)務(wù)方法類(lèi)中確定與所述方法信息對(duì)應(yīng)的業(yè)務(wù)方法;
發(fā)送模塊34,用于將所述網(wǎng)頁(yè)請(qǐng)求發(fā)送給與所述業(yè)務(wù)方法對(duì)應(yīng)的業(yè)務(wù)模型進(jìn)行相應(yīng)的處理。
可選地,所述網(wǎng)頁(yè)請(qǐng)求中包括的對(duì)象信息和方法信息為根據(jù)預(yù)先定義的加密方式進(jìn)行加密后的信息;
所述獲取模塊32具體用于:根據(jù)與所述加密方式對(duì)應(yīng)的解密方式,解密所述網(wǎng)頁(yè)請(qǐng)求中包括的對(duì)象信息和方法信息。
可選地,所述網(wǎng)頁(yè)請(qǐng)求中還包括其他業(yè)務(wù)參數(shù),所述其他業(yè)務(wù)參數(shù)為所述web前端根據(jù)預(yù)設(shè)格式轉(zhuǎn)化成為相應(yīng)的字符串,所述預(yù)設(shè)格式包括json格式。
可選地,假設(shè)所述網(wǎng)頁(yè)請(qǐng)求中包括的其他業(yè)務(wù)參數(shù),則在發(fā)送模塊34將所述網(wǎng)頁(yè)請(qǐng)求發(fā)送給與所述業(yè)務(wù)方法對(duì)應(yīng)的業(yè)務(wù)模型進(jìn)行相應(yīng)的處理之前,所述的裝置還包括:
轉(zhuǎn)化模塊35,用于將所述網(wǎng)頁(yè)請(qǐng)求中包括的其他業(yè)務(wù)參數(shù)進(jìn)行字符串反序列化為所述業(yè)務(wù)模型識(shí)別的參數(shù)形式。
本實(shí)施例的裝置,可以用于執(zhí)行圖1或圖2所示方法實(shí)施例的技術(shù)方案,其實(shí)現(xiàn)原理和技術(shù)效果類(lèi)似,此處不再贅述。
圖4為本發(fā)明一種網(wǎng)頁(yè)請(qǐng)求的處理系統(tǒng)實(shí)施例一的結(jié)構(gòu)示意圖,如圖4所示,包括:控制器41和web前端42;
所述web前端42,用于檢測(cè)到瀏覽器觸發(fā)的網(wǎng)頁(yè)請(qǐng)求,根據(jù)預(yù)先定義的封裝形式封裝的所述網(wǎng)頁(yè)請(qǐng)求,并將所述封裝后的網(wǎng)頁(yè)請(qǐng)求發(fā)送給所述控制器;
所述控制器41包括圖3所示實(shí)施例所述的網(wǎng)頁(yè)請(qǐng)求的處理裝置。
可選地,所述網(wǎng)頁(yè)請(qǐng)求中還包括其他業(yè)務(wù)參數(shù);
所述web前端42,還用于將所述其他業(yè)務(wù)參數(shù)根據(jù)預(yù)設(shè)格式轉(zhuǎn)化成為相應(yīng)的字符串,所述預(yù)設(shè)格式包括json格式。
本實(shí)施例的裝置,可以用于執(zhí)行圖1或圖2所示方法實(shí)施例的技術(shù)方案,其實(shí)現(xiàn)原理和技術(shù)效果類(lèi)似,此處不再贅述。
本領(lǐng)域普通技術(shù)人員可以理解:實(shí)現(xiàn)上述各方法實(shí)施例的全部或部分步驟可以通過(guò)程序指令相關(guān)的硬件來(lái)完成。前述的程序可以存儲(chǔ)于一計(jì)算機(jī)可讀取存儲(chǔ)介質(zhì)中。該程序在執(zhí)行時(shí),執(zhí)行包括上述各方法實(shí)施例的步驟;而前述的存儲(chǔ)介質(zhì)包括:ROM、RAM、磁碟或者光盤(pán)等各種可以存儲(chǔ)程序代碼的介質(zhì)。
最后應(yīng)說(shuō)明的是:以上各實(shí)施例僅用以說(shuō)明本發(fā)明的技術(shù)方案,而非對(duì)其限制;盡管參照前述各實(shí)施例對(duì)本發(fā)明進(jìn)行了詳細(xì)的說(shuō)明,本領(lǐng)域的普通技術(shù)人員應(yīng)當(dāng)理解:其依然可以對(duì)前述各實(shí)施例所記載的技術(shù)方案進(jìn)行修改,或者對(duì)其中部分或者全部技術(shù)特征進(jìn)行等同替換;而這些修改或者替換,并不使相應(yīng)技術(shù)方案的本質(zhì)脫離本發(fā)明各實(shí)施例技術(shù)方案的范圍。