Я пишу приложение Spring MVC, развернутое на Tomcat. Смотрите следующий минимальный, полный и проверяемый пример
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 Status 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?
Это должен быть канонический пост для вопросов об этом предупреждающем сообщении.