spring mvc 中自定义404页面在IE中无法显示favicon.ico问题的解决方法。

本文介绍了一种使用ModelAndView解决404错误页面无法正常跳转的方法,并特别针对IE浏览器进行了优化。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

此处用的是jsp,控制层用的是ModelAndView,

具体解决方法如下:

 @RequestMapping(value = "notfound", method = RequestMethod.GET)
    public ModelAndView notfound() {

        ModelAndView modelAndView = new ModelAndView();
        String viewName = "error";

        modelAndView.setViewName(viewName);
        String useragent = servletRequest.getHeader("user-agent");
        if (StringUtils.isNotBlank(useragent)) {
            boolean isMobile = CheckMobile.check(useragent);
            if (isMobile) {
                viewName = "errormobile";
                modelAndView.setViewName(viewName);
            }
        }
        //解决favicon.ico在IE下无法显示的问题。
        modelAndView.setStatus(HttpStatus.PERMANENT_REDIRECT);
        return modelAndView;
    }

web.xml

  <error-page>
    <error-code>404</error-code>
    <location>/notfound</location>
  </error-page>

因为有手机和PC2套不同的模板,所以要进行判断,为什么要加modelAndView.setStatus(HttpStatus.PERMANENT_REDIRECT);这句话呢?因为ModelAndView如果遇到了404等错误页面,是不会跳转的,就算你在JS里面加了window.location.href也不行,我猜测这是model的一个状态问题,因为本身你到的就是一个404,不可达的页面,它怎么跳?唯一的办法就是设置modelaAndView的状态,模拟重定向跳转。只要把ModalAndView设置成跳转,就OK了。此问题只存在于IE,其他浏览器不受影响。另外别忘了在link里面加上通用的ico标签哦。

### 配置 Spring Boot 应用程序中的 favicon.ico 为了在 Spring Boot 中配置并使用自定义 `favicon.ico` 文件,在项目的静态资源目录下放置该文件是一个常见做法。具体来说,通常将此文件放在 `/src/main/resources/static/` 路径下[^1]。 对于希望启用默认行为来加载位于上述位置的图标的情况,可以在 `application.properties` 或者 `application.yml` 文件中加入如下设置: ```properties spring.mvc.favicon.enabled=true spring.mvc.favicon.location=/static/favicon.ico ``` 这确保了当客户端请求站点根URL时能够获取到指定路径下的 `favicon.ico` 图像文件。 然而,有时可能出于某些原因想要禁用自动查找功能,则可以调整属性为: ```properties spring.mvc.favicon.enabled=false ``` 这样做之后就需要手动实现控制器逻辑来响应针对图标的HTTP GET 请求[^3]。 遇到诸如404错误、图标未更新等问题时,尤其是在集成了 Spring Security 和 Thymeleaf 的场景下,可能是由于安全策略阻止了对静态资源的访问所致。此时应检查 Web 安全配置类 (`WebSecurityConfigurerAdapter`) 是否已允许对外公开这些资源。另外还需确认浏览器缓存是否影响到了新图标的展示效果;清除浏览数据后再试一次往往能解决问题[^4]。 最后一步就是构建并启动应用程序,验证一切正常工作。只要按照指示正确设置了 `favicon.ico` 文件的位置以及相应的路径映射,那么通过浏览器访问应用首页就应该能看到预期的小图标显示出来[^2]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值