Servlet映射问题

时间:2011-09-06 02:09:27

标签: servlets spring-mvc

我有一个基于Spring的Web应用程序。在控制器中,我指定了以下内容:

@RequestMapping(value = "/foo/index.html", method = RequestMethod.GET)
public ModelAndView handleIndex(HttpServletRequest request,
        HttpServletResponse response) throws Exception {
    return new ModelAndView("public/foo/index");
}

应用程序web.xml servlet映射:

<servlet-mapping>
    <servlet-name>jib</servlet-name>
    <url-pattern>*.html</url-pattern>
</servlet-mapping>

当我向http://myhost/foo/index.hml发出请求时,一切正常,但当我尝试调用http://myhost/foo/时 - 我收到404错误。

我的问题是如何处理http://myhost/foo/请求我处理http://myhost/foo/index.html请求的确切方式?

2 个答案:

答案 0 :(得分:1)

您没有将任何内容映射到/ foo,只有/foo/index.html。您可以教你的tomcat / jboss /无论是将请求重定向到index.html的目录,但它不会自动发生。

正如@BalusC所指出的,添加index.html可能会这样做(虽然我很确定这是tomcat的默认值)。值得一试。

答案 1 :(得分:0)

好的,解决方案如下所示

  1. 更改web.xml文件中的servlet-mapping部分

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

  2. 更改@RequestMapping值参数:

    @RequestMapping(value = {"/foo/", "/foo/index.html"}, method = RequestMethod.GET)
    public ModelAndView handleIndex(HttpServletRequest request,
    HttpServletResponse response) throws Exception {
    return new ModelAndView("public/foo/index");
    }
    
  3. 现在,handleIndex方法处理 / foo / /foo/index.html 路径的所有请求

    希望它会帮助某人