重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
这篇文章主要为大家展示了“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中如何处理异常”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注创新互联网站制作公司行业资讯频道!
创新互联www.cdcxhl.cn,专业提供香港、美国云服务器,动态BGP最优骨干路由自动选择,持续稳定高效的网络助力业务部署。公司持有工信部办法的idc、isp许可证, 机房独有T级流量清洗系统配攻击溯源,准确进行流量调度,确保服务器高可用性。佳节活动现已开启,新人活动云服务器买多久送多久。