springboot 访问路径错误跳转到404(实现方法三)

  1. 方法1:适用于POST请求,不适用于GET{}拼接参数
  2. 方法2:适用于模板,页面必须放到error文件夹下,不需要写任何java代码
  3. 方法3:适用于根据status值去判断,但是如果页面的图片地址是有动态参数,建议修改成相对引用,或者注入bean

参考文章:SpringBoot全局异常处理与定制404页面


根据网页返回的status进行跳转

  • WebMvcInterceptor 


import cloud.maque.biz.tdsc.config.properties.MaqueServiceProperties;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.lang.Nullable;
import org.springframework.web.servlet.HandlerInterceptor;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**
 * Created by xuhy on 2020/08/03.
 * 拦截错误web请求
 */
public class WebMvcInterceptor implements HandlerInterceptor {

    @Autowired
    MaqueServiceProperties maqueServiceProperties;

    @Override
    public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, @Nullable Exception ex) throws Exception {
        String status = response.getStatus() + "";

        if (status.startsWith("4")) {
            // response.sendRedirect("/error/404");// InterceptorConfig没有注入@bean的时候这么写,如果注入则变量+路径
            response.sendRedirect(maqueServiceProperties.getSubDomainUrl() + "/error/404");
        } else if (status.startsWith("5")) {
            // response.sendRedirect("/error/500");
            response.sendRedirect(maqueServiceProperties.getSubDomainUrl() + "/error/500");
        }
    }
}
  • InterceptorConfig (一)


import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;

/**
 *  @description: web拦截器
 *  @author Liu
 *  @date: 2020/4/24
 */
@Configuration
public class InterceptorConfig implements WebMvcConfigurer {

    @Override
    public void addInterceptors(InterceptorRegistry registry) {

        // 404.html blank.html 500.html 此方法添加拦截器
        registry.addInterceptor(new WebMvcInterceptor()).addPathPatterns("/**");
    }
}
  • InterceptorConfig (二)


import cloud.maque.biz.tdsc.config.interceptor.WebMvcInterceptor;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;

/**
 *  @description: web拦截器
 *  @author Liu
 *  @date: 2020/4/24
 */
@Configuration
public class InterceptorConfig implements WebMvcConfigurer {
    

    @Bean
    public WebMvcInterceptor webMvcInterceptor() {
        return new WebMvcInterceptor();
    }

    @Override
    public void addInterceptors(InterceptorRegistry registry) {

        // 404.html blank.html 500.html 此方法添加拦截器
        registry.addInterceptor(webMvcInterceptor()).addPathPatterns("/**");
    }
}
  • 文件路径

springboot 访问路径错误跳转到404(实现方法三)_第1张图片

你可能感兴趣的:(springboot 访问路径错误跳转到404(实现方法三))