这是我认为应该很容易的事情,但到目前为止我还没有让它发挥作用。
我想要做的是将我的根路径映射到 Spring MVC 控制器。使用 normalServlet
时,我只需/
在 my 中为 ""添加一个映射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,我似乎缺少一些特殊的黑魔法来让它工作。