gpt4 book ai didi

java - 是否可以将 "404 page not found"添加到我的 Spring Boot Controller 类中?

转载 作者:行者123 更新时间:2023-12-02 11:19:04 26 4
gpt4 key购买 nike

我希望将 404 错误页面添加到我的 Spring 应用程序中,但我无法找到有关如何执行此操作的文档/建议。目前我仅通过 Eclipse 在本地运行该应用程序。根据我对 Spring 应用程序的理解,可能有两种方法可以做到这一点。

  1. 在 Controller 类中输入一个方法,该方法在其 @RequestMapping 值中接受某种条件,如果无法识别 URL,该方法将打开 404 页面,例如 本地主机/sdksdjhfkjsdkjfsdkj。我用 @ResponseStatus 尝试了下面的方法,但没有成功。当我尝试包含 @RequestMapping 时,会提示错误,但我只是将其包含在下面,以便让您了解我想要实现的目标。

    @RequestMapping(value = HttpStatus.NOT_FOUND)
    public String pageNotFound() {

    return "404";
    }
  2. 向我的 Web 配置类添加某种 HTTPSecurity 方法,如果没有 URL 与用户输入的 URL 匹配,该方法将加载 404 页面。我将在下面提供我的配置方法的示例。

    @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();

    }

但是我在 HTTPSecurity 文档中找不到任何方法。

有人有任何建议或文档可供我引用以完成此任务吗?

最佳答案

如果所请求的资源(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

关于java - 是否可以将 "404 page not found"添加到我的 Spring Boot Controller 类中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50062465/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com