2

我正在开发我的 Spring 应用程序,根据下面的代码,我将多个 URL 映射到一种方法。我正在制作一种方法“root”来服务所有以索引和根开头的请求。

@RequestMapping(value = {"/", "index*"}, method = RequestMethod.GET)
public String root(Model model) {
    logger.info("Welcome to index page.");  
    model.addAttribute("hello", "Welcome to index page." );     
    return "index";
}

如果请求被定向到映射方法,则上述"index*"工作正常,即但它不适用于. 如果我得到."index", "index123", "index.html" and "index.txt""root""index.jsp""index.jsp""HTTP Status 404" "The requested resource is not available"

摘自web.xml

<servlet>
    <servlet-name>appServlet</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <init-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>/WEB-INF/spring/appServlet/servlet-context.xml</param-value>
    </init-param>
    <load-on-startup>1</load-on-startup>
</servlet>

<servlet-mapping>
    <servlet-name>appServlet</servlet-name>
    <url-pattern>/</url-pattern>
</servlet-mapping>

有人可以让我知道这背后的原因,我怎样才能让它发挥作用?

4

1 回答 1

0

我认为这可能会发生,因为 servlet 容器将 *.jsp 请求映射到JspServlet以便编译和执行 jsp。web.xml如果您使用的是 Tomcat,这发生在Tomcatconf目录的顶层。这意味着以 *.jsp 结尾的请求将在到达您的控制器之前被拦截。将JspServlet尝试index.jsp根据 webapp 中的路径加载文件,并在找不到时返回 404。

对于/index.jsp,您最好在 web 应用程序的根目录中实际创建此文件,这样您就不会看到 404。您可以向其中添加一些代码以将请求重定向到其他地方(可能是/index.html- 或其他一些入口点你的申请)。

于 2013-06-18T08:07:00.200 回答