1. 程式人生 > >springMVC框架下如何實現移動端介面呼叫——流程簡介篇

springMVC框架下如何實現移動端介面呼叫——流程簡介篇

        隨著移動辦公的熱潮,現在出現了越來越多的APP,小編作為一個PC端的開發第一次和移動端合作,給他們提供介面。那麼在PC是如何識別發來的請求是移動端的?如何驗證使用者是否登入?如何實現方法的呼叫?

        環境:Eclipse+tomcat

        框架:SpringMVC+JDBC

第一:

          在PC端的系統中我們都是填了使用者登入驗證的,那麼如何讓移動端發來的請求避免PC端的驗證走移動端自己的那一套驗證呢?就是使用“白名單”。將移動端請求的URL配置到其中,這樣就可以跳過PC端的登入驗證,這裡不是本篇部落格重點不再程式碼舉例。

第二:

         跳過PC端的驗證,如何走移動端自己的驗證呢?這裡使用了springMVC的攔截器。基本原理和struts的攔截器是一樣的。

        1、首先編寫一個攔截器,在struts中編寫的攔截器類是繼承的MethodFilterInterceptor重寫其中的doIntercept方法。在springMVC中的攔截器類是實現HandlerInterceptor介面。HandlerInterceptor有三個方法:

               (1) preHandle(HttpServletRequestrequest, HttpServletResponse response, Object handle)

                          執行時間:在請求處理之前呼叫。

                          執行作用

:由於該方法在請求處理之前呼叫,所以可以在這個方法中進行一些初始化操作或者對請求進行預處理。也可以在這個方法中進行一些判斷來決定請求是否要繼續進行下去。

                          執行過程:該方法的返回值是布林值Boolean型別的,當它返回為false 時,表示請求結束,後續的Interceptor 和Controller 都不會再執行;當返回值為true 時就會繼續呼叫下一個Interceptor 的preHandle 方法,如果已經是最後一個Interceptor 的時候就會是呼叫當前請求的Controller 方法。

執行順序:先定義的Interceptor中的先執行。

              (2)postHandle(HttpServletRequestrequest, HttpServletResponse response, Object handle,ModelAndView modelAndView)

                        執行時間:在當前請求進行處理之後並且preHandle返回true時才會被呼叫,但是該方法會在DispatcherServlet進行檢視返回渲染之前被呼叫。

                        執行作用:所以可以在這個方法中對controller處理之後返回的ModelAndView物件進行操作,從方法的引數中也可以看出。

                        執行順序:先定義的Interceptor中的後執行。

             (3) afterCompletion(HttpServletRequestrequest, HttpServletResponse response, Object handle,Exception ex)

                        執行時間:在整個請求結束之後。

                        執行作用:用於進行資源清理。

        2、將攔截器配置到mvc的配置檔案中。

第三:

        攔截器驗證登入完畢後,開始呼叫請求的方法,這個過程其實就和PC端的沒有什麼區別了。合作開發中有一句話叫做“約定大於配置”,所以約定好移動端呼叫的URL前端固定為Service/dataSync.do,這樣就可以按照正常的PC端的請求找到Service這個Controller然後呼叫其中的dataSync方法。

第四:

        當進入到這個方法之後,按照約定好的URL請求的後半部分開始呼叫具體能夠執行業務邏輯的程式碼。根據約定傳來的引數使用jodd.util.ReflectUtil中的invoke方法進行呼叫,最後返回資料。

小結

        移動端呼叫介面實現的流程如上,使用了攔截器整體和PC端的請求沒有大的區別,只是方法的呼叫比較稍微繁瑣一些。本次介面的除錯也真正的體會了“約定大於配置”這句的含義。下一篇部落格通過程式碼看看具體是如何實現的。