Spring Boot框架页面标签图标不显示问题排查求助
Spring Boot框架页面标签图标不显示问题排查求助
兄弟,我来帮你捋捋这个页面标签图标(就是浏览器标签上的小图标)不显示的坑!我之前也踩过类似的,先从最容易忽略的点说起:
一、HTML头部必须加引用标签(这步你大概率漏了)
浏览器要识别页面的标签图标,首先得在HTML的<head>标签里明确告诉它图标的位置,这是最基础的前提!你直接把这段代码加到你的HTML头部里:
<link rel="icon" type="image/x-icon" href="/static/img/spring.ico">
注意这里的href路径:Spring Boot里resources/static/是默认的静态资源根目录,所以你写/static/img/spring.ico是没问题的,但如果你的项目配置了server.servlet.context-path(就是项目访问前缀),那路径前面还要加上这个前缀哦。
二、你写的IconConfiguration配置类的几个坑
看你贴的代码还没写完,先给你指出几个容易错的地方:
- 映射路径多了一层
static:Spring Boot默认会把resources/static/下的资源映射到根路径,所以resources/static/img/spring.ico的实际访问路径应该是/img/spring.ico,你配置的/static/img/spring.ico其实是多了一层,会导致找不到资源! - 方法没加
@Bean注解:你写的customIcon()方法如果不加@Bean,Spring容器根本不会识别这个配置Bean,等于白写!必须加上@Bean注解。 - 补全未写完的
favIconRequest()方法:这个方法要返回ResourceHttpRequestHandler实例,正确的写法是这样的:
protected ResourceHttpRequestHandler favIconRequest() { ResourceHttpRequestHandler requestHandler = new ResourceHttpRequestHandler(); ClassPathResource classPathResource = new ClassPathResource("/static/img/"); requestHandler.setLocations(Collections.singletonList(classPathResource)); return requestHandler; }
另外给你个小建议:浏览器默认会自动请求/favicon.ico这个路径,你可以把映射路径改成/favicon.ico,这样就算HTML里没配置,浏览器也能自动找到图标,更省心!
三、最后几个排查小技巧
- 检查图标文件本身:别把PNG图片直接改后缀成ICO,浏览器识别不了!要确保
spring.ico是标准的ICO格式文件,实在不确定的话可以重新生成一个。 - 清浏览器缓存:有时候浏览器会缓存旧的图标,就算你改了代码也不显示,按
Ctrl+F5强制刷新页面试试。 - 用开发者工具查请求:按F12打开浏览器开发者工具,切换到“网络”标签,刷新页面,找
spring.ico的请求,看返回码是200(成功加载)还是404(找不到),404的话就是路径肯定配错了。
备注:内容来源于stack exchange,提问作者user23450337
相关产品推荐
相关产品推荐

