java - 在 dispatcherservlet",为什么 Spring MVC 会响应 404和报告"中,没有找到带有 URI [...]的HTTP请求的映射?

  显示原文与译文双语对照的内容

我正在编写一个 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;


 }


}



finally,我在软件包 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 资源,我希望 Spring MVC 使用我的控制器来处理请求,因这里为什么它响应 404.?

这是关于这个警告消息的问题的规范帖子。

时间: 原作者:

除了前面描述的问题外,我还解决了问题:`


@Bean


public InternalResourceViewResolver resolver() {


 InternalResourceViewResolver vr = new InternalResourceViewResolver();


 vr.setPrefix("/WEB-INF/jsps/");


 vr.setSuffix(".jsp");


 return vr;


}



added tomcat-embed-jasper:


<dependency>


 <groupId>org.apache.tomcat.embed</groupId>


 <artifactId>tomcat-embed-jasper</artifactId>


 <scope>provided</scope>


</dependency>



`: JSP文件不在 Spring Boot web应用程序中呈现。

原作者:

我遇到了同样错误的另一个原因。 这也可能是由于没有为 controller.java 文件生成的类文件。 由于 web.xml 中提到的dispatcher servlet无法将它映射到控制器类中的适当方法。


@Controller


Class Controller{


@RequestMapping(value="/abc.html")//abc is the requesting page


public void method()


{.....}


}



在 Eclipse 下的Project-> 中选择"清除-> 构建 Project.Do",检查是否为工作区中的控制器文件生成了类文件。

...