基于rest的java mvc系統(tǒng)及其數(shù)據(jù)處理方法
【專(zhuān)利摘要】本發(fā)明公開(kāi)了一種基于REST的JAVA?MVC系統(tǒng)及其數(shù)據(jù)處理方法,包括客戶端發(fā)送符合REST規(guī)范的數(shù)據(jù)請(qǐng)求到服務(wù)器;服務(wù)器上的過(guò)濾器攔截?cái)?shù)據(jù)請(qǐng)求,將數(shù)據(jù)請(qǐng)求的路徑與路由表中的資源路徑進(jìn)行匹配,若匹配不成功則過(guò)濾器將數(shù)據(jù)請(qǐng)求的路徑與服務(wù)器目錄下的資源路徑進(jìn)行匹配,若匹配不成功則發(fā)送錯(cuò)誤頁(yè)面給客戶端;若匹配成功則將匹配的服務(wù)器目錄下的資源信息發(fā)送給客戶端;若匹配成功則通過(guò)與數(shù)據(jù)請(qǐng)求的路徑匹配的所述路由表中的資源路徑,該過(guò)濾器將數(shù)據(jù)請(qǐng)求傳送到服務(wù)器上的MVC框架中相應(yīng)的控制器中;所述控制器接收數(shù)據(jù)請(qǐng)求并進(jìn)行處理,最后服務(wù)器將處理后的結(jié)果發(fā)給客戶端。因此,本發(fā)明能夠?qū)崿F(xiàn)快速開(kāi)發(fā)、簡(jiǎn)單的配置。
【專(zhuān)利說(shuō)明】基于REST的JAVA MVC系統(tǒng)及其數(shù)據(jù)處理方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及計(jì)算機(jī)【技術(shù)領(lǐng)域】,特別是指一種基于REST的JAVA MVC系統(tǒng)及其數(shù)據(jù)處理方法。
【背景技術(shù)】
[0002]REST 全名是 REpresentational State Transfer (表述性狀態(tài)轉(zhuǎn)移)的縮寫(xiě)。REST指的是一組架構(gòu)約束條件和原則,滿足這些約束條件和原則的應(yīng)用程序或設(shè)計(jì)就是RESTful0 REST定義了一組體系架構(gòu)原則,您可以根據(jù)這些原則設(shè)計(jì)以系統(tǒng)資源為中心的Web服務(wù),包括使用不同語(yǔ)言編寫(xiě)的客戶端如何通過(guò)HTTP處理和傳輸資源狀態(tài)。如果考慮使用REST的Web服務(wù)數(shù)量,REST近年來(lái)已經(jīng)成為最主要的Web服務(wù)設(shè)計(jì)模式。事實(shí)上,REST對(duì)Web的影響非常大,由于其使用相當(dāng)方便,已經(jīng)普遍地取代了基于SOAP和WSDL的接口設(shè)計(jì)。
[0003]MVC 全名是 Model View Controller,是模型(model)—視圖(view)—控制器(controller)的縮寫(xiě),一種軟件設(shè)計(jì)典范,用于組織代碼用一種業(yè)務(wù)邏輯和數(shù)據(jù)顯示分離的方法,這個(gè)方法的假設(shè)前提是如果業(yè)務(wù)邏輯被聚集到一個(gè)部件里面,而且界面和用戶圍繞數(shù)據(jù)的交互能被改進(jìn)和個(gè)性化定制而不需要重新編寫(xiě)業(yè)務(wù)邏輯MVC被獨(dú)特的發(fā)展起來(lái)用于映射傳統(tǒng)的輸入、處理和輸出功能在一個(gè)邏輯的圖形化用戶界面的結(jié)構(gòu)中。
[0004]MVC是一個(gè)框架模式,它強(qiáng)制性的使應(yīng)用程序的輸入、處理和輸出分開(kāi)。使用MVC應(yīng)用程序被分成三個(gè)核心部件:模型、視圖、控制器,它們各自處理自己的任務(wù)。最典型的MVC 就是 JSP+Servlet+JavaBean 的模式。常見(jiàn)的 MVC 如:Struts、SpringMVC 等。但是 MVC框架集成的功能越多,配置就會(huì)相對(duì)的越繁瑣。如果想要快速開(kāi)發(fā)一個(gè)小型的Web應(yīng)用程序,采用這些框架會(huì)使項(xiàng)目看起來(lái)很臃腫,對(duì)框架的配置如果再不熟悉的話,那么會(huì)花大量時(shí)間在配置上面,得不償失。
【發(fā)明內(nèi)容】
[0005]有鑒于此,本發(fā)明的目的在于提出一種基于REST的JAVA MVC系統(tǒng)及其數(shù)據(jù)處理方法,能夠?qū)崿F(xiàn)快速開(kāi)發(fā)、簡(jiǎn)單的配置。
[0006]基于上述目的本發(fā)明提供的一種基于REST的JAVA MVC數(shù)據(jù)處理方法,包括步驟:
[0007]S1:客戶端發(fā)送符合REST規(guī)范的數(shù)據(jù)請(qǐng)求到服務(wù)器;
[0008]S2:所述服務(wù)器上的過(guò)濾器攔截所述的數(shù)據(jù)請(qǐng)求,該過(guò)濾器將所述數(shù)據(jù)請(qǐng)求的路徑與路由表中的資源路徑進(jìn)行匹配,若匹配不成功則進(jìn)行步驟S3 ;若匹配成功則進(jìn)行步驟S4;
[0009]S3:該過(guò)濾器將所述數(shù)據(jù)請(qǐng)求的路徑與所述服務(wù)器目錄下的資源路徑進(jìn)行匹配,若匹配不成功則所述服務(wù)器發(fā)送錯(cuò)誤頁(yè)面給所述的客戶端;若匹配成功則將匹配的所述服務(wù)器目錄下的資源信息發(fā)送給所述的客戶端;
[0010]S4:通過(guò)與所述數(shù)據(jù)請(qǐng)求的路徑匹配的所述路由表中的資源路徑,該過(guò)濾器將所述的數(shù)據(jù)請(qǐng)求傳送到所述服務(wù)器上的MVC框架中相應(yīng)的控制器中;所述控制器接收所述數(shù)據(jù)請(qǐng)求并進(jìn)行處理,最后所述服務(wù)器將所述控制器處理后的結(jié)果發(fā)送給所述的客戶端。
[0011]可選地,在S2中所述過(guò)濾器在第一次使用前是需要進(jìn)行初始化,其過(guò)程為:
[0012]啟動(dòng)所述的服務(wù)器;
[0013]初始化過(guò)濾器;
[0014]根據(jù)所述服務(wù)器中的web.xml初始化過(guò)濾器的全局參數(shù);
[0015]注冊(cè)所述控制器到所述服務(wù)器的路由表的映射;
[0016]注冊(cè)監(jiān)聽(tīng)器使過(guò)濾器處于監(jiān)聽(tīng)狀態(tài)。
[0017]進(jìn)一步地,在S4中所述控制器處理接收的所述數(shù)據(jù)請(qǐng)求時(shí),其具體的實(shí)施過(guò)程是控制器將數(shù)據(jù)請(qǐng)求發(fā)送給服務(wù)器上的MVC框架中的模型;該模型對(duì)數(shù)據(jù)請(qǐng)求進(jìn)行業(yè)務(wù)邏輯判斷,最后該模型將處理后的數(shù)據(jù)請(qǐng)求返回給所述的控制器。
[0018]進(jìn)一步地,在S4中所述數(shù)據(jù)請(qǐng)求的路徑與路由表中的資源路徑匹配成功后,并且在該過(guò)濾器將所述的數(shù)據(jù)請(qǐng)求傳送到所述服務(wù)器上的MVC框架中相應(yīng)的控制器中之前,進(jìn)行該數(shù)據(jù)請(qǐng)求是否配置有監(jiān)聽(tīng)器的判斷;若該數(shù)據(jù)請(qǐng)求配置了監(jiān)聽(tīng)器,則先執(zhí)行該監(jiān)聽(tīng)器,然后根據(jù)該監(jiān)聽(tīng)器的信息將所述的數(shù)據(jù)請(qǐng)求發(fā)送給相應(yīng)的控制器;若該數(shù)據(jù)請(qǐng)求沒(méi)有配置監(jiān)聽(tīng)器,則直接將該數(shù)據(jù)請(qǐng)求傳送給相應(yīng)的控制器。
[0019]進(jìn)一步地,當(dāng)所述控制器接收模型處理的數(shù)據(jù)結(jié)果之后,并且在該處理后的數(shù)據(jù)結(jié)果通過(guò)服務(wù)器返回給客戶端之前,進(jìn)行判斷該處理后的數(shù)據(jù)結(jié)果是否配置有監(jiān)聽(tīng)器;若配置有監(jiān)聽(tīng)器,則先執(zhí)行該監(jiān)聽(tīng)器,然后再將處理后的數(shù)據(jù)請(qǐng)求返回給客戶端;若沒(méi)有配置監(jiān)聽(tīng)器,則控制器接收模型處理的數(shù)據(jù)結(jié)果之后,服務(wù)器直接將處理后的數(shù)據(jù)請(qǐng)求返回給客戶端。
[0020]進(jìn)一步地,所述服務(wù)器將處理后的結(jié)果發(fā)送給所述客戶端的過(guò)程中,若需要以視圖的形式呈現(xiàn)給所述客戶端的時(shí)候,則通過(guò)所述服務(wù)器上的MVC框架中的視圖最后將處理后的結(jié)果發(fā)送給所述的客戶端。
[0021]另外,本發(fā)明還提供了一種基于REST的JAVA MVC系統(tǒng),包括:
[0022]數(shù)據(jù)請(qǐng)求發(fā)送單元,用于客戶端發(fā)送符合REST規(guī)范的數(shù)據(jù)請(qǐng)求到服務(wù)器;
[0023]攔截匹配單元,用于所述服務(wù)器上的過(guò)濾器攔截所述的數(shù)據(jù)請(qǐng)求,該過(guò)濾器將所述數(shù)據(jù)請(qǐng)求的路徑與路由表中的資源路徑進(jìn)行匹配,若匹配不成功則攔截匹配單元與資源路徑匹配單元連接;若匹配成功則攔截匹配單元與數(shù)據(jù)處理單元連接;
[0024]資源路徑匹配單元,用于該過(guò)濾器將所述數(shù)據(jù)請(qǐng)求的路徑與所述服務(wù)器目錄下的資源路徑進(jìn)行匹配,若匹配不成功則所述服務(wù)器發(fā)送錯(cuò)誤頁(yè)面給所述的客戶端;若匹配成功則將匹配的所述服務(wù)器目錄下的資源信息發(fā)送給所述的客戶端;
[0025]數(shù)據(jù)處理單元,用于通過(guò)與所述數(shù)據(jù)請(qǐng)求的路徑匹配的所述路由表中的資源路徑,該過(guò)濾器將所述的數(shù)據(jù)請(qǐng)求傳送到所述服務(wù)器上的MVC框架中相應(yīng)的控制器中;所述控制器接收所述數(shù)據(jù)請(qǐng)求并進(jìn)行處理,最后所述服務(wù)器將所述控制器處理后的結(jié)果發(fā)送給所述的客戶端。
[0026]可選地,所述數(shù)據(jù)處理單元在所述數(shù)據(jù)請(qǐng)求的路徑與路由表中的資源路徑匹配成功后,并且在該過(guò)濾器將所述的數(shù)據(jù)請(qǐng)求傳送到所述服務(wù)器上的MVC框架中相應(yīng)的控制器中之前,進(jìn)行該數(shù)據(jù)請(qǐng)求是否配置有監(jiān)聽(tīng)器的判斷;若該數(shù)據(jù)請(qǐng)求配置了監(jiān)聽(tīng)器,則先執(zhí)行該監(jiān)聽(tīng)器,然后根據(jù)該監(jiān)聽(tīng)器的信息將所述的數(shù)據(jù)請(qǐng)求發(fā)送給相應(yīng)的控制器;若該數(shù)據(jù)請(qǐng)求沒(méi)有配置監(jiān)聽(tīng)器,則直接將該數(shù)據(jù)請(qǐng)求傳送給相應(yīng)的控制器。
[0027]進(jìn)一步地,當(dāng)所述數(shù)據(jù)處理單元中的所述控制器接收模型處理的數(shù)據(jù)結(jié)果之后,并且在該處理后的數(shù)據(jù)結(jié)果通過(guò)服務(wù)器返回給客戶端之前,進(jìn)行判斷該處理后的數(shù)據(jù)結(jié)果是否配置有監(jiān)聽(tīng)器;若配置有監(jiān)聽(tīng)器,則先執(zhí)行該監(jiān)聽(tīng)器,然后再將處理后的數(shù)據(jù)請(qǐng)求返回給客戶端;若沒(méi)有配置監(jiān)聽(tīng)器,則控制器接收模型處理的數(shù)據(jù)結(jié)果之后,服務(wù)器直接將處理后的數(shù)據(jù)請(qǐng)求返回給客戶端。
[0028]進(jìn)一步地,所述攔截匹配單元中過(guò)濾器在第一次使用前是需要進(jìn)行初始化,首先啟動(dòng)所述的服務(wù)器,初始化過(guò)濾器,然后根據(jù)所述服務(wù)器中的web.xml初始化過(guò)濾器的全局參數(shù);之后,注冊(cè)所述控制器到所述服務(wù)器的路由表的映射;最后,注冊(cè)監(jiān)聽(tīng)器使過(guò)濾器處于監(jiān)聽(tīng)狀態(tài)。
[0029]從上面所述可以看出,本發(fā)明提供的基于REST的JAVA MVC系統(tǒng)及其數(shù)據(jù)處理方法,通過(guò)服務(wù)器上的過(guò)濾器攔截符合REST規(guī)范的數(shù)據(jù)請(qǐng)求,將數(shù)據(jù)請(qǐng)求的路徑與路由表中的資源路徑進(jìn)行匹配,若匹配不成功則過(guò)濾器將數(shù)據(jù)請(qǐng)求的路徑與服務(wù)器目錄下的資源路徑進(jìn)行匹配,若匹配成功則對(duì)數(shù)據(jù)進(jìn)行處理。因此,本發(fā)明所述的基于REST的JAVA MVC系統(tǒng)及其數(shù)據(jù)處理方法將REST規(guī)范與MVC框架系統(tǒng)相結(jié)合,形成一種輕量級(jí)的系統(tǒng)及數(shù)據(jù)處理的方法。
【專(zhuān)利附圖】
【附圖說(shuō)明】
[0030]圖1為本發(fā)明實(shí)施例基于REST的JAVA MVC數(shù)據(jù)處理方法的流程示意圖;
[0031]圖2為本發(fā)明實(shí)施例過(guò)濾器初始化的流程示意圖;
[0032]圖3為本發(fā)明實(shí)施例基于REST的JAVA MVC系統(tǒng)的結(jié)構(gòu)示意圖。
【具體實(shí)施方式】
[0033]為使本發(fā)明的目的、技術(shù)方案和優(yōu)點(diǎn)更加清楚明白,以下結(jié)合具體實(shí)施例,并參照附圖,對(duì)本發(fā)明進(jìn)一步詳細(xì)說(shuō)明。
[0034]參閱圖1所示,為本發(fā)明實(shí)施例基于REST的JAVA MVC數(shù)據(jù)處理方法的流程示意圖,所述基于REST的JAVA MVC數(shù)據(jù)處理方法包括以下步驟:
[0035]步驟101,客戶端發(fā)送符合REST規(guī)范的數(shù)據(jù)請(qǐng)求到服務(wù)器。
[0036]其中,所述客戶端請(qǐng)求的方式可以為GET,POST, PUT, DELETE, HEAD等等。
[0037]步驟102,所述服務(wù)器上的過(guò)濾器Filer攔截所述的數(shù)據(jù)請(qǐng)求,該過(guò)濾器將所述數(shù)據(jù)請(qǐng)求的路徑與路由表中的資源路徑進(jìn)行匹配,若匹配不成功則進(jìn)行步驟103 ;若匹配成功則進(jìn)行步驟104。
[0038]在本發(fā)明的一個(gè)實(shí)施例中,過(guò)濾器Filer在第一次使用前是需要進(jìn)行初始化的,其過(guò)程為:
[0039]步驟201:啟動(dòng)所述的服務(wù)器。
[0040]步驟202:初始化過(guò)濾器Filer。
[0041]步驟203:根據(jù)所述服務(wù)器中的web.xml初始化過(guò)濾器Filer的全局參數(shù)。
[0042]在本發(fā)明的實(shí)施例中,在web.xml中配置過(guò)濾器Filter,設(shè)置最基本的參數(shù),如:項(xiàng)目注解類(lèi)型掃描路徑、控制層類(lèi)文件過(guò)濾、項(xiàng)目文件編碼、頁(yè)面內(nèi)容目錄等。初始化過(guò)濾器Filer的全局參數(shù)后,再根據(jù)該參數(shù)全自動(dòng)掃描類(lèi)文件。
[0043]步驟204:注冊(cè)所述控制器到所述服務(wù)器的路由表的映射。
[0044]其中,控制器ContiOller通過(guò)注解編程的方式實(shí)現(xiàn)在路由表的映射,并通過(guò)注解的方式標(biāo)識(shí)參數(shù)。
[0045]步驟205:注冊(cè)監(jiān)聽(tīng)器使過(guò)濾器Filer處于監(jiān)聽(tīng)狀態(tài)。
[0046]步驟103,該過(guò)濾器將所述數(shù)據(jù)請(qǐng)求的路徑與所述服務(wù)器目錄下的資源路徑進(jìn)行匹配,若匹配不成功則所述服務(wù)器發(fā)送404錯(cuò)誤頁(yè)面給所述的客戶端;若匹配成功則將與所述服務(wù)器將所述數(shù)據(jù)請(qǐng)求的路徑匹配的所述服務(wù)器目錄下的資源路徑下的資源信息發(fā)送給所述的客戶端。
[0047]在實(shí)施例中,數(shù)據(jù)請(qǐng)求的路徑與服務(wù)器目錄下的資源路徑匹配后,找到的資源信息可以為html、jsp、word以及圖片等等形式的信息。
[0048]步驟104,通過(guò)與所述數(shù)據(jù)請(qǐng)求的路徑匹配的所述路由表中的資源路徑,該過(guò)濾器將所述的數(shù)據(jù)請(qǐng)求傳送到所述服務(wù)器上的MVC框架中相應(yīng)的控制器中;所述控制器接收所述數(shù)據(jù)請(qǐng)求并進(jìn)行處理,最后所述服務(wù)器將所述控制器處理后的結(jié)果發(fā)送給所述的客戶端。
[0049]在本發(fā)明的實(shí)施例中,控制器Controller處理接收的所述數(shù)據(jù)請(qǐng)求時(shí),其具體的實(shí)施過(guò)程是控制器Controller將數(shù)據(jù)請(qǐng)求發(fā)送給服務(wù)器上的MVC框架中的模型Model。該模型Model對(duì)數(shù)據(jù)請(qǐng)求進(jìn)行業(yè)務(wù)邏輯判斷,在進(jìn)行處理的過(guò)程中可能需要提取所述服務(wù)器上的數(shù)據(jù)庫(kù),最后該模型Model將處理后的數(shù)據(jù)請(qǐng)求返回給所述的控制器Controller。還有,該模型Model還可以將處理后的數(shù)據(jù)請(qǐng)求存入到所述服務(wù)器上的數(shù)據(jù)庫(kù)中。
[0050]作為本發(fā)明的一個(gè)實(shí)施例,在所述數(shù)據(jù)請(qǐng)求的路徑與路由表中的資源路徑匹配成功后,并且在該過(guò)濾器Filer將所述的數(shù)據(jù)請(qǐng)求傳送到所述服務(wù)器上的MVC框架中相應(yīng)的控制器controller中之前,可以進(jìn)行該數(shù)據(jù)請(qǐng)求是否配置有監(jiān)聽(tīng)器的判斷。若該數(shù)據(jù)請(qǐng)求配置了監(jiān)聽(tīng)器,則先執(zhí)行該監(jiān)聽(tīng)器,然后根據(jù)該監(jiān)聽(tīng)器的信息將所述的數(shù)據(jù)請(qǐng)求發(fā)送給相應(yīng)的控制器controller。若該數(shù)據(jù)請(qǐng)求沒(méi)有配置監(jiān)聽(tīng)器,則直接將該數(shù)據(jù)請(qǐng)求傳送給相應(yīng)的控制器contiOller。其中,該監(jiān)聽(tīng)器可以設(shè)置有認(rèn)證、日志、數(shù)據(jù)壓縮、圖片轉(zhuǎn)換以及令牌等等應(yīng)用。
[0051]作為本發(fā)明的另一個(gè)實(shí)施例中,當(dāng)所述控制器controller接收模型Model處理后的結(jié)果之后,并且在該處理后的數(shù)據(jù)結(jié)果通過(guò)服務(wù)器返回給客戶端之前,進(jìn)行判斷該處理后的數(shù)據(jù)結(jié)果是否配置有監(jiān)聽(tīng)器。若配置有監(jiān)聽(tīng)器,則先執(zhí)行該監(jiān)聽(tīng)器,然后再將處理后的數(shù)據(jù)請(qǐng)求返回給客戶端。若沒(méi)有配置監(jiān)聽(tīng)器,則控制器contiOller接收模型Model處理后的結(jié)果之后,服務(wù)器直接將處理后的數(shù)據(jù)請(qǐng)求返回給客戶端。
[0052]另外,值得說(shuō)明的是所述服務(wù)器返回的處理后的數(shù)據(jù)請(qǐng)求可以是Json、XML、JSP、Free Mark以及Velocity等等形式的數(shù)據(jù)。在本發(fā)明的另一個(gè)實(shí)施例中所述服務(wù)器將處理后的結(jié)果發(fā)送給所述客戶端的過(guò)程中,若需要以視圖view的形式呈現(xiàn)給所述客戶端的時(shí)候,例如JSP、Velocity和Free Mark等形式的數(shù)據(jù),則通過(guò)所述服務(wù)器上的MVC框架中的視圖View最后將處理后的結(jié)果發(fā)送給所述的客戶端。其中,視圖View接收控制器controIler傳送的處理后的數(shù)據(jù)請(qǐng)求,然后視圖view將處理后的數(shù)據(jù)請(qǐng)求返回給所述的客戶端。當(dāng)然,若不需要以視圖view的形式呈現(xiàn)給所述客戶端的時(shí)候,則所述服務(wù)器直接將處理后的數(shù)據(jù)請(qǐng)求返回客戶端。
[0053]參閱圖3所示,為本發(fā)明實(shí)施例基于REST的JAVA MVC系統(tǒng)的結(jié)構(gòu)示意圖,所述基于REST的JAVA MVC系統(tǒng)包括:
[0054]數(shù)據(jù)請(qǐng)求發(fā)送單元301,用于客戶端發(fā)送符合REST規(guī)范的數(shù)據(jù)請(qǐng)求到服務(wù)器。其中,所述客戶端請(qǐng)求的方式可以為GET,POST, PUT, DELETE, HEAD等等。
[0055]攔截匹配單元302,用于所述服務(wù)器上的過(guò)濾器Filer攔截所述的數(shù)據(jù)請(qǐng)求,該過(guò)濾器將所述數(shù)據(jù)請(qǐng)求的路徑與路由表中的資源路徑進(jìn)行匹配,若匹配不成功則攔截匹配單元302與資源路徑匹配單元303連接;若匹配成功則攔截匹配單元302與數(shù)據(jù)處理單元304連接。
[0056]在本發(fā)明的一個(gè)實(shí)施例中,過(guò)濾器Filer在第一次使用前是需要進(jìn)行初始化的,攔截匹配單元302首先啟動(dòng)所述的服務(wù)器,初始化過(guò)濾器Filer,然后根據(jù)所述服務(wù)器中的web.xml初始化過(guò)濾器Filer的全局參數(shù)。其中,在web.xml中配置過(guò)濾器Filter,設(shè)置最基本的參數(shù),如:項(xiàng)目注解類(lèi)型掃描路徑、控制層類(lèi)文件過(guò)濾、項(xiàng)目文件編碼、頁(yè)面內(nèi)容目錄等。初始化過(guò)濾器Filer的全局參數(shù)后,再根據(jù)該參數(shù)全自動(dòng)掃描類(lèi)文件。之后,注冊(cè)所述控制器到所述服務(wù)器的路由表的映射。其中,控制器Controller通過(guò)注解編程的方式實(shí)現(xiàn)在路由表的映射,并通過(guò)注解的方式標(biāo)識(shí)參數(shù)。最后,注冊(cè)監(jiān)聽(tīng)器使過(guò)濾器Filer處于監(jiān)聽(tīng)狀態(tài)。
[0057]資源路徑匹配單元303,用于該過(guò)濾器將所述數(shù)據(jù)請(qǐng)求的路徑與所述服務(wù)器目錄下的資源路徑進(jìn)行匹配,若匹配不成功則所述服務(wù)器發(fā)送404錯(cuò)誤頁(yè)面給所述的客戶端;若匹配成功則將與所述服務(wù)器將所述數(shù)據(jù)請(qǐng)求的路徑匹配的所述服務(wù)器目錄下的資源路徑下的資源信息發(fā)送給所述的客戶端。
[0058]在實(shí)施例中,數(shù)據(jù)請(qǐng)求的路徑與服務(wù)器目錄下的資源路徑匹配后,找到的資源信息可以為html、jsp、word以及圖片等等形式的信息。
[0059]數(shù)據(jù)處理單元304,能夠通過(guò)與所述數(shù)據(jù)請(qǐng)求的路徑匹配的所述路由表中的資源路徑,該過(guò)濾器將所述的數(shù)據(jù)請(qǐng)求傳送到所述服務(wù)器上的MVC框架中相應(yīng)的控制器中;所述控制器接收所述數(shù)據(jù)請(qǐng)求并進(jìn)行處理,最后所述服務(wù)器將所述控制器處理后的結(jié)果發(fā)送給所述的客戶端。
[0060]在本發(fā)明的實(shí)施例中,控制器Controller處理接收的所述數(shù)據(jù)請(qǐng)求時(shí),其具體的實(shí)施過(guò)程是控制器Controller將數(shù)據(jù)請(qǐng)求發(fā)送給服務(wù)器上的MVC框架中的模型Model。該模型Model對(duì)數(shù)據(jù)請(qǐng)求進(jìn)行業(yè)務(wù)邏輯判斷,在進(jìn)行處理的過(guò)程中可能需要提取所述服務(wù)器上的數(shù)據(jù)庫(kù),最后該模型Model將處理后的數(shù)據(jù)請(qǐng)求返回給所述的控制器Controller。還有,該模型Model還可以將處理后的數(shù)據(jù)請(qǐng)求存入到所述服務(wù)器上的數(shù)據(jù)庫(kù)中。
[0061]作為本發(fā)明的一個(gè)實(shí)施例,在所述數(shù)據(jù)請(qǐng)求的路徑與路由表中的資源路徑匹配成功后,并且在該過(guò)濾器Filer將所述的數(shù)據(jù)請(qǐng)求傳送到所述服務(wù)器上的MVC框架中相應(yīng)的控制器controller中之前,可以進(jìn)行該數(shù)據(jù)請(qǐng)求是否配置有監(jiān)聽(tīng)器的判斷。若該數(shù)據(jù)請(qǐng)求配置了監(jiān)聽(tīng)器,則先執(zhí)行該監(jiān)聽(tīng)器,然后根據(jù)該監(jiān)聽(tīng)器的信息將所述的數(shù)據(jù)請(qǐng)求發(fā)送給相應(yīng)的控制器controller。若該數(shù)據(jù)請(qǐng)求沒(méi)有配置監(jiān)聽(tīng)器,則直接將該數(shù)據(jù)請(qǐng)求傳送給相應(yīng)的控制器contiOller。其中,該監(jiān)聽(tīng)器可以設(shè)置有認(rèn)證、日志、數(shù)據(jù)壓縮、圖片轉(zhuǎn)換以及令牌等等應(yīng)用。
[0062]作為本發(fā)明的另一個(gè)實(shí)施例中,當(dāng)所述控制器controller接收模型Model處理后的結(jié)果之后,并且在該處理后的數(shù)據(jù)結(jié)果通過(guò)服務(wù)器返回給客戶端之前,進(jìn)行判斷該處理后的數(shù)據(jù)結(jié)果是否配置有監(jiān)聽(tīng)器。若配置有監(jiān)聽(tīng)器,則先執(zhí)行該監(jiān)聽(tīng)器,然后再將處理后的數(shù)據(jù)請(qǐng)求返回給客戶端。若沒(méi)有配置監(jiān)聽(tīng)器,則控制器contiOller接收模型Model處理后的結(jié)果之后,服務(wù)器直接將處理后的數(shù)據(jù)請(qǐng)求返回給客戶端。
[0063]另外,值得說(shuō)明的是所述服務(wù)器返回的處理后的數(shù)據(jù)請(qǐng)求可以是Json、XML、JSP、Free Mark以及Velocity等等形式的數(shù)據(jù)。在本發(fā)明的另一個(gè)實(shí)施例中所述服務(wù)器將處理后的結(jié)果發(fā)送給所述客戶端的過(guò)程中,若需要以視圖view的形式呈現(xiàn)給所述客戶端的時(shí)候,例如JSP、Velocity和Free Mark等形式的數(shù)據(jù),則通過(guò)所述服務(wù)器上的MVC框架中的視圖View最后將處理后的結(jié)果發(fā)送給所述的客戶端。其中,視圖View接收控制器controIler傳送的處理后的數(shù)據(jù)請(qǐng)求,然后視圖view將處理后的數(shù)據(jù)請(qǐng)求返回給所述的客戶端。當(dāng)然,若不需要以視圖view的形式呈現(xiàn)給所述客戶端的時(shí)候,則所述服務(wù)器直接將處理后的數(shù)據(jù)請(qǐng)求返回客戶端。
[0064]由此可以看出,本發(fā)明實(shí)現(xiàn)的基于REST的JAVA MVC系統(tǒng)及其數(shù)據(jù)處理方法,創(chuàng)造性的提出了基于REST的規(guī)范建立JAVA MVC框架,融合了 REST和JAVA MVC的優(yōu)點(diǎn),減少了第三方包的依賴(lài),大大降低了配置文件的時(shí)間,縮小了系統(tǒng)體積;而且,在將數(shù)據(jù)請(qǐng)求傳送給控制器之前,進(jìn)行判斷該數(shù)據(jù)請(qǐng)求是否配置有監(jiān)聽(tīng)器,配置監(jiān)聽(tīng)器后可以直接通過(guò)該監(jiān)聽(tīng)器將所述的數(shù)據(jù)請(qǐng)求發(fā)送給相應(yīng)的控制器,從而使數(shù)據(jù)請(qǐng)求能夠快速、方便地找到并傳送達(dá)相對(duì)應(yīng)的控制器;在將數(shù)據(jù)請(qǐng)求傳送給控制器之前使用監(jiān)聽(tīng)器也使得數(shù)據(jù)請(qǐng)求的傳送更為安全;還有,在所述控制器將處理后的數(shù)據(jù)請(qǐng)求通過(guò)服務(wù)器返回給客戶端之前,使用監(jiān)聽(tīng)器達(dá)到了將整個(gè)客戶端數(shù)據(jù)請(qǐng)求的過(guò)程監(jiān)視起來(lái);與此同時(shí),本發(fā)明采用無(wú)侵入的注解方式進(jìn)行開(kāi)發(fā)模式,配置更簡(jiǎn)易、項(xiàng)目開(kāi)發(fā)周期更短、項(xiàng)目體積大大減小,直正的做到了跨平臺(tái)、跨語(yǔ)言的開(kāi)發(fā);另外,后期維護(hù)成本大大降低,由于采用了 Java原生低層代碼和功能,使得項(xiàng)目更穩(wěn)定、更安全、更便于維護(hù),從而提高了 Web開(kāi)發(fā)效率;特別適用于中小型項(xiàng)目,快速開(kāi)發(fā)、簡(jiǎn)易配置;最后,整個(gè)所述的基于REST的JAVA MVC系統(tǒng)及其數(shù)據(jù)處理方法簡(jiǎn)便、緊湊,易于實(shí)現(xiàn)。
[0065]所屬領(lǐng)域的普通技術(shù)人員應(yīng)當(dāng)理解:以上所述僅為本發(fā)明的具體實(shí)施例而已,并不用于限制本發(fā)明,凡在本發(fā)明的精神和原則之內(nèi),所做的任何修改、等同替換、改進(jìn)等,均應(yīng)包含在本發(fā)明的保護(hù)范圍之內(nèi)。
【權(quán)利要求】
1.一種基于REST的JAVA MVC數(shù)據(jù)處理方法,其特征在于,包括步驟: 51:客戶端發(fā)送符合REST規(guī)范的數(shù)據(jù)請(qǐng)求到服務(wù)器; 52:所述服務(wù)器上的過(guò)濾器攔截所述的數(shù)據(jù)請(qǐng)求,該過(guò)濾器將所述數(shù)據(jù)請(qǐng)求的路徑與路由表中的資源路徑進(jìn)行匹配,若匹配不成功則進(jìn)行步驟S3 ;若匹配成功則進(jìn)行步驟S4 ; 53:該過(guò)濾器將所述數(shù)據(jù)請(qǐng)求的路徑與所述服務(wù)器目錄下的資源路徑進(jìn)行匹配,若匹配不成功則所述服務(wù)器發(fā)送錯(cuò)誤頁(yè)面給所述的客戶端;若匹配成功則將匹配的所述服務(wù)器目錄下的資源信息發(fā)送給所述的客戶端; S4:通過(guò)與所述數(shù)據(jù)請(qǐng)求的路徑匹配的所述路由表中的資源路徑,該過(guò)濾器將所述的數(shù)據(jù)請(qǐng)求傳送到所述服務(wù)器上的MVC框架中相應(yīng)的控制器中;所述控制器接收所述數(shù)據(jù)請(qǐng)求并進(jìn)行處理,最后所述服務(wù)器將所述控制器處理后的結(jié)果發(fā)送給所述的客戶端。
2.根據(jù)權(quán)利要求1所述的處理方法,其特征在于,在S2中所述過(guò)濾器在第一次使用前是需要進(jìn)行初始化,其過(guò)程為: 啟動(dòng)所述的服務(wù)器; 初始化過(guò)濾器; 根據(jù)所述服務(wù)器中的web.xml初始化過(guò)濾器的全局參數(shù); 注冊(cè)所述控制器到所述服務(wù)器的路由表的映射; 注冊(cè)監(jiān)聽(tīng)器使過(guò)濾器處于監(jiān)聽(tīng)狀態(tài)。
3.根據(jù)權(quán)利要求1或2所述的處理方法,其特征在于,在S4中所述控制器處理接收的所述數(shù)據(jù)請(qǐng)求時(shí),其具體的實(shí)施過(guò)程是控制器將數(shù)據(jù)請(qǐng)求發(fā)送給服務(wù)器上的MVC框架中的模型;該模型對(duì)數(shù)據(jù)請(qǐng)求進(jìn)行業(yè)務(wù)邏輯判斷,最后該模型將處理后的數(shù)據(jù)請(qǐng)求返回給所述的控制器。
4.根據(jù)權(quán)利要求3所述的處理方法,其特征在于,在S4中所述數(shù)據(jù)請(qǐng)求的路徑與路由表中的資源路徑匹配成功后,并且在該過(guò)濾器將所述的數(shù)據(jù)請(qǐng)求傳送到所述服務(wù)器上的MVC框架中相應(yīng)的控制器中之前,進(jìn)行該數(shù)據(jù)請(qǐng)求是否配置有監(jiān)聽(tīng)器的判斷;若該數(shù)據(jù)請(qǐng)求配置了監(jiān)聽(tīng)器,則先執(zhí)行該監(jiān)聽(tīng)器,然后根據(jù)該監(jiān)聽(tīng)器的信息將所述的數(shù)據(jù)請(qǐng)求發(fā)送給相應(yīng)的控制器;若該數(shù)據(jù)請(qǐng)求沒(méi)有配置監(jiān)聽(tīng)器,則直接將該數(shù)據(jù)請(qǐng)求傳送給相應(yīng)的控制器。
5.根據(jù)權(quán)利要求4所述的處理方法,其特征在于,當(dāng)所述控制器接收模型處理的數(shù)據(jù)結(jié)果之后,并且在該處理后的數(shù)據(jù)結(jié)果通過(guò)服務(wù)器返回給客戶端之前,進(jìn)行判斷該處理后的數(shù)據(jù)結(jié)果是否配置有監(jiān)聽(tīng)器;若配置有監(jiān)聽(tīng)器,則先執(zhí)行該監(jiān)聽(tīng)器,然后再將處理后的數(shù)據(jù)請(qǐng)求返回給客戶端;若沒(méi)有配置監(jiān)聽(tīng)器,則控制器接收模型處理的數(shù)據(jù)結(jié)果之后,服務(wù)器直接將處理后的數(shù)據(jù)請(qǐng)求返回給客戶端。
6.根據(jù)權(quán)利要求5所述的處理方法,其特征在于,所述服務(wù)器將處理后的結(jié)果發(fā)送給所述客戶端的過(guò)程中,若需要以視圖的形式呈現(xiàn)給所述客戶端的時(shí)候,則通過(guò)所述服務(wù)器上的MVC框架中的視圖最后將處理后的結(jié)果發(fā)送給所述的客戶端。
7.一種基于REST的JAVA MVC系統(tǒng),其特征在于,包括: 數(shù)據(jù)請(qǐng)求發(fā)送單元,用于客戶端發(fā)送符合REST規(guī)范的數(shù)據(jù)請(qǐng)求到服務(wù)器; 攔截匹配單元,用于所述服務(wù)器上的過(guò)濾器攔截所述的數(shù)據(jù)請(qǐng)求,該過(guò)濾器將所述數(shù)據(jù)請(qǐng)求的路徑與路由表中的資源路徑進(jìn)行匹配,若匹配不成功則攔截匹配單元與資源路徑匹配單元連接;若匹配成功則攔截匹配單元與數(shù)據(jù)處理單元連接;資源路徑匹配單元,用于該過(guò)濾器將所述數(shù)據(jù)請(qǐng)求的路徑與所述服務(wù)器目錄下的資源路徑進(jìn)行匹配,若匹配不成功則所述服務(wù)器發(fā)送錯(cuò)誤頁(yè)面給所述的客戶端;若匹配成功則將匹配的所述服務(wù)器目錄下的資源信息發(fā)送給所述的客戶端; 數(shù)據(jù)處理單元,用于通過(guò)與所述數(shù)據(jù)請(qǐng)求的路徑匹配的所述路由表中的資源路徑,該過(guò)濾器將所述的數(shù)據(jù)請(qǐng)求傳送到所述服務(wù)器上的MVC框架中相應(yīng)的控制器中;所述控制器接收所述數(shù)據(jù)請(qǐng)求并進(jìn)行處理,最后所述服務(wù)器將所述控制器處理后的結(jié)果發(fā)送給所述的客戶端。
8.根據(jù)權(quán)利要求7所述的系統(tǒng),其特征在于,所述數(shù)據(jù)處理單元在所述數(shù)據(jù)請(qǐng)求的路徑與路由表中的資源路徑匹配成功后,并且在該過(guò)濾器將所述的數(shù)據(jù)請(qǐng)求傳送到所述服務(wù)器上的MVC框架中相應(yīng)的控制器中之前,進(jìn)行該數(shù)據(jù)請(qǐng)求是否配置有監(jiān)聽(tīng)器的判斷;若該數(shù)據(jù)請(qǐng)求配置了監(jiān)聽(tīng)器,則先執(zhí)行該監(jiān)聽(tīng)器,然后根據(jù)該監(jiān)聽(tīng)器的信息將所述的數(shù)據(jù)請(qǐng)求發(fā)送給相應(yīng)的控制器;若該數(shù) 據(jù)請(qǐng)求沒(méi)有配置監(jiān)聽(tīng)器,則直接將該數(shù)據(jù)請(qǐng)求傳送給相應(yīng)的控制器。
9.根據(jù)權(quán)利要求8所述的系統(tǒng),其特征在于,當(dāng)所述數(shù)據(jù)處理單元中的所述控制器接收模型處理的數(shù)據(jù)結(jié)果之后,并且在該處理后的數(shù)據(jù)結(jié)果通過(guò)服務(wù)器返回給客戶端之前,進(jìn)行判斷該處理后的數(shù)據(jù)結(jié)果是否配置有監(jiān)聽(tīng)器;若配置有監(jiān)聽(tīng)器,則先執(zhí)行該監(jiān)聽(tīng)器,然后再將處理后的數(shù)據(jù)請(qǐng)求返回給客戶端;若沒(méi)有配置監(jiān)聽(tīng)器,則控制器接收模型處理的數(shù)據(jù)結(jié)果之后,服務(wù)器直接將處理后的數(shù)據(jù)請(qǐng)求返回給客戶端。
10.根據(jù)權(quán)利要求7至9任意一項(xiàng)所述的系統(tǒng),其特征在于,所述攔截匹配單元中過(guò)濾器在第一次使用前是需要進(jìn)行初始化,首先啟動(dòng)所述的服務(wù)器,初始化過(guò)濾器,然后根據(jù)所述服務(wù)器中的web.xml初始化過(guò)濾器的全局參數(shù);之后,注冊(cè)所述控制器到所述服務(wù)器的路由表的映射;最后,注冊(cè)監(jiān)聽(tīng)器使過(guò)濾器處于監(jiān)聽(tīng)狀態(tài)。
【文檔編號(hào)】H04L29/08GK103647828SQ201310676194
【公開(kāi)日】2014年3月19日 申請(qǐng)日期:2013年12月11日 優(yōu)先權(quán)日:2013年12月11日
【發(fā)明者】史丙利, 范培倫 申請(qǐng)人:北京榮之聯(lián)科技股份有限公司