Spring Boot 配置阿里Druid 连接池 ,监控页无法显示

本文介绍了Spring Boot配置阿里Druid连接池时遇到的监控页面无法显示的问题,包括Whitelabel Error Page错误,分析了由于拦截器过滤了特定请求导致的显示不全,以及解决 favicon.ico 请求被拦截导致的监控页面无数据的解决方案。

1、转:http://www.jb51.net/article/111531.htm

     转:https://blog.youkuaiyun.com/king_is_everyone/article/details/53098350

2、BUG:

Whitelabel Error Page

3、分析:

Web中有个拦截校验token的Filter拦截了所有head==null 的请求导致。

4、修改Code:

@Slf4j
@Component
public class UmLoginFilter extends WebStatFilter {    
	@Autowired    
	private SystemProperties systemProperties;    
	/*     
	 * <p>Description: </p>     
	 * @param response     
	 * @param chain     
	 * @throws IOException     
	 * @throws ServletException     
	 */    
	@Override    
	public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) {        
		HttpServletRequest req = (HttpServletRequest) request;        
		HttpServletResponse res = (HttpServletResponse) response;        
		String contextPath = req.getContextPath();        
		String requestURI = req.getRequestURI();        
		// 请求接口地址        
		String ur = requestURI.substring(contextPath.length());        
		try {            
			String header = req.getHeader(CommConstant.AUTHOR);            
			if (isInclude(ur)) {                
				UmLoginFilter.log.warn("      UmLoginFilter =》 登陆  / GET请求 ");                
				chain.doFilter(req, res);                
				return;            
			}            
			// 无Token请求头 情况下:只允许 直接登录            
			if (header == null) {                
				super.doFilter(request, response, chain);            
			} else if (!header.startsWith(CommConstant.REQ_STRING)) {                
				UmLoginFilter.log.warn("-----------uri: {}", ur);                
				res.sendError(HttpServletResponse.SC_UNAUTHORIZED);                
				return;            
			} else {
				/* 此处略*/                
				return;            
			}        
		} catch (Exception e) {            
			UmLoginFilter.log.error("", e);            
			try {                
				res.sendError(HttpServletResponse.SC_UNAUTHORIZED);           
			} catch (IOException e1) {}            
            return;        
        }    
    }    
             
    /**     
     * 是否需要过滤     
     * @param url     
     * @return     
     */    
    private boolean isInclude(String url) {        
    	String[] strings = systemProperties.getIgnoreSources().split(",");       
    	List<String> list = Arrays.asList(strings);        
        for (String str : list) {            
        	if (str.contains(url)) {                
        	return true;            
    		}        
    	}        
    	return false;    
    }
}
/*     
 * 登陆用户 Token 校验     
 * 注册DruidFilter拦截     
 */    
@Bean    
public FilterRegistrationBean loginFilter(UmLoginFilter umLoginFilter) {        
	FilterRegistrationBean registration = new FilterRegistrationBean();        
	registration.setFilter(umLoginFilter);        
	registration.addUrlPatterns("/*");        
	Map<String, String> initParams = new HashMap<>();        
	// 设置忽略请求        
	initParams.put("exclusions", "*.js,*.gif,*.php,*.jpg,*.bmp,*.png,*.css,*.ico,/druid/*");        
	registration.setInitParameters(initParams);        
	registration.setName("umLoginFilter");        
	return registration;    
}

5、运行之后,发现 Druid监控页显示不全,没有数据。。。。。。。。。。。再分析,原来拦截了/favicon.ico

修改:

6、以为没事了,但是。。。。。。。。。。

Mapping [/favicon.ico] to HandlerExecutionChain with handler [ResourceHttpRequestHandler [locations=[ServletContext resource [/], class path resource [META-INF/resources/], class path resource [resources/], class path resource [static/], class path resour

竟然没数据。。。。。

7、又分析了下

转:https://blog.youkuaiyun.com/wdd668/article/details/74643356

问题解决:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值