SpringBoot配置404跳轉頁面的兩種方式


1.情景展示

  當請求不存在時,服務器會報404異常,這對於產品用戶來說不夠友好。

2.原因分析

  可以配置404請求錯誤頁來進行友好的錯誤提示。 

3.解決方案

  方式一:

@GetMapping("*")
public String notFound() {
    // 跳轉到404頁面所在路徑
    return "404";
}

  這種方式,同樣適用於springmvc,所有不存在的請求都會映射到該方法上。

  但是,問題在於如果項目配置了knife4j項目接口文檔,對應的請求是:/doc.html,只有在請求該地址時,項目才會運行生成doc.html,不請求就不存在,因為是臨時生成的html文件,原本並不存在於項目當中,所以,在生成頁面之前,該方法檢測到服務器並不存在doc.html,因此跳轉到了404.jsp,就這樣,永遠也訪問不到doc.html,我們也就無法使用knife4j了。

  方式二:

  為了解決這個問題,我們就不能再使用方式一了。

  第一步:添加配置類

/**
 * 錯誤頁
 * @description: ErrorPage(status,path)說明
 * 關於path,既可以重定向具體的html也可以重定向請求地址
 * 如果配置的是404.html一定要建在template/static下面,否則無效。
 * 如果配置的是/404,那就需要在Controller中添加/404請求對應的方法
 * @author: Marydon
 * @date: 2020年08月11日 0011 11:25
 */
@Configuration
public class ErrorConfig implements ErrorPageRegistrar {
    @Override
    public void registerErrorPages(ErrorPageRegistry registry) {
        ErrorPage[] errorPages = new ErrorPage[1];
        errorPages[0] = new ErrorPage(HttpStatus.NOT_FOUND, "/404.do");
        registry.addErrorPages(errorPages);
    }
}

  第二步:在控制器中添加/404.do請求

/**
 * 不存在的請求,跳轉到404頁面
 * @description: ErrorConfig已經攔截了404請求,然后映射到這個請求上
 * @date: 2020年07月10日 0010 17:10
 * @param:
 * @return: java.lang.String
 */
@GetMapping("/404.do")
public String notFound() {
    // 跳轉到404頁面:/jsp/404.jsp
    return "404";
}  

  需要提醒的是:即將跳轉的頁面,必須是相對於項目來說的絕對路徑。

  上面是因為我配置了響應路徑的前綴和后綴,實際是:/jsp/404.jsp。

  2020-12-27

  這里,說一個在idea中的小技巧,要想知道自己配置的文件路徑對不對,可以這樣:

  按住Ctrl鍵不松手,鼠標懸浮到要跳轉的路徑上。

 

  再次點擊鼠標,能打開對應頁面就說明沒有問題。

 

寫在最后

  哪位大佬如若發現文章存在紕漏之處或需要補充更多內容,歡迎留言!!!

 相關推薦:

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM