我希望在我的Spring应用程序中添加404错误页面,但我无法找到有关如何执行此操作的文档/建议。我目前只通过Eclipse在本地运行应用程序。根据我对Spring Applications的理解,可能有两种方法可以做到这一点。
在控制器类中输入一个方法,该方法接受某种条件的@RequestMapping
值,如果它无法识别URL,将打开404页面,例如{{1 }}。我用localhost/sdksdjhfkjsdkjfsdkj
尝试了下面的方法,但它没有用。当我尝试包含@ResponseStatus
时会出现错误,但我只是将其包含在下面,以便让您了解我想要实现的目标。
@RequestMapping
在我的网络配置类中添加某种@RequestMapping(value = HttpStatus.NOT_FOUND)
public String pageNotFound() {
return "404";
}
方法,如果没有与用户输入的网址匹配,则会加载404网页。我将在下面提供我的配置方法的示例。
HTTPSecurity
}
但是我在@Override
protected void configure(HttpSecurity http) throws Exception {
http
.authorizeRequests()
.antMatchers("/resources/**", "/registration").permitAll()
.anyRequest().authenticated()
.and()
.formLogin()
.loginPage("/login")
.permitAll()
.and()
.logout()
.permitAll();
//Disable csrf token as it is not needed for now and is preventing the applciation from running properly
http.csrf().disable();
文档中找不到任何方法。
有没有人有任何我可以看到的建议或文件来完成这项任务?
答案 0 :(得分:1)
如果没有所请求资源(URL)的处理程序,DispatcherServlet将抛出NoHandlerFoundException。您可以在ExceptionTranslator中捕获异常并返回所需的任何响应。例如:
@ControllerAdvice
public class ExceptionTranslator {
@ExceptionHandler(NoHandlerFoundException.class)
@ResponseBody
public ResponseEntity<ErrorVM> processNoHandlerFoundException(NoHandlerFoundException ex) {
return new ResponseEntity();
}
}
您可以根据springframework api向响应实体添加状态和消息: https://docs.spring.io/spring-framework/docs/current/javadoc-api/org/springframework/http/ResponseEntity.html