Я пытаюсь создать пользовательское представление JSP для кодов состояния Http в весеннем mvc, используя только аннотации , не используя web.xml , я сгенерировал глобальный обработчик исключений с аннотацией @AdviceController
и определил некоторые @ExceptionHandler
методы, но я все еще получаю: сообщение tomcat 404 по умолчанию
Вот моя конфигурация на основе аннотаций
com.example.demo.config.AppConfig
@EnableWebMvc
@Configuration
@ComponentScan({ "com.example.demo.*" })
@Import({ SecurityConfig.class })
@ImportResource("classpath:job_scheduler.xml")
public class AppConfig extends WebMvcConfigurerAdapter {
@Bean
public InternalResourceViewResolver viewResolver() {
InternalResourceViewResolver viewResolver = new InternalResourceViewResolver();
viewResolver.setViewClass(JstlView.class);
viewResolver.setPrefix("/WEB-INF/pages/");
viewResolver.setSuffix(".jsp");
return viewResolver;
}
@Override
public void addInterceptors(InterceptorRegistry registry) {
registry.addInterceptor(new SessionTimeoutInterceptor());
}
@Bean
public MultipartResolver multipartResolver() {
CommonsMultipartResolver multipartResolver = new CommonsMultipartResolver();
multipartResolver.setMaxUploadSize(10485760); // 10MB
multipartResolver.setMaxUploadSizePerFile(1048576); // 1MB
return multipartResolver;
}
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
registry.addResourceHandler("/resources/**").addResourceLocations("/resources/").setCachePeriod(31556926);
registry.addResourceHandler("C:/demo/cust_image/*").addResourceLocations("C:/demo/cust_image/").setCachePeriod(31556926);
}}
com.example.demo.config.WebMvcConfig
@Configuration
@EnableWebMvc
public class WebMvcConfig extends WebMvcConfigurerAdapter {
@Override
public void configureDefaultServletHandling(DefaultServletHandlerConfigurer configurer) {
configurer.enable();
}
}
com.example.demo.web.config.core.SpringMvcInitializer
public class SpringMvcInitializer extends AbstractAnnotationConfigDispatcherServletInitializer {
@Override
protected Class<?>[] getRootConfigClasses() {
return new Class[] { AppConfig.class };
}
@Override
protected Class<?>[] getServletConfigClasses() {
return null;
}
@Override
protected String[] getServletMappings() {
return new String[] { "/" };
}
@Override
public void onStartup(ServletContext servletContext) throws ServletException {
super.onStartup(servletContext);
servletContext.addListener(new SessionListener());
}}
com.example.demo.web.actions.ErrorController
@ControllerAdvice
@ComponentScan({ "com.example.demo.*" })
public class ErrorController {
private static Logger logger = Logger.getLogger(ErrorController.class);
@ResponseStatus(value=HttpStatus.NOT_FOUND)
@ExceptionHandler(value=RuntimeException.class)
public ModelAndView resourceNotFound(RuntimeException ex) {
ModelAndView errorPage = new ModelAndView("error");
String errorMsg = "";
errorMsg = ex.getMessage();
errorPage.addObject("errorMsg", errorMsg);
return errorPage;
}
}
com.example.demo.web.actions.MakerController
@Controller
@RequestMapping(value = "/maker")
public class MakerController {
}
demo \ src \ main \ webapp \ WEB-INF \ pages \ error.jsp
error.jsp не отображается на локальном хосте:8989 / demo / maker / invalidResource, помогите пожалуйста