<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          Spring之?dāng)r截器

          共 5548字,需瀏覽 12分鐘

           ·

          2021-07-29 09:36

          一、SpringMvc攔截器

          springmvc.xml配置

          <mvc:interceptors>
          <
          mvc:interceptor>
          <
          mvc:mapping path="/**" />
          <bean
          class="com.test.interceptor.MyInterceptor">
          </bean>
          </
          mvc:interceptor>
          </
          mvc:interceptors>


          攔截器MyInterceptor類代碼(統(tǒng)計(jì)接口訪問次數(shù))

          public class MyInterceptor extends HandlerInterceptorAdapter {


          private
          ThreadLocal<StopWatch> stopWatchLocal = new ThreadLocal<StopWatch>();

          @Autowired
          protected SystemInterfaceLogService systemInterfaceLogService;
          @Override
          public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler)
          throws Exception {
          StopWatch stopWatch = new StopWatch(handler.toString());
          stopWatchLocal.set(stopWatch);
          stopWatch.start("stopWatchLocal");
          return super.preHandle(request, response, handler);
          }

          @Override
          public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex)
          throws Exception {
          Long time = 0L;
          StopWatch stopWatch = stopWatchLocal.get();
          if
          (stopWatch != null) {
          if (stopWatch.isRunning()) {
          stopWatch.stop();
          time = stopWatch.getTotalTimeMillis();
          stopWatchLocal.remove();
          }
          }
          String currentPath = request.getRequestURI();
          String requestType = request.getMethod();
          String queryString = "";
          if
          (requestType.equals("GET")){
          queryString = request.getQueryString();
          queryString = queryString == null ? "" : "?" + queryString;
          }else{
          BufferedReader br=request.getReader();
          String inputLine = "";
          while ((inputLine = br.readLine()) != null) {
          queryString += inputLine;
          }
          br.close();
          }
          SystemInterfaceLogDtl data = new SystemInterfaceLogDtl();
          data.setUrlId(UUID.randomUUID().toString());
          data.setSystemType("test");
                data.setRequestUrlName(currentPath.substring(currentPath.lastIndexOf("/")+1,currentPath.length()));     
                //請(qǐng)求接口路徑

          data.setRequestUrl(currentPath);

                //請(qǐng)求接口參數(shù)

          data.setRequeryParm(queryString);

                //請(qǐng)求接口時(shí)長(ms)
          data.setRequeryTime(time);
          String date = DateUtils.convertToTime(new Date());
          data.setCreateTime(date);
          data.setLastTime(date);
          systemInterfaceLogService.insertSystemInterfaceLog(data);
          super
          .afterCompletion(request, response, handler, ex);

          }


          @Override
          public void afterPropertiesSet() throws Exception {

          }
          }


          二、SpringBoot攔截器

          添加web過濾器

          1、添加web 過濾器,管理過濾的類,以及過濾的請(qǐng)求路徑

          2、實(shí)現(xiàn)WebMvcConfigurer?類,復(fù)寫父類的方法 addInterceptors

          3、通過registry.addInterceptor攔截類,addPathPatterns攔截路徑,excludePathPatterns添加允許路徑


          @Configuration
          public class addInterceptor implements WebMvcConfigurer {
          @Resource
          private MyInterceptor authInterceptor;
          /**
          * 自定義資源映射
          *
          *
          @param registry
          */
          @Override
          public void addResourceHandlers(ResourceHandlerRegistry registry) {

          }

          /**
          * 攔截頁面
          *
          *
          @param registry
          */
          @Override
          public void addInterceptors(InterceptorRegistry registry) {
          registry.addInterceptor(authInterceptor).addPathPatterns("/**").excludePathPatterns("/");
          }

          /**
          * 視圖跳轉(zhuǎn)控制器
          *
          @param registry
          */
          @Override
          public void addViewControllers(ViewControllerRegistry registry) {

          }

          /**
          * 默認(rèn)靜態(tài)資源處理器
          *
          @param configurer
          */
          @Override
          public void configureDefaultServletHandling(DefaultServletHandlerConfigurer configurer) {

          }

          /**
          * 配置視圖解析器
          *
          @param registry
          */
          @Override
          public void configureViewResolvers(ViewResolverRegistry registry) {
          }

          /**
          * 配置內(nèi)容裁決的一些選項(xiàng)
          *
          @param configurer
          */
          @Override
          public void configureContentNegotiation(ContentNegotiationConfigurer configurer) {

          }
          }


          攔截器MyInterceptor類代碼(統(tǒng)計(jì)接口訪問次數(shù))

          @Component
          public class MyInterceptor extendsHandlerInterceptorAdapter {

          private ThreadLocal<StopWatch> stopWatchLocal = new ThreadLocal<StopWatch>();
          @Autowired
          protected SystemInterfaceLogService systemInterfaceLogService;
          @Override
          public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler)
          throws Exception {
          StopWatch stopWatch = new StopWatch(handler.toString());
          stopWatchLocal.set(stopWatch);
          stopWatch.start("stopWatchLocal");
          return super.preHandle(request, response, handler);
          }

          @Override
          public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex)
          throws Exception {
          Long time = 0L;
          StopWatch stopWatch = stopWatchLocal.get();
          if
          (stopWatch != null) {
          if (stopWatch.isRunning()) {
          stopWatch.stop();
          time = stopWatch.getTotalTimeMillis();
          stopWatchLocal.remove();
          }
          }
          String currentPath = request.getRequestURI();
          String requestType = request.getMethod();
          String queryString = "";
          if
          (requestType.equals("GET")){
          queryString = request.getQueryString();
          queryString = queryString == null ? "" : "?" + queryString;
          }else{
          BufferedReader br=request.getReader();
          String inputLine = "";
          while ((inputLine = br.readLine()) != null) {
          queryString += inputLine;
          }
          br.close();
          }
          SystemInterfaceLogDtl data = new SystemInterfaceLogDtl();
          data.setUrlId(UUID.randomUUID().toString());
          data.setSystemType("test");
                data.setRequestUrlName(currentPath.substring(currentPath.lastIndexOf("/")+1,currentPath.length()));     
                //請(qǐng)求接口路徑

          data.setRequestUrl(currentPath);

                //請(qǐng)求接口參數(shù)

          data.setRequeryParm(queryString);

                //請(qǐng)求接口時(shí)長(ms)
          data.setRequeryTime(time);
          String date = DateUtils.convertToTime(new Date());
          data.setCreateTime(date);
          data.setLastTime(date);
          systemInterfaceLogService.insertSystemInterfaceLog(data);
          super
          .afterCompletion(request, response, handler, ex);

          }


          @Override
          public void afterPropertiesSet() throws Exception {

          }


          瀏覽 45
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評(píng)論
          圖片
          表情
          推薦
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  91精品婷婷国产综合久久韩漫 | 3级久久高清 | 撸一撸在线播放 | 天津人妻第三次3p视频 | 色逼逼免费视频网站 |