1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677 |
- package org.example;
- 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;
- /**
- * Druid广告配置
- *
- * @author zzp
- */
- @Configuration
- @ConditionalOnWebApplication
- @AutoConfigureAfter(DruidDataSourceAutoConfigure.class)
- @ConditionalOnProperty(
- name = "spring.datasource.druid.stat-view-servlet.enabled",
- havingValue = "true",
- matchIfMissing = true)
- public class DruidAdConfig {
- /**
- * 去除监控页面底部广告
- *
- * @param properties
- * @return org.springframework.boot.web.servlet.FilterRegistrationBean
- */
- @Bean
- public FilterRegistrationBean removeDruidAdFilterRegistrationBean(
- DruidStatProperties properties) {
- // 获取web监控页面的参数
- 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";
- // 创建filter进行过滤
- Filter filter =
- new Filter() {
- @Override
- public void init(FilterConfig filterConfig) throws ServletException {}
- @Override
- public void doFilter(
- ServletRequest request, ServletResponse response, FilterChain chain)
- throws IOException, ServletException {
- chain.doFilter(request, response);
- // 重置缓冲区,响应头不会被重置
- response.resetBuffer();
- // 获取common.js
- String text = Utils.readFromResource(filePath);
- // 正则替换banner, 除去底部的广告信息
- text = text.replaceAll("<a.*?banner\"></a><br/>", "");
- text = text.replaceAll("powered.*?shrek.wang</a>", "");
- response.getWriter().write(text);
- }
- @Override
- public void destroy() {}
- };
- FilterRegistrationBean registrationBean = new FilterRegistrationBean();
- registrationBean.setFilter(filter);
- registrationBean.addUrlPatterns(commonJsPattern);
- return registrationBean;
- }
- }
|