這是我認爲應該很容易的事情,但到目前爲止,我還沒有得到它的工作。Spring MVC中的地圖/(根URL)
我想要做的是將我的根路徑映射到Spring MVC控制器。使用正常的Servlet
,我只需在我的web.xml
中添加「/
」的映射,就可以很好地提取它。但對於Spring MVC而言,並非如此。
我已經嘗試了很多組合,但似乎沒有工作。我認爲下面的一個應該可以工作。
在web.xml
:
<servlet-mapping>
<servlet-name>myDispatcherServlet</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
在我contextConfigLocation
文件:
<bean class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
<property name="alwaysUseFullPath" value="true"/>
<property name="mappings">
<util:map>
<entry key="/" value-ref="rootController"/>
</util:map>
</property>
</bean>
<bean id="rootController" class="my.package.RootController">
那麼很明顯,有控制器本身的情況。我不知道如何將該方法映射到實際的根路徑。我的嘗試是這樣的:
public class RootController extends MultiActionController {
@RequestMapping("/")
public ModelAndView display(HttpServletRequest request, HttpServletResponse response) throws Exception {
final Map<String, Object> model = new HashMap<String, Object>();
model.put("someVariable", "Hello, MVC world.");
return new ModelAndView("rootPage", model);
}
}
所以我們可以說我的應用程序上運行http://localhost:8080/app/
,我想,準確的URL來執行方法display
。我不想在/app/
之後輸入任何內容。事實上,/app/
之後的一些東西被映射到其他控制器,並且所有工作正常(並且他們必須繼續工作)。
我在這裏錯過了什麼?爲什麼這不是簡單的工作?如果我使用相同的url-pattern
映射到一個普通的Servlet
實例,它工作正常,我到達doGet
方法,但對於Spring MVC,我似乎錯過了一些特殊的黑魔法來實現它。
感謝您的回答。我想這會起作用,但不幸的是,它不那麼容易。除了這個''RootController'',我們還有一些'Controllers'通過這個'SimpleUrlHandlerMapping'來設置。或者你會建議爲這個'RootController'單獨設置一個'DispatcherServlet'? – pbean
那麼保持url映射,但刪除條目「/」 – dardo
所以你的意思是,保留'SimpleUrlHandlerMapping',但沒有「'/'」的條目,並添加' '和'
pbean