我认为这应该是很容易的事情,但到目前为止我还没有能够让它发挥作用。
我想要做的是将我的根路径映射到 Spring MVC 控制器。与正常的Servlet
,我只需添加一个映射“/
" in my web.xml
,并且它会很好地接收它。但对于 Spring MVC,情况就不那么严重了。
我尝试了很多组合,但似乎都不起作用。我认为以下一项应该有效。
In web.xml
:
<servlet-mapping>
<servlet-name>myDispatcherServlet</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
In my contextConfigLocation
file:
<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 我似乎缺少一些特殊的黑魔法来让它工作。