为什么Spring MVC会以404响应并报告“在DispatcherServlet中找不到与URI[...]对应的映射”?
为什么Spring MVC会以404响应并报告“在DispatcherServlet中找不到与URI[...]对应的映射”?
我正在编写一个部署在Tomcat上的Spring MVC应用程序。请参考下面的最小、完整和可验证的示例:
public class Application extends AbstractAnnotationConfigDispatcherServletInitializer { protected Class>[] getRootConfigClasses() { return new Class>[] { }; } protected Class>[] getServletConfigClasses() { return new Class>[] { SpringServletConfig.class }; } protected String[] getServletMappings() { return new String[] { "/*" }; } }
其中,`SpringServletConfig`为:
@Configuration @ComponentScan("com.example.controllers") @EnableWebMvc public class SpringServletConfig { @Bean public InternalResourceViewResolver resolver() { InternalResourceViewResolver vr = new InternalResourceViewResolver(); vr.setPrefix("/WEB-INF/jsps/"); vr.setSuffix(".jsp"); return vr; } }
最后,我在包`com.example.controllers`中有一个`@Controller`:
@Controller public class ExampleController { @RequestMapping(path = "/home", method = RequestMethod.GET) public String example() { return "index"; } }
我的应用程序上下文名称为`Example`。当我向以下地址发送请求时:
http://localhost:8080/Example/home
应用程序返回HTTP状态404,并记录以下日志:
WARN o.s.web.servlet.PageNotFound - No mapping found for HTTP request with URI `[/Example/WEB-INF/jsps/index.jsp]` in `DispatcherServlet` with name 'dispatcher'
我在`/WEB-INF/jsps/index.jsp`路径下有一个JSP资源,我期望Spring MVC使用我的控制器来处理请求并转发到JSP,那为什么会返回404错误?