`
java框架平台spring
  • 浏览: 24687 次
文章分类
社区版块
存档分类
最新评论

springboot 全局异常拦截器,友好异常提示

 
阅读更多

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);//显示异常
                        	
                        }
                    }
				});   

 

 

分享到:
评论

相关推荐

    springboot入门(全局 异常拦截)

    下面将详细讲解Spring Boot如何实现全局异常拦截,并结合给出的"spring-boot-01"文件,探讨相关知识点。 1. **Spring Boot基础知识** Spring Boot简化了Java Web应用的开发,通过内嵌Servlet容器(如Tomcat或Jetty...

    SpringBoot拦截器

    - **统一异常处理:** 在全局范围内捕获并处理异常,提供友好的错误提示页面。 - **性能监控:** 统计请求处理时间,帮助优化系统性能。 5. **示例代码** 创建一个简单的拦截器: ```java public class ...

    基于SpringBoot2和Vue2的智能GPT图书管理系统设计源码

    系统提供了全局异常拦截器、登录校验拦截器、Echarts展示借阅量等功能。通过该项目,开发者可以学习并实践SpringBoot2和Vue2技术的应用,为后续的Web开发奠定基础。系统界面友好,易于操作,适合用于各类智能图书...

    springboot项目实现商品订单项目

    这个项目涉及到多个关键的技术和概念,包括Java编程、SpringBoot框架、Maven依赖管理、拦截器、全局异常处理、数据库操作以及前端界面的开发,特别是Layui组件库的使用。 首先,SpringBoot是Spring框架的一个简化...

    Spring Boot处理全局统一异常的两种方法与区别

    `ErrorController`的优势在于,即使在过滤器、切面或拦截器中抛出的异常,也能被正确捕获。 总结起来,Spring Boot提供的这两种异常处理方式各有优缺点。`@ControllerAdvice`和`@ExceptionHandler`注解适合处理特定...

    Springboot2.0处理自定义异常并返回json

    接下来,为了全局处理这种自定义异常,我们可以创建一个@ControllerAdvice注解的类,它包含一个或多个@ExceptionHandler方法。这些方法会在出现指定异常时被调用,用来生成对应的响应。在这个例子中,`...

    基于SpringBoot企业级完善架构

    6. **ExceptionHandler(错误消息统一处理)**:在SpringBoot应用中,通过全局异常处理器(@ControllerAdvice + @ExceptionHandler)可以统一处理所有控制器层的异常,提供友好的错误提示,同时便于日志记录和问题...

    springboot-template-master

    在 "springboot-template-master" 项目中,我们可以看到这个模板集成了多个核心功能,包括 Redis 数据缓存、Swagger API 文档生成、AOP 日志记录、用户管理和权限控制、拦截器实现登录验证、全局异常处理以及 ...

    MyGlobalException.zip

    2. **@ControllerAdvice**: 这个注解是Spring MVC的一个特性,用于标记一个类为控制器的全局顾问,它会拦截所有带有@RequestMapping、@GetMapping、@PostMapping等注解的方法抛出的异常。在类中定义一个异常处理方法...

    SpringBoot-demo

    1. **SpringBoot自定义异常处理**:SpringBoot提供了一种优雅的方式处理全局异常,可以创建一个继承自`AbstractErrorController`或实现`ErrorAttributes`接口的类,通过注册到Spring容器,可以统一捕获并处理应用...

    springboot登录注册发表文章

    5. 权限控制:使用Spring Security或自定义拦截器,实现对文章操作的权限控制,如只有登录用户才能发布文章,管理员才能删除文章等。 三、文章列表与详情 1. 文章列表:在ArticleController中,设计一个接口返回...

    SpringBoot+Layui后台管理系统.zip

    8. **异常处理**:在SpringBoot中配置全局异常处理器,统一处理可能出现的运行时异常,提供友好的错误提示。 9. **测试与部署**:编写单元测试,确保各个模块功能的正确性,然后打包成可执行的JAR或WAR文件,部署到...

    基于SpringBoot +Shiro+ Layui 构建的商城商店系统.zip

    10. **异常处理**: 自定义全局异常处理器,统一处理程序中的异常情况,提供友好的错误提示。 **部署与运行** 1. 配置数据库连接信息:修改配置文件中的数据库连接信息,确保与实际数据库匹配。 2. 启动应用:运行...

    springboot2.0 配置时间格式化不生效问题的解决

    然而,如果你创建了一个继承自`WebMvcConfigurationSupport`的配置类,并且在这个类中添加了拦截器,可能会意外地覆盖了Spring Boot自动配置的`WebMvcAutoConfiguration`,其中包括日期格式化的配置。 为了解决这个...

    基于SpringBoot的脚手架项目

    - **异常处理**:全局异常处理器,统一处理程序中抛出的异常,提供友好的错误信息。 - **API文档**:可能使用Swagger来生成RESTful API的文档,方便前后端协作。 - **数据库连接**:通过JPA或MyBatis等持久层框架...

    springboot大学城水电管理系统.zip

    7. **异常处理**:在SpringBoot中,可以通过@ControllerAdvice和@ExceptionHandler注解实现全局的异常处理,统一返回友好的错误信息,提高用户体验。 8. **日志管理**:系统采用Logback或Log4j等日志框架,记录系统...

    优雅集成i18n实现国际化信息返回.zip

    优雅集成i18n实现国际化信息返回是SpringBoot框架中一个重要的功能,它使得应用程序能够支持多语言环境,为全球用户提供更加友好的交互体验。在SpringBoot中,i18n(Internationalization)通常通过资源文件来实现,...

    基于SpringBoot的项目通用包.zip

    10. **拦截器**: 实现通用的请求拦截逻辑,如登录验证、性能监控等。 这些通用模块的存在,是为了提高代码复用性和减少重复工作,使得项目开发更加高效。开发者可以根据实际需求选择性地引入和扩展这些组件。

    demoshiro.zip

    7. **异常处理**:配置全局的异常处理,捕获Shiro抛出的未授权和未认证异常,返回友好的提示信息。 通过以上步骤,我们就成功地将SpringBoot和Shiro整合在一起,实现了对Controller层的权限验证以及前端页面按钮的...

    SpringBoot+Vue的博客项目.zip

    总之,SpringBoot+Vue的博客项目结合了两者的优势,既实现了高效稳定的后端服务,又提供了流畅友好的前端交互。通过不断学习和实践,开发者可以打造出功能强大且具有高度定制性的个人博客系统。

Global site tag (gtag.js) - Google Analytics