java - 在 Spring MVC 中映射/(root URL)

标签 java spring spring-mvc mapping url-routing

这是我认为应该非常容易的事情,但到目前为止我还没有能够让它发挥作用。

我想做的是将我的根路径映射到 Spring MVC Controller 。对于普通的 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">

那么显然,还有 Controller 本身的情况。我不知道如何将方法映射到实际的根路径。我的尝试是这样的:

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/ 之后的一些东西被映射到其他 Controller ,并且一切正常(并且它们必须继续工作)。

我在这里错过了什么?为什么这不简单?如果我使用相同的 url-pattern 映射到一个普通的 Servlet 实例,它工作正常并且我到达了 doGet 方法,但是使用 Spring MVC 我似乎缺少一些特殊的黑魔法来让它工作。

最佳答案

您可以在 web.xml 文件中声明一个欢迎页面,而不是映射到 /:

<welcome-file-list>
    <welcome-file>welcome.htm</welcome-file>
</welcome-file-list>

因此您的 / 路径将被处理为 /welcome.htm 然后如果您的 Controller 正确映射到 /welcome.htm 它将处理 / 就好像它是一个 /welcome.htm 请求一样,而不更改其他配置。

关于java - 在 Spring MVC 中映射/(root URL),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12202302/

相关文章:

java - Android-由于 java.lang.NullPointerException 无法显示收到的位置值

java - 如何显示@ResponseStatus 错误的自定义错误消息?

java - Spring批量监控

java - 使用 EJB 的 Spring Security

java - Spring4 MVC Controller 可分页不起作用

java - MappingJackson2HttpMessageConverter 在 Spring 4 启动期间多次实例化覆盖(无效)自定义 ObjectMapper 设置

java - 为什么 JavaMail 使用 System.getProperties() ?

java - 列为 O(log(n))

java - int[] 到哈希集 (Java)

java - DispatchServlet 是否会在过滤器之前拦截 HTTP 请求?