当前位置: 首页 > news >正文

做网站需要用到那些软件上海网站备案

做网站需要用到那些软件,上海网站备案,秦皇岛建设网招聘,广州谷歌优化springmvc异常处理 spring中有三种方式可以优雅的处理异常 使用ExceptionHandler 使用HandlerExceptionResolver 使用ControllerAdviceExceptionHandler 使用ExceptionHandler 该方式只在指定的Controller有效#xff0c;不会对其他的Controller产生影响 ControllerRequestMap… springmvc异常处理 spring中有三种方式可以优雅的处理异常 使用ExceptionHandler 使用HandlerExceptionResolver 使用ControllerAdviceExceptionHandler 使用ExceptionHandler 该方式只在指定的Controller有效不会对其他的Controller产生影响 ControllerRequestMapping(/exception)public class ExceptionController {    // 使用ExceptionHandler只对该Controller有效对其他Controller无效如果想要对所有Controller生效    // 需要将该方法写到基类让所有的Controller都继承该基类Controller    ExceptionHandler(BusinessException.class)    ResponseBody    public String exception(Exception e){        return 出现异常e.getMessage();    }    RequestMapping(/testException)    ResponseBody    public String testException(){        User user  null;        System.out.println(user.getId());        return success;    }    RequestMapping(/testBusinessException)    ResponseBody    public String testBusinessException(){        throw new BusinessException();    }} 此时如果访问/exception/testBusinessException出现异常就会跳转到exception方法中将结果返回给浏览器 由于该方式只对ExceptionHandler注解指定方法所在的Controller中生效所以为了可以针对多个Controller生效需要将ExceptionHandler注解指定方法抽离到一个Controller基类中 Controllerpublic class BaseController {    ExceptionHandler(BusinessException.class)    ResponseBody    public String exception(Exception e){        return 出现异常e.getMessage();    }} 然后需要该异常处理的Controller继承该基类 ControllerRequestMapping(/exception)public class ExceptonController1 extends BaseController {    RequestMapping(/testBusinessException1)    ResponseBody    public String testBusinessException(){        throw new BusinessException();    }} 使用HandlerExceptionResolver 处理器异常解析器接口是负责处理各类控制器执行过程中出现的异常 public interface HandlerExceptionResolver {   ModelAndView resolveException(         HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex);} 该方式是在DispatcherServlet中默认使用的在processHandlerException()方法中调用异常解析 protected ModelAndView processHandlerException(HttpServletRequest request, HttpServletResponse response,      Object handler, Exception ex) throws Exception {   // Check registered HandlerExceptionResolvers...   ModelAndView exMv  null;  // 异常处理器   for (HandlerExceptionResolver handlerExceptionResolver : this.handlerExceptionResolvers) {      exMv  handlerExceptionResolver.resolveException(request, response, handler, ex);      if (exMv ! null) {         break;      }   }   if (exMv ! null) {      if (exMv.isEmpty()) {         request.setAttribute(EXCEPTION_ATTRIBUTE, ex);         return null;      }      // We might still need view name translation for a plain error model...      if (!exMv.hasView()) {         exMv.setViewName(getDefaultViewName(request));      }      if (logger.isDebugEnabled()) {         logger.debug(Handler execution resulted in exception - forwarding to resolved error view:   exMv, ex);      }      WebUtils.exposeErrorRequestAttributes(request, ex, getServletName());      return exMv;   }   throw ex;} 其有四个实现类 DefaultHandlerExceptionResolver DefaultHandlerExceptionResolver在DispatcherServlet中是默认使用的用于将Spring中的标准异常解析为对应的HTTP状态码但是响应体并不会改变 ResponseStatusExceptionResolver ResponseStatusExceptionResolver在DispatcherServlet中是默认使用的主要是和自定义异常上配置的ResponseStatus注解进行搭配使用将自定义异常映射到设定的HTTP状态码与DefaultHandlerExceptionResolver一样只是更改了状态码并没有改变响应体 该异常处理机制是来解析ResponseStatus来标注的异常 自定义异常 // code指定的是状态码reason指定的是错误信息ResponseStatus(code  HttpStatus.BAD_REQUEST,reason  出现业务异常)public class BusinessException extends RuntimeException{} RequestMapping(/testBusinessException)ResponseBodypublic String testBusinessException(){    throw new BusinessException();} 调用该接口就会返回到状态码为400的错误页面 SimpleMappingExceptionResolver SimpleMappingExceptionResolver用来映射异常类名到视图名 AnnotationMethodHandlerExceptionResolver AnnotationMethodHandlerExceptionResolver通过注解ExceptionHandler来处理异常已经被废弃 ExceptionHandlerExceptionResolver 如果出现异常先是查找该Controller中用ExceptionHandler注解定义的方法 如果没有找到ExceptionHandler注解的话就会寻找标记了ControllerAdvice注解的类中的ExceptionHandler注解方法 除此之外还可以自定义异常解析器继承AbstractHandlerMethodExceptionResolver 自定义异常解析器 Componentpublic class CustomExceptionResolver extends AbstractHandlerExceptionResolver {    Override    protected ModelAndView doResolveException(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) {        if(ex instanceof BusinessException){            System.out.println(出现业务异常);            ModelAndView modelAndView  new ModelAndView();            modelAndView.setStatus(HttpStatus.BAD_REQUEST);            modelAndView.addObject(msg,出现业务异常);            return modelAndView;        }        return null;    }} 但是由于该自定义解析依然返回的是ModelAndView所以与目前前后端分离的项目不太搭 使用ControllerAdviceExceptionHandler 在前面的ExceptionHandlerExceptionResolver中已经用到了ControllerAdvice其实ControllerAdvice是对于ExceptionHandler的一个补充使得可以进行全局的异常解析可以将之前多个分散的ExceptionHandler整合起来合并成为一个单一的全局的异常处理中 ControllerAdvicepublic class GlobalExceptionHandler {    ExceptionHandler    ResponseBody    public String exception(Exception e){        return 全局捕获: 出现异常e.getMessage();    }} 它允许对响应体和HTTP状态码进行完全控制 它允许将几个异常映射到相同的方法以便一起处理 它充分利用了新的REST风格的 ResposeEntity响应 Target(ElementType.TYPE)Retention(RetentionPolicy.RUNTIME)DocumentedComponentpublic interface ControllerAdvice {      AliasFor(basePackages)   String[] value() default {};   // 指定生效的包   AliasFor(value)   String[] basePackages() default {};   // 指定生效的包   Class?[] basePackageClasses() default {};   // 指定生效的类   Class?[] assignableTypes() default {};   // 指定生效的注解如RestController   Class? extends Annotation[] annotations() default {};} 局部异常处理 在当前Controller中处理异常(当前Controller中使用ExceptionHandler标注的方法) ControllerRequestMapping(/exception)public class ExceptionController {  /**  * 在Controller中所写的ExceptionHandler方法只能处理该Controller类中出现的异常不可以处理其他Controller中出现的异常此为局部异常处理  */    ExceptionHandler    ResponseBody    public String exception(Exception e){        return 出现异常e.getMessage();    }    RequestMapping(/testException)    ResponseBody    public String testException(){        User user  null;        System.out.println(user.getId());        return success;    }} 全局异常处理 如果当前Controller中没有异常处理则会使用全局异常(使用ControllerAdvice标注的类中的ExceptionHandler方法) ControllerAdvicepublic class GlobalExceptionHandler {    ExceptionHandler    ResponseBody    public String exception(Exception e){        return 全局捕获: 出现异常e.getMessage();    }} 也可以使用RestControllerAdvice相当于ControllerAdviceResponseBody https://zhhll.icu/2021/框架/springmvc/基础/6.springmvc异常处理/ 本文由 mdnice 多平台发布
http://www.dnsts.com.cn/news/52251.html

相关文章:

  • 海派虫网站推广软件小型企业网站建设模板
  • 商务网站的特点苏州企业网站建设
  • 塘下做网站效果好的手机网站建设
  • 曲阳网站建设推广网站备案多个域名
  • 成都学校网站建设绵阳房产网
  • 福州网站制作服务wordpress sae 4.4
  • 平凉市建设局网站网站建设与管理专业人才调研
  • 南通网站建别墅设计图纸
  • 初中信息科技怎么自己做网站邹平网站开发
  • 网站开发与设计总结宣传册设计与制作素材
  • asp连接数据库做登录网站完整下载泰安企业做网站
  • html5网站建设wordpress添加分类图片
  • 网站缓存实例杭州网站seo优化
  • 深圳网站建设兼职销售客户管理软件哪个好
  • 贵州省住房和城乡建设厅门户网站哪个软件可以制作游戏
  • 企业网站能起到什么作用响应式app网站模板
  • 免费表白网站制作网站建设与推广方案模板
  • 建设公共资源交易中心网站页面设计模板素材
  • 深度网网站建设方案风机 东莞网站建设
  • 做购物网站适合的服务器wordpress一键更新域名插件
  • 网站添加支付宝阿里云共享云主机做网站
  • 新公司 做网站 流程佛山网页设计模板
  • 青海省住房和城乡建设厅 网站十大网络安全上市公司
  • 怎么做网站推广网站空间费用一年多少
  • 网站建设的市场规模网站建设实训的目的
  • pc做网站服务器吗一个人建网站
  • 全国做网站的专业网站建设顾问
  • 网站认证免费梧州高端网站建设服务
  • 展示型企业网站有哪些举例营销型企业网站建设 广义的空间
  • 网站建设行业衰落760关键词排名查询