package cn.tedu.baking.exception;
import cn.tedu.baking.response.JsonResult;
import cn.tedu.baking.response.StatusCode;
import lombok.extern.slf4j.Slf4j;
import org.springframework.security.access.AccessDeniedException;
import org.springframework.security.authentication.BadCredentialsException;
import org.springframework.security.authentication.InternalAuthenticationServiceException;
import org.springframework.security.core.AuthenticationException;
import org.springframework.web.bind.MethodArgumentNotValidException;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.RestControllerAdvice;
/**
* ControllerAdvice: 标识当前类为全局异常处理器类型,
* 可以捕获和处理Controller中抛出的异常。
* RestControllerAdvice:复合注解,等价于 ControllerAdvice 和 ResponseBody 注解
* 当某个Controller中出现了异常,系统底层会查找有没有定义全局异常处理器对象;
* 以及全局异常处理器对象中有没有定义对应的异常处理方法,如果有则调用此方法处理异常。
*/
//@ControllerAdvice
@Slf4j
@RestControllerAdvice
public class GlobalExceptionHandler {
/**
* ExceptionHandler:标识当前方法为异常处理方法,参数为捕获到的异常的对象
* @param ex 具体的异常对象
* ex.getMessage()方法: 获取异常中的提示消息
*/
@ExceptionHandler
public JsonResult doHandleRuntimeException(RuntimeException ex){
log.error("error is: " + ex.getMessage());
// if (ex.getClass().getName().contains("AccessDeniedException")){
// System.out.println("无权访问异常!!!!");
// return new JsonResult(StatusCode.FORBIDDEN_ERROR);
// }
return new JsonResult(StatusCode.OPERATION_FAILED, ex.getMessage());
}
/**
* 当Controller中出现异常时,会优先在全局异常处理器中使用对应异常的处理方法处理异常;
* 如果没有对应的异常处理方法,则会找该异常的父类异常处理方法处理该异常。
*/
@ExceptionHandler
public JsonResult doHandleIllegalArgumentException(IllegalArgumentException ex){
log.error("IllegalArgumentException error is: " + ex.getMessage());
return new JsonResult(StatusCode.OPERATION_FAILED, ex.getMessage());
}
/**
* Validation中参数校验失败的异常处理方法
* @param ex 异常对象
* @return
*/
@ExceptionHandler
public JsonResult doHandleArgumentNotValidException(MethodArgumentNotValidException ex){
/*
ex.getFieldError().getDefaultMessage()):获取valitation中的异常消息
*/
return new JsonResult(StatusCode.VALIDATE_ERROR, ex.getFieldError().getDefaultMessage());
}
/**
* 捕获所有异常并处理
*/
// @ExceptionHandler
// public JsonResult doHandleThrowable(Throwable ex){
// log.error("程序运行中出现Throwable");
// return new JsonResult(StatusCode.OPERATION_FAILED, "程序运行中出现Throwable");
// }
//import org.springframework.security.core.AuthenticationException;
@ExceptionHandler({InternalAuthenticationServiceException.class,
BadCredentialsException.class})
public JsonResult handleAuthenticationException(
AuthenticationException e){
if (e instanceof InternalAuthenticationServiceException){
log.warn("用户名不存在!");
return new JsonResult(StatusCode.USERNAME_ERROR);
}
log.warn("密码错误!");
return new JsonResult(StatusCode.PASSWORD_ERROR);
}
/**
* 无权访问时抛出的异常
*/
@ExceptionHandler(AccessDeniedException.class)
public JsonResult handleAccessDeniedException(AccessDeniedException e){
log.warn("无权访问!");
return new JsonResult(StatusCode.FORBIDDEN_ERROR);
}
}
没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
此项目包括springboot、springmvc、mybatis、前端vue、js、mysql数据库、 还有一些后端依赖:Security、lombok等等 主要内容:为烘培坊建立一个方便管理的网页,可以随时添加内容,详情看代码
资源推荐
资源详情
资源评论
收起资源包目录
基于springboot的烘培管理系统源码+数据库.zip (75个子文件)
code
mvnw.cmd 8KB
pom.xml 3KB
src
test
java
cn
tedu
baking
BakingApplicationTests.java 228B
main
resources
application.properties 884B
baking.sql 56KB
static
contentList.html 6KB
js
my-header.js 5KB
personal.html 8KB
detail.html 11KB
reg.html 5KB
login.html 5KB
admin.html 10KB
articleManagement.html 13KB
index.html 12KB
postArticle.html 14KB
imgs
c.jpg 100KB
b.jpg 57KB
loginbg.gif 310KB
a.jpg 444KB
banner3.jpg 489KB
d.jpg 86KB
banner1.jpg 500KB
head.jpg 40KB
avarbg.jpg 16KB
reg.png 205KB
banner2.jpg 479KB
icon.png 4KB
mappers
UserMapper.xml 2KB
CategoryMapper.xml 786B
CommentMapper.xml 851B
BannerMapper.xml 812B
Content.xml 6KB
java
cn
tedu
baking
mapper
UserMapper.java 499B
ContentMapper.java 976B
BannerMapper.java 399B
CommentMapper.java 336B
CategoryMapper.java 360B
security
SecurityConfig.java 3KB
UserDetailServiceImpl.java 2KB
CustomUserDetails.java 797B
controller
UploadController.java 2KB
CategoryController.java 908B
UserController.java 4KB
ContentController.java 4KB
CommentController.java 2KB
BannerController.java 876B
pojo
entity
Content.java 526B
Comment.java 258B
Banner.java 233B
User.java 323B
dto
UserLoginDTO.java 158B
UserUpdateDTO.java 181B
CommentDTO.java 210B
ContentDTO.java 343B
UserRegDTO.java 186B
vo
CommentVO.java 387B
BannerVO.java 148B
ContentDetailVO.java 627B
ContentSimpleVO.java 346B
BannerAdminVO.java 323B
ContentIndexVO.java 276B
UserVO.java 231B
CategoryVO.java 146B
ContentAdminVO.java 486B
ContentManagementVO.java 581B
UserAdminVO.java 414B
ContentUpdateVO.java 318B
BakingApplication.java 332B
response
JsonResult.java 2KB
StatusCode.java 732B
exception
GlobalExceptionHandler.java 4KB
config
MabatisConfiguration.java 244B
.mvn
wrapper
maven-wrapper.properties 235B
maven-wrapper.jar 61KB
mvnw 11KB
共 75 条
- 1
资源评论
FL1768317420
- 粉丝: 4500
- 资源: 4773
下载权益
C知道特权
VIP文章
课程特权
开通VIP
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功