我正在编写一个部署在 Tomcat 上的 Spring MVC 应用程序。见下文minimal, complete, and verifiable example
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;
}
}
最后,我有一个 @Controller
包装内com.example.controllers
@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 使用我的 Controller 来处理请求并转发到 JSP,那么为什么它会以 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 file not rendering in Spring Boot web application
关于java - 为什么 Spring MVC 以 404 响应并报告 "No mapping found for HTTP request with URI [...] in DispatcherServlet"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61531253/