У меня есть веб-проект Spring boot 2.2 с jsp
@Configuration
@EnableWebMvc
@Slf4j
public class WebConfig implements WebMvcConfigurer {
@Bean
public LocaleChangeInterceptor localeChangeInterceptor() {
LocaleChangeInterceptor localeChangeInterceptor = new LocaleChangeInterceptor();
localeChangeInterceptor.setParamName("language");
return localeChangeInterceptor;
}
@Override
public void addInterceptors(InterceptorRegistry registry) {
registry.addInterceptor(localeChangeInterceptor());
}
@Bean
public MessageSource messageSource() {
ReloadableResourceBundleMessageSource messageSource = new ReloadableResourceBundleMessageSource();
messageSource.setBasenames("classpath:i18n/messages");
messageSource.setDefaultEncoding("UTF-8");
return messageSource;
}
@Bean
public LocalValidatorFactoryBean getValidator() {
LocalValidatorFactoryBean bean = new LocalValidatorFactoryBean();
bean.setValidationMessageSource(messageSource());
return bean;
}
@Bean
public ViewResolver jspViewResolver() {
InternalResourceViewResolver viewResolver = new InternalResourceViewResolver();
viewResolver.setPrefix("/WEB-INF/jsp/");
viewResolver.setSuffix(".jsp");
return viewResolver;
}
}
application.properties
spring.mvc.throw-exception-if-no-handler-found = true
GlobalExceptionHandler. java
@ControllerAdvice
@Slf4j
public class GlobalExceptionHandler {
public static final String DEFAULT_ERROR_VIEW = "error/error";
public static final String PAGE_NOT_FOUND_ERROR_VIEW = "error/404";
@ExceptionHandler(NoHandlerFoundException.class)
public ModelAndView pageNotFoundErrorHandler(HttpServletRequest req, Exception e) {
if (log.isDebugEnabled()) {
log.debug("The page [{}] does not exist : {}", req.getRequestURI(), e.getMessage());
}
return getMAV(req, e, HttpStatus.NOT_FOUND, PAGE_NOT_FOUND_ERROR_VIEW);
}
private ModelAndView getMAV(HttpServletRequest req, Exception e, HttpStatus status, String viewName) {
ModelAndView mav = new ModelAndView();
mav.addObject("error", status.getReasonPhrase());
mav.addObject("exception", e.getMessage());
mav.addObject("url", req.getRequestURL());
mav.setStatus(status);
mav.setViewName(viewName);
return mav;
}
}
это работает, когда я go localhost: 8080 / notMapped показывает мою страницу ошибки, но если я go I go localhost: 8080 / notMapped. jsp it показывает ошибку White Label, которую я пытался удалить
@SpringBootApplication(exclude = {ErrorMvcAutoConfiguration.class})
не работает (показывает tomcat 404) ...
пытался поставить
@Configuration
@EnableWebSecurity
@Slf4j
public class WebSecurity extends WebSecurityConfigurerAdapter {
@Bean
public AccessDeniedHandler accessDeniedHandler(){
return new ApplicationAccessDeniedHandler();
}
@Override
protected void configure(HttpSecurity http) throws Exception {
log.info("Overriding default configure to bypass default login");
**http
.authorizeRequests()
.antMatchers("/*.jsp")
.denyAll();**
http
.authorizeRequests()
.anyRequest()
.permitAll();
http
.headers()
.frameOptions()
.sameOrigin();
}
}
только код ошибки в белая метка изменена (404 -> 403)