spring boot 异常拦截器全局友提示

简介: spring boot 异常拦截器全局友提示

1. 添加config 配置类

package org.fh.config;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.HandlerExceptionResolver;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.view.json.MappingJackson2JsonView;
/**
 * 说明:错误异常拦截处理
 * 作者:FH Admin
 * from fhadmin.cn
 */
@Configuration
public class ExceptionConfiguration implements HandlerExceptionResolver {
  @Override
  public ModelAndView resolveException(HttpServletRequest request, HttpServletResponse response, Object handler,
      Exception ex) {
    ModelAndView mv = new ModelAndView(new MappingJackson2JsonView());  //返回json
    String exInfo = ex.toString().replaceAll("\n", "<br/>");
    boolean status = exInfo.contains("Subject does not have permission");
    if(status){
      exInfo = "[没有此页面的访问权限]" + exInfo;
        }else {
          System.out.println("==============异常开始=============");
        ex.printStackTrace();
        System.out.println("==============异常结束=============");
        }
    mv.addObject("exception", exInfo);
    mv.addObject("result", "exception");
    return mv;
  }
}

2.  在逻辑类的方法上抛出异常 throws Exception,比如  

/**删除
   * @param out
   * @throws Exception
   */
  @RequestMapping(value="/delete")
  @RequiresPermissions("autograph:del")
  @ResponseBody
  public Object delete() throws Exception{
    Map<String,String> map = new HashMap<String,String>();
    String errInfo = "success";
    //xxxx
    map.put("result", errInfo);       //返回结果
    return map;
  }

3. 前端页面接收异常结果

//发送 post 请求提交保存
            $.ajax({
                xhrFields: {
                      withCredentials: true
                  },
          type: "POST",
          url: httpurl+'xxxx/delete',
            data: {tm:new Date().getTime()},
          dataType:"json",
          success: function(data){
                        if("success" == data.result){
                        }else if ("exception" == data.result){
                          alert("模块异常"+data.exception);//显示异常
                        }
                    }
        });

 

目录
相关文章
|
18天前
|
前端开发 JavaScript Java
Spring Boot中使用拦截器
本节主要介绍了 Spring Boot 中拦截器的使用,从拦截器的创建、配置,到拦截器对静态资源的影响,都做了详细的分析。Spring Boot 2.0 之后拦截器的配置支持两种方式,可以根据实际情况选择不同的配置方式。最后结合实际中的使用,举了两个常用的场景,希望读者能够认真消化,掌握拦截器的使用。
|
4天前
|
Dubbo Java Nacos
【实战攻略】破解Dubbo+Nacos+Spring Boot 3 Native打包后运行异常的终极秘籍——从零开始彻底攻克那些让你头疼不已的技术难题!
【8月更文挑战第15天】Nacos作为微服务注册与配置中心受到欢迎,但使用Dubbo+Nacos+Spring Boot 3进行GraalVM native打包后常遇运行异常。本文剖析此问题及其解决策略:确认GraalVM版本兼容性;配置反射列表以支持必要类和方法;采用静态代理替代动态代理;检查并调整配置文件;禁用不支持的功能;利用日志和GraalVM诊断工具定位问题;根据诊断结果调整GraalVM配置。通过系统排查方法,能有效解决此类问题,确保服务稳定运行。
15 0
|
29天前
|
Java Spring 容器
Spring循环依赖问题之两个不同的Bean A,导致抛出异常如何解决
Spring循环依赖问题之两个不同的Bean A,导致抛出异常如何解决
|
29天前
|
存储 缓存 Java
Spring循环依赖问题之循环依赖异常如何解决
Spring循环依赖问题之循环依赖异常如何解决
|
29天前
|
XML Java 数据格式
循环依赖问题之创建Bean的过程中发生异常,Spring会如何处理
循环依赖问题之创建Bean的过程中发生异常,Spring会如何处理
|
2月前
|
运维 Java 关系型数据库
Spring运维之boot项目bean属性的绑定读取与校验
Spring运维之boot项目bean属性的绑定读取与校验
36 2
|
2月前
|
存储 运维 Java
Spring运维之boot项目开发关键之日志操作以及用文件记录日志
Spring运维之boot项目开发关键之日志操作以及用文件记录日志
38 2
|
2月前
|
Java Maven
springboot项目打jar包后,如何部署到服务器
springboot项目打jar包后,如何部署到服务器
140 1
|
2月前
|
XML 运维 Java
Spring运维之boot项目打包jar和插件运行并且设置启动时临时属性和自定义配置文件
Spring运维之boot项目打包jar和插件运行并且设置启动时临时属性和自定义配置文件
33 1
|
1月前
|
Java 数据库 索引
【Java】已解决Spring框架中的org.springframework.dao.DuplicateKeyException异常
【Java】已解决Spring框架中的org.springframework.dao.DuplicateKeyException异常
46 0