spring boot第六次作业

异常处理
SpringBoot的异常处理
@ControllerAdvice
public class ExceptionControllerAdvice {
private final static Logger LOGGER = LoggerFactory.getLogger(ExceptionControllerAdvice.class);

@ExceptionHandler(BusinessException.class)
@ResponseBody
public Result<?> handleBusinessException(HttpServletRequest request,
Exception e) {
return handleException(request, e, false);
}

@ExceptionHandler(HttpRequestMethodNotSupportedException.class)
@ResponseBody
public ResponseEntity<Integer> handleMethodNotSupportedException(HttpServletRequest request,
Exception e) {
return ResponseEntity.badRequest().body(null);
}

@ExceptionHandler(Exception.class)
@ResponseBody
public Result<?> handleOtherException(HttpServletRequest request,
Exception e) {
return handleException(request, e, true);
}

private Result<?> handleException(HttpServletRequest request,
Exception e,
boolean logger) {
String errMsg = ExceptionUtils.getErrorMessage(e);
String strError = StringUtils.isEmpty(errMsg) ? e.getMessage() : errMsg;
ResultCode respondCode = ResultCode.get(strError);
if (logger) {
LOGGER.error(strError, e);
e.printStackTrace();
}
if (respondCode == null) {
return Result.error(strError);
} else {
return Result.create(respondCode);
}
}


登录拦截
一,自定义拦截类
public class LoginInterceptor implements HandlerInterceptor {

private static final Logger log = LoggerFactory.getLogger(LoginInterceptor.class);

/**
 * 进入controller层之前拦截请求
 * @param httpServletRequest
 * @param httpServletResponse
 * @param o
 * @return
 * @throws Exception
 */
@Override
public boolean preHandle(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object o) throws Exception {

    log.info("---------------------开始进入请求地址拦截----------------------------");
    HttpSession session = httpServletRequest.getSession();
    UserInfo userInfo = (UserInfo)session.getAttribute("user");
    if(userInfo!=null){
        return true;
    }
    else{
        //PrintWriter printWriter = httpServletResponse.getWriter();
        //printWriter.write("{code:0,message:\"会话已过期,请重新登录!\"}");
        httpServletResponse.sendRedirect(httpServletRequest.getContextPath()+"/admin");
        return false;
    }

}

@Override
public void postHandle(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object o, ModelAndView modelAndView) throws Exception {
    log.info("--------------处理请求完成后视图渲染之前的处理操作---------------");
}

@Override
public void afterCompletion(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object o, Exception e) throws Exception {
    log.info("---------------视图渲染之后的操作-------------------------0");
}

}

二、在Application类中,声明拦截器
@Override
public void addInterceptors(InterceptorRegistry registry) {
//注册自定义拦截器,添加拦截路径和排除拦截路径
registry.addInterceptor(new LoginInterceptor()).addPathPatterns("/admin/**")
.excludePathPatterns("/admin/login.do").excludePathPatterns("/admin");
}

1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值