您的位置:首页 > 房产 > 家装 > 今日全国疫情_河南一般建一个网站需要多少钱_杭州做百度推广的公司_seo外链增加

今日全国疫情_河南一般建一个网站需要多少钱_杭州做百度推广的公司_seo外链增加

2024/10/7 4:31:56 来源:https://blog.csdn.net/qq_30021219/article/details/142415690  浏览:    关键词:今日全国疫情_河南一般建一个网站需要多少钱_杭州做百度推广的公司_seo外链增加
今日全国疫情_河南一般建一个网站需要多少钱_杭州做百度推广的公司_seo外链增加

Spring框架中识别和调用拦截器(Interceptor)和异常处理器(HandlerExceptionResolver)是通过容器内部的组件扫描和自动装配机制来完成的。

拦截器(Interceptor):

Spring MVC 的拦截器必须实现 HandlerInterceptor 接口。你可以定义一个拦截器类,然后将其注册为Spring的Bean。

import org.springframework.web.servlet.HandlerInterceptor;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;public class MyInterceptor implements HandlerInterceptor {@Overridepublic boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) {// 在请求处理之前进行调用return true; // 如果返回false,则停止流程,api不会被调用}@Overridepublic void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) {// 请求处理之后进行调用,但是在视图被渲染之前}@Overridepublic void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) {// 在整个请求结束之后调用,也就是在DispatcherServlet渲染了视图执行}
}

然后在Spring配置中注册这个拦截器:

import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;@Configuration
public class WebConfig implements WebMvcConfigurer {@Overridepublic void addInterceptors(InterceptorRegistry registry) {registry.addInterceptor(new MyInterceptor());}
}

异常处理器(HandlerExceptionResolver)

:

异常处理器可以通过实现 HandlerExceptionResolver 接口来创建

import org.springframework.core.Ordered;
import org.springframework.core.annotation.Order;
import org.springframework.web.servlet.HandlerExceptionResolver;
import org.springframework.web.servlet.ModelAndView;import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;@Order(value=1)
public class MyHandlerExceptionResolver implements HandlerExceptionResolver, Ordered {@Overridepublic ModelAndView resolveException(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) {// 在这里处理异常,创建一个包含错误信息的ModelAndViewreturn new ModelAndView("error");}@Overridepublic int getOrder() {return 1;}
}

Spring会自动扫描标注了@Component的类,如果这个类实现了HandlerExceptionResolver接口,那么它会被注册为异常处理器。

或者,你也可以在配置类中显式注册异常处理器

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;@Configuration
public class WebConfig {@Beanpublic HandlerExceptionResolver handlerExceptionResolver() {return new MyHandlerExceptionResolver();}
}

以上代码展示了如何定义和注册Spring MVC的拦截器和异常处理器。Spring会在启动时自动发现并应用这些配置。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com