javascript
SpringBoot项目去除druid监控的底部广告
文章目錄
- 一、阿里Druid廣告的介紹
- 二、引入Druid的Starter依賴(lài)
- 三、編寫(xiě)配置類(lèi),進(jìn)行廣告的去除
- 四 、啟動(dòng)項(xiàng)目進(jìn)行測(cè)試
- 五、原理說(shuō)明
一、阿里Druid廣告的介紹
如果使用的是阿里Druid的數(shù)據(jù)庫(kù)連接池,那么會(huì)自帶一個(gè)數(shù)據(jù)庫(kù)的監(jiān)控頁(yè)面. 但是其頁(yè)面底部會(huì)有阿里的廣告,如下圖所示,并且在其最下方的作者申明中, 有一個(gè)作者的鏈接,會(huì)直接到澳門(mén)賭場(chǎng)的頁(yè)面,這是極其不友好的.因此需要進(jìn)行去除
二、引入Druid的Starter依賴(lài)
對(duì)于SpringBoot項(xiàng)目.阿里druid有其專(zhuān)門(mén)的druid-spring-boot-starter版本, 我使用的是1.1.13版本
<dependency><groupId>com.alibaba</groupId><artifactId>druid-spring-boot-starter</artifactId><version>1.1.13</version></dependency>三、編寫(xiě)配置類(lèi),進(jìn)行廣告的去除
在SpringBoot項(xiàng)目中編寫(xiě)一個(gè)RemoveDruidAdConfig配置類(lèi),進(jìn)行監(jiān)控頁(yè)面廣告的去除
package com.gblfy.web.core.config;import com.alibaba.druid.spring.boot.autoconfigure.DruidDataSourceAutoConfigure; import com.alibaba.druid.spring.boot.autoconfigure.properties.DruidStatProperties; import com.alibaba.druid.util.Utils; import org.springframework.boot.autoconfigure.AutoConfigureAfter; import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; import org.springframework.boot.autoconfigure.condition.ConditionalOnWebApplication; import org.springframework.boot.web.servlet.FilterRegistrationBean; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration;import javax.servlet.*; import java.io.IOException;/*** @author gblfy* @ClassNme RemoveDruidAdConfig* @Description Druid 底部廣告去除* @Date 2019/9/8 8:38* @version1.0*/ @Configuration @ConditionalOnWebApplication @AutoConfigureAfter(DruidDataSourceAutoConfigure.class) @ConditionalOnProperty(name = "spring.datasource.druid.stat-view-servlet.enabled", havingValue = "true", matchIfMissing = true) public class RemoveDruidAdConfig {/*** 方法名: removeDruidAdFilterRegistrationBean* 方法描述: 除去頁(yè)面底部的廣告** @param properties* @return org.springframework.boot.web.servlet.FilterRegistrationBean* @throws*/@Beanpublic FilterRegistrationBean removeDruidAdFilterRegistrationBean(DruidStatProperties properties) {// 獲取web監(jiān)控頁(yè)面的參數(shù)DruidStatProperties.StatViewServlet config = properties.getStatViewServlet();// 提取common.js的配置路徑String pattern = config.getUrlPattern() != null ? config.getUrlPattern() : "/druid/*";String commonJsPattern = pattern.replaceAll("\\*", "js/common.js");final String filePath = "support/http/resources/js/common.js";//創(chuàng)建filter進(jìn)行過(guò)濾Filter filter = new Filter() {@Overridepublic void init(FilterConfig filterConfig) throws ServletException {}@Overridepublic void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {chain.doFilter(request, response);// 重置緩沖區(qū),響應(yīng)頭不會(huì)被重置response.resetBuffer();// 獲取common.jsString text = Utils.readFromResource(filePath);// 正則替換banner, 除去底部的廣告信息text = text.replaceAll("<a.*?banner\"></a><br/>", "");text = text.replaceAll("powered.*?shrek.wang</a>", "");response.getWriter().write(text);}@Overridepublic void destroy() {}};FilterRegistrationBean registrationBean = new FilterRegistrationBean();registrationBean.setFilter(filter);registrationBean.addUrlPatterns(commonJsPattern);return registrationBean;} }四 、啟動(dòng)項(xiàng)目進(jìn)行測(cè)試
再次啟動(dòng)項(xiàng)目,可以看到其底部的廣告信息已經(jīng)沒(méi)有了.
五、原理說(shuō)明
之所以底部有廣告,是因?yàn)槠湟氲膁ruid jar包的common.js中的內(nèi)容
面的這段footer的內(nèi)容, 就是廣告的來(lái)源.
在RemoveDruidAdConfig 配置類(lèi)中就是使用過(guò)濾器過(guò)濾common.js的請(qǐng)求,重新處理后用正則替換相關(guān)的廣告代碼片段.
總結(jié)
以上是生活随笔為你收集整理的SpringBoot项目去除druid监控的底部广告的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 企业实战_19_MyCat初始化ZK并配
- 下一篇: 03_SpringCloud整合Ribb