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端的請求沒有大的區別,只是方法的呼叫比較稍微繁瑣一些。本次介面的除錯也真正的體會了“約定大於配置”這句的含義。下一篇部落格通過程式碼看看具體是如何實現的。