千家信息网

spring mvc中如何处理异常

发表于:2025-02-06 作者:千家信息网编辑
千家信息网最后更新 2025年02月06日,这篇文章主要为大家展示了"spring mvc中如何处理异常",内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下"spring mvc中如何处理异常"这篇文章吧。
千家信息网最后更新 2025年02月06日spring mvc中如何处理异常

这篇文章主要为大家展示了"spring mvc中如何处理异常",内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下"spring mvc中如何处理异常"这篇文章吧。

spring mvc中的404:

1.mappedHandler找不到

response.sendError(HttpServletResponse.SC_NOT_FOUND);

spring mvc异常机制

1.mappedHandler找不到 并且throwExceptionIfNoHandlerFound设定为true

throwExceptionIfNoHandlerFound

source:

                             if (this.throwExceptionIfNoHandlerFound) {                                        throw new NoHandlerFoundException(request.getMethod(), getRequestUri(request),                                                        new ServletServerHttpRequest(request).getHeaders());                                }                                else {                                        response.sendError(HttpServletResponse.SC_NOT_FOUND);                                }

config:

web.xml的配置Dispatcher的此参数为true

                                                                                  throwExceptionIfNoHandlerFound                                                true                                        

2.判断返回视图层之前是否发生了异常,主要有两种HandlerExceptionResolver、ModelAndViewDefiningException

3.如没有异常,则进行视图渲染

通过viewResolver找出相应的view,进行具体的模板渲染

通过不同的View实现AbstractView的renderMergedOutputModel方法

Exception if there's a problem rendering the view

如果ViewResolver匹配不到对应的View,则抛出ServletException

ServletException:if view is missing or cannot be resolved

spring mvc 异常处理

1.HandlerExceptionResolver

只能处理请求过程中抛出的异常

不处理异常处理本身所抛出的异常和视图解析过程中抛出的异常

2.@ControllerAdvice的@ExceptionHandler注解

3.1和2只能处理view之前的异常,如果是视图层渲染异常,需要另行处理

一.利用filter,捕获除了1和2之外的异常

                        public class ErrorHandlerFilter implements Filter {                          ErrorHandler errorHandler;                          @Override                          public void doFilter(ServletRequest request, ServletResponse response, FilterChain filterChain) throws IOException, ServletException {                                try {                                  filterChain.doFilter(request, response);                                } catch (Exception ex) {                                  // call ErrorHandler and dispatch to error jsp                                  String errorMessage = errorHandler.handle(request, response, ex);                                  request.setAttribute("errorMessage", errorMessage);                                  request.getRequestDispatcher("/WEB-INF/jsp/error/dispatch-error.jsp").forward(request, response);                                }                          @Override                          public void init(FilterConfig filterConfig) throws ServletException {                                errorHandler = (ErrorHandler) WebApplicationContextUtils                                  .getRequiredWebApplicationContext(filterConfig.getServletContext())                                  .getBean("defaultErrorHandler");                          }                          // ...                        }

二.从写dispatchServlet再doservice时候捕获异常

                 public class DispatcherServletHandler extends DispatcherServlet {                                private static final String ERROR = "error";                                private static final String VIEW_ERROR_PAGE = "/WEB-INF/views/error/view-error.jsp";                                @Override                                protected void doService(HttpServletRequest request, HttpServletResponse response) throws Exception {                                        try{                                                super.doService(request, response);                                        } catch(Exception ex) {                                                request.setAttribute(ERROR, ex);                                                request.getRequestDispatcher(VIEW_ERROR_PAGE).forward(request, response);                                        }                                 }                        }

以上是"spring mvc中如何处理异常"这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注行业资讯频道!

处理 视图 内容 篇文章 过程 学习 帮助 不同 参数 方法 时候 易懂 更多 机制 条理 模板 注解 知识 编带 行业 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 辽宁省内网络安全考研 綦江区网络软件开发服务代理商 软件开发人员加班吃什么 至强e5网站服务器 方舟创建自己的服务器是永久的吗 舟山网络安全等级保护技术咨询 保障服务器安全的方法 我的世界服务器自定义武器瞬移 安徽专升本网络技术能考哪 杭州电商软件开发如何收费 检测仪器内置甲骨文或数据库 花雨庭服务器无法进入 高性能服务器批发厂家 中国资料数据库 金蝶软件下载然后显示没有服务器 diy服务器配置 国家管理互联网有服务器吗 供应链erp软件开发公司 武汉网络互联网科技有限公司 网络安全图片原图 zabbix绘图数据库 服务器管理安全问题 青浦区会计软件开发怎么样 oracle数据库傻瓜软件 服务器接入小爱同学 两列表格删除重复数据库 广州轻吧微信点餐机软件开发 工商银行软件开发中心成都待遇 光遇不同服务器互通吗 数据库是由一个或几个文档构成的
0