为什么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")@EnableWebMvcpublic class SpringServletConfig {
    @Bean
    public InternalResourceViewResolver resolver() {
        InternalResourceViewResolver vr = new InternalResourceViewResolver();
        vr.setPrefix("/WEB-INF/jsps/");
        vr.setSuffix(".jsp");
        return vr;
    }}

最后,我有一个@Controllercom.example.controllers

@Controllerpublic 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'

我有一个JSP资源,/WEB-INF/jsps/index.jsp我期望Spring MVC使用我的控制器来处理请求并转发到JSP,那么为什么它会响应404呢?


繁花如伊
浏览 2242回答 4
4回答

鸿蒙传说

除了之前描述之外,我解决了我的问题:`@Beanpublic&nbsp;InternalResourceViewResolver&nbsp;resolver()&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;InternalResourceViewResolver&nbsp;vr&nbsp;=&nbsp;new&nbsp;InternalResourceViewResolver(); &nbsp;&nbsp;&nbsp;&nbsp;vr.setPrefix("/WEB-INF/jsps/"); &nbsp;&nbsp;&nbsp;&nbsp;vr.setSuffix(".jsp"); &nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;vr;}added tomcat-embed-jasper:<dependency> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<groupId>org.apache.tomcat.embed</groupId> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<artifactId>tomcat-embed-jasper</artifactId> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<scope>provided</scope></dependency>`from:JSP文件无法在Spring Boot Web应用程序中呈现

海绵宝宝撒

在我的例子中,我正在关注版本5.1.2的Interceptors Spring文档(使用Spring Boot v2.0.4.RELEASE时),并且WebConfig该类具有注释@EnableWebMvc,这似乎与我的应用程序中的其他东西相冲突,这阻止了我的静态正确解析资产(即没有将CSS或JS文件返回给客户端)。在尝试了很多不同的东西后,我尝试删除它@EnableWebMvc并且它有效!编辑:这是参考文档,说明你应该删除@EnableWebMvc注释显然至少在我的情况下,我已经在配置我的Spring应用程序(虽然不是通过使用web.xml或任何其他静态文件,它肯定是以编程方式),所以这是一个冲突。
打开App,查看更多内容
随时随地看视频慕课网APP