UrlRewriteFilter 简单的说是用来地址跳转的, 即展现在用户面前的 URL 并不是真正的服务端 URL。 这样有诸多优点, 如可以统一 URL, 从而方便百度谷歌之类的爬虫爬取网站的动态地址。
主要的用途:
(1) 使 URL 对外显示整洁干净, 不管你用什么技术框架(JSP, Servlet, Struts 等), 这样别人也猜不 出你后端用什么技术, 对网络安全来说也有一点点作用。 老项目可以这样把一些前期乱七八糟的 URL 统一下, 对业务代码透明, 超实用
(2) 浏览器检测: 允许根据 HTTP 请求头重定向 URL (如 user-agent 或 charset)
(3) 根据时间重定向: 根据不同时间重定向到其他 URL (如计划停机的场景)
(4) 对于变动内容的支持: 像 CMS 这类新闻资讯类系统, 毫不夸张地说需求一日百遍, 内容经常变动地 方, 重写一下 URL 改一个 xml 配置就行, 简单高效
(5) 使用 Servlet 映射引擎, 其实就是靠 Filter 进行一次过滤转换, 对于Java 工程师来说基本没有学习成 本
举个例子: 只要配置好后, 在 urlrewrite.xml 里面添加 Url 转换节点即可
<rule>
<from>/some/old/123.html</from>
<to type="redirect">/some/new/page.html</to>
</rule>
用正则通配也方便:
精简Url
<rule>
<from>/products/([0-9]+)</from>
<to>/products/index.jsp?product_id=$1</to>
</rule>
如: /products/1234 将转换为 /products/index.jsp?product_id=1234