<url-pattern> / * </url-pattern>出错

时间:2016-11-11 17:19:01

标签: java spring jsp spring-mvc

我已经使用这种模式设置了一个servlet /*但是我得到了一个404错误,甚至得到了index.jsp文件,我认为/*与任何模式匹配,代码是正确的,因为它适用于*.html

的web.xml

<!DOCTYPE web-app PUBLIC
 "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
 "http://java.sun.com/dtd/web-app_2_3.dtd" >

<web-app>
  <display-name>Archetype Created Web Application</display-name>


   <servlet>
        <servlet-name>main</servlet-name>
        <servlet-class>
            org.springframework.web.servlet.DispatcherServlet
        </servlet-class>
        <load-on-startup>1</load-on-startup>
    </servlet>

    <servlet-mapping>
        <servlet-name>main</servlet-name>
        <url-pattern>/*</url-pattern>
    </servlet-mapping>
</web-app>

和这个控制器

package com.tutorial.ejemplospring.controller;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.servlet.ModelAndView;

@Controller
public class MainController {

    @RequestMapping("/main.html")
    public ModelAndView mainPage() {

        return new ModelAndView("main");
    }
    @RequestMapping("/second.html")
    public ModelAndView secondPage() {

        return new ModelAndView("second");
    }

}

1 个答案:

答案 0 :(得分:2)

/ *是一种详尽的模式,通常您将使用此模式映射过滤器,您希望在到达调度程序之前将所有请求传递给过滤器。

正如@JB Nizet解释的那样,/ *也会匹配/index.jsp,所以它被路由到调度程序,但是调度程序不知道如何处理它。 second.html仍然通过调度程序但确实知道该怎么做才能将你发送到正确的jsp页面。