• tomcat与地址栏图标之研究(多浏览器)


    http://www.chinadmd.com/file/tsa6ezc3wraczo6uose3ciei_1.html

    ——————————————————————————————————————————————————————————————

    最近在做一个 java 网络应用程序,服务器是 tomcat。在默认情况下,当用户访 问该网络应用时,地址栏图标显示为 tomcat 猫。我希望把它换成自己的图标, 于是研究了一下。在研究过程中,我发现网上的资料大都语焉不详,于是把自己 的研究结果分享出来。本文的测试环境为: tomcat 6.0.20 IE6 SP3 Firefox 3.6.13 搜狗高速浏览器 2.2.0 360 安全浏览器 3.6.1 傲游浏览器 2.5.17 首先说明一下,我这个程序的用户一般使用的是基于 IE6 内核的外壳浏览器,比 如搜狗高速浏览器、360 安全浏览器和傲游浏览器等,也有少数的用户使用 Firefox,所以我测试的浏览器主要就是这几款浏览器。至于其它的数得上号的 浏览器,我猜本文提供的方法也能够大体上适用。不过这也仅仅是猜测,如果说 得不对,还请见谅或者指出。 下面分析一下各个浏览器对于地址栏图标的缓存机制。 为什么要分析这个呢?因 为在大多数情况下,如果不清空地址栏图标的缓存,那么即使改变了服务器端设 置的地址栏图标,在浏览器端也不会立刻反映出来,这就给测试带来了困难。而 浏览器们对于地址栏图标的缓存机制又不尽相同,因此有必要逐个加以分析。 IE6 和 Firefox 的缓存机制相对简单,即地址栏图标与其它需要缓存的数据存放 在同一位置,因此一般的清空缓存操作对地址栏图标同样适用。但是,基于 IE 内核的三款浏览器却把地址栏图标与其它需要缓存的数据分开存放, 必须使用手 动的方法进行清除。 搜 狗 高 速 浏 览 器 把 地 址 栏 图 标 缓 存 在 用 户 目 录 下 的 Application Data/SogouExplorer/FavIcon 文件夹中,其中主要起作用的是 FavorIcon.db 这 个文件,此外还有一系列叫做 s*.ico 的文件,这些文件是在“最常访问栏”等 处用到的图标文件。清空搜狗高速浏览器的地址栏图标的缓存较为麻烦,因为 FavorIcon.db 文件似乎必须在搜狗高速浏览器关闭的情况下才能删除,因此推 荐的方法是,在搜狗高速浏览器的“隐私保护”那里把所有缓存数据都删除,然 后关闭搜狗高速浏览器,再把 FavIcon 文件夹中的所有文件都删除(清空缓存数 据后,搜狗高速浏览器的“最常访问栏”等处也被清空了,所以那些 s*.ico 也 就没用了) 然后再打开搜狗高速浏览器, 。 这样就算是清空了地址栏图标的缓存。 360 安 全 浏 览 器 又 是 另 一 种 情 况 。 它 把 地 址 栏 图 标 缓 存 在 用 户 目 录 下 的 Application Data\360se\data\ico 文件夹中, 以“站点名.ico”为名保存起来。 所以只要找到对应的 ico 文件,删除了就可以了。但是有一点需要注意,假如站 点名包含端口信息,比如“127.0.0.1:8080”,那么它的缓存文

    件就会是一个空 文件,而且浏览器也只会在地址栏里显示默认的绿 e 图标。我猜这是 360 安全浏 览器的某种 bug,因为在 Windows 系统下文件名里是不能含有冒号的,所以说不


    定就是这样。而不包含端口信息的站点,也就是端口为默认的 80 的站点,比如 “127.0.0.1”,是不存在这样的问题的。 傲游浏览器把地址栏图标缓存在安装目录的 Favicons 文件夹中,但是文件名是 自动生成的。如果你能找到对应的文件,那么删除了就可以了。如果找不到或懒 得找,那么把 Favicons 文件夹中的所有文件都删除了也就是了。 除了清空浏览器的地址栏图标的缓存以外,还有一种办法可以绕过这个问题,那 就是改变 tomcat 的服务端口然后重启 tomcat。在测试过程中,这个办法可以同 时对付多个浏览器,所以还是比较方便的。只不过由于上面提及的原因,这个办 法不能很好地兼顾 360 安全浏览器。 下面进入正题,如何替换 tomcat 的猫图标。我首先尝试的方法是在应用程序的 web.xml 里加入这么一段: <icon> <small-icon>/images/small.gif</small-icon> <large-icon>/images/large.gif</large-icon> </icon> 其中/images/small.gif 和/images/large.gif 是我制作的两个 gif 文件,大小 分别为 16×16 像素和 32×32 像素。但是这个方法不管用,原因不知道。如有知 道的兄者,还望赐教。 然后我又进行了各种各样的尝试, 发现了两种管用的方法。 这两种方法各有利弊。 方法一, 的配置。 方法一,修改整个 tomcat 的配置。 首先制作一个名为 favicon.ico 的图标文件,然后进入 tomcat 的 webapps 下的 ROOT 目录,把其中的 favicon.ico 替换成自己的。注意以下几点: 1. favicon.ico 应该为 16×16 像素或 32×32 像素,8 位色(256 色)或 24 位 色。 2. 据说 favicon.ico 有大小的限制, 上限为 1.22K[?]。 不过据我观察, 超过 1.22K 也没关系。比如 Firefox 官方网站上的 favicon.ico 大小为 2.49K,我保存下来 放到 tomcat 的 webapps 下的 ROOT 目录里,也能正常显示。 3. 据说需要修改 tomcat 的 conf 下的 web.xml,在其中加入这么一段: <mime-mapping> <extension>ico</extension> <mime-type>image/x-icon</mime-type> </mime-mapping>


    其实这段的主要作用在于当用户通过浏览器请求后缀名为.ico 的资源时, tomcat 告知浏览器该资源的媒体类型,以指导浏览器适当地在显示区域展现该 资源。而对于地址栏的图标数据,即使不特别指定媒体类型,浏览器应该也有能 力处理。 反正据我观察, 加不加这段话对于地址栏图标的显示来说效果是一样的。 4. 据说除了覆盖 favicon.ico 以外,还要把同目录下的 tomcat.svg 也搞掉。不 过据我观察,搞不搞掉它效果是一样的。 使用这个方法后,各个浏览器

    的显示效果如下: @ IE6 只在地址栏显示那个一如既往的 e 图标,但是保存到收藏夹后可以看到效 果。 实际上, 当访问百度之类的网站时, IE6 也不在地址栏那里显示百度的图标, 因此我也不指望能比百度做得更好。 @ Firefox 在地址栏显示更改后的图标。 @ 搜狗高速浏览器在地址栏显示更改后的图标。 @ 360 安全浏览器在地址栏显示更改后的图标。 @ 傲游浏览器在地址栏显示更改后的图标。 方法二,修改应用程序的页面。 方法二,修改应用程序的页面。 在每个显示在顶层窗口的网页里的<head></head>里加入这么一段: <link rel="icon" href="/***/my.ico" type="image/x-icon" /> <link rel="shortcut icon" href="/***/my.ico" type="image/x-icon" /> <link rel="bookmark" href="/***/my.ico" type="image/x-icon" /> 注意以下几点: 1. 有人说 href 必须是绝对路径,其实没必要。相对路径一样 OK。而且文件名 不一定是 favicon.ico,可以自由地命名。而且也不一定是本地路径,任何可用 的路径都可以,比如 http://www.mozilla.com/favicon.ico。 2. 据说 rel="shortcut icon"代表地址栏图标,rel="bookmark"代表收藏夹图 标。不过似乎也不能一概而论,比如对于 Firefox 来说,rel="shortcut icon" 是 代 表 地 址 栏 图 标 没 错 , rel="icon" 却 是 在 收 藏 夹 里 起 作 用 的 那 一 个 , rel="bookmark"不起任何作用。但是对于其它浏览器来说情况又有所不同,所以 比较妥当的做法是把这三个都写上,然后指向同一个文件。 3. 据说需要修改 tomcat 的 web.xml 或者应用程序的 web.xml,在其中加入这么 一段: <mime-mapping> <extension>ico</extension> <mime-type>image/x-icon</mime-type> </mime-mapping>


    不过据我观察,应该也是用不着。 使用这个方法后,各个浏览器的显示效果如下: @ IE6,地址栏显示 e 图标,收藏夹显示更改后的图标。 @ Firefox 在地址栏显示更改后的图标。 @ 搜狗高速浏览器在地址栏显示 tomcat 猫。 @ 360 安全浏览器在地址栏显示 tomcat 猫。 @ 傲游浏览器在地址栏显示更改后的图标。 换一种说法,搜狗高速浏览器和 360 安全浏览器只买方法一的账,其它三款浏览 器既买方法一的账也买方法二的账。如果同时使用方法一和方法二,则方法二的 优先级更高。
    这两种方法各有千秋。我比较喜欢方法一,理由是简单方便,而且测试全数通过。缺点是修 改了整个 tomcat 的配置,影响了其中运行的所有应用程序的地址栏图标。不过如果这些应 用程序本来就应该使用同一地址栏图标的话 (比如某家公司的全部应用程序都使用该公司的 logo 作为图标) ,那就不成为问题。方法二的主要问题在于不被搜狗高速浏览器和 360 安全 浏览器所支持,而且需要改动所有显示在顶层窗口的页面,有些麻烦。不过我觉得方法二代 表了地址栏图标的发展方向, 虽然目前不被搜狗高速浏览器和 360 安全浏览器所支持, 但是 说不定将来就会被支持。而且虽然要改动很多页面是有点麻烦,不过只拷贝几行代码的话, 其实也算不了什么。 况且方法二有一个很大的优点, 就是可以在不影响其它应用程序的情况 下改动 tomcat 中的某个应用程序,这点是方法一所不具备的。

    ——————————————————————————————————
    傲轩游戏网
  • 相关阅读:
    【移动安全基础篇】——14、创建破解代码库
    【移动安全基础篇】——13、Android关键代码快速定位
    【移动安全基础篇】——12、Dalvik虚拟机
    【移动安全基础篇】——11、Android_jni
    【移动安全基础篇】——10、Android源代码修改
    【移动安全基础篇】——09、Android源代码目录结构
    【移动安全高级篇】————7、APK 的自我保护
    【移动安全高级篇】————6、Android DEX安全攻防战
    【移动安全高级篇】————5、Andorid APK反逆向解决方案---梆梆加固原理探寻
    Scene
  • 原文地址:https://www.cnblogs.com/cuizhf/p/2959441.html
Copyright © 2020-2023  润新知