我剛剛進入Spring Framework技術,並且正在製作一個包含少量WebServices(Webstore,社交媒體站點等)的網站。我想要的是,每個Web服務都擁有擁有自己的ViewResolver的DispatcherServlet。所以,我的項目的結構看起來像:Spring MVC中的多DispatcherServlets(Java配置)
- 的主要場所 - DispatcherServlet的#1映射只http://example.com(是的,我知道我可以只使用靜態的HTML網站,但它是學習的目的
- Webservice的沒有。 1如網絡商店 - DispatcherServlet的#2映射只 /網絡存儲器/ *
- Webservice的二號例如社交媒體網站 - DispatcherServlet的#3映射只/社會/ *
在配置上,我使用Java類,所以我做的是:
- 延伸
WebMvcConfigureAdapter
和 首先我創建的AppConfig類實現ViewResolver
主網站的意見。接下來,我創建了一個類012.,它擴展了AbstractAnnotationConfigDispatcherServletInitializer
類,並且在其中我配置了RootConfigClass和servlet映射 - 其次,我遇到了問題 - 即無法爲Dispatcher Servlet#2創建另一個類(couldn'有兩個類擴展了
AbstractAnnotationConfigDispatcherServletInitializer
),我發現創建的類將實現一個接口WebApplicationInitializer
。我做了,並最終有工作第二DispatcherServlet 第三我已經講了從第二點的步驟,並有三個工作調度Servlets(理論上...)。
我可以通過DispatcherServlet的#訪問我的主網站1
(http://example.com)我可以通過DispatcherServlet的#2(http://example.com/webstore)
訪問我的網站商鋪爲主的網站,我可以訪問我的webservice通過DispatcherServlet#3(http://example.com/social)
但是畢竟,當我創建另一個視圖指向例如登錄部分(http://example.com/webstore/login)根本沒有工作。錯誤表示調度程序Servlet#1無法處理映射請求,其中地址應與分派器Servlet#2綁定。我所做的解決此問題的方法是將Servlet映射的Dispatcher Servlet#2配置類部分從servlet.addMapping("/webstore/");
更改爲servlet.addMapping("/webstore/*");
,我讀過的內容並不是最好的主意,但它工作正常。 當我輸入控制器無法處理的地址(不存在)時,出現問題(http://example.com/webstore/thisaddressdoesntexists),視圖控制器將我從http://example.com/webstore返回到主默認視圖,而不是找不到404頁面。這不是我想要實施的行爲。除了那個小功能外,一切正常。所有specyfic請求都與他們specopy的DispatcherServlet一起提供。Finnal的問題是:
- 如何防止加載默認視圖,在這種情況下,當我指向不存在的URL和加載錯誤代碼網站?
- 我的理念甚至還好嗎?我的意思是使用實現WebApplicationInitializer的類來使用更多的DispatcherServlets,或者有另一種方法嗎?我只談論基於Java的配置類,沒有xml。