[urlrewrite]使用urlrewrite进行地址自动重定向
一般通过url访问网站,url的格式都是
http://xxx.xxx.com?param=p1¶m=p2
这是最传统的访问方式,但是,对于一些具有特殊要求的系统,其所有的页面的地址并不一定是这样子的格式,或者是类似于struts风格的.do的方式,比如
http://xxx.xxx.com/aa.do
其中的aa并不是action映射名称,而是其中一个默认key的参数,比如在一些个人主页类型的系统中,如
http://xxx.xxx.com/quzishen --> 其实这样做背后我们真正希望的url是
http://xxxx.xxx.com/blog/personal.do?name=quzishen
这样访问系统,我们希望也能够被系统自动解析并正处处理,该如何做呢?
其中的一种方式,就是进行url的重定向,这里我们介绍使用urlrewirete来实现。
---------------------------------------------------------------------------------------
1、首先,下载urlrewrite-2.6.0.jar放到WEB-INF/lib下。下载地址 http://download.csdn.net/source/2568398
2、你需要在web.xml中进行配置urlrewrite的filter,这样请求才能被urlrewrite过滤并处理,配置方式跟普通filter无区别
<filter> <filter-name>UrlRewriteFilter</filter-name> <filter-class>org.tuckey.web.filters.urlrewrite.UrlRewriteFilter</filter-class> <init-param> <param-name>confReloadCheckInterval</param-name> <param-value>500000</param-value> </init-param> <init-param> <param-name>logLevel</param-name> <param-value>sysout:ERROR</param-value> </init-param> </filter> <filter-mapping> <filter-name>UrlRewriteFilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping>
其中,filter的参数如下(摘自文档),如果你只是想快速应用到系统中,可以暂时滤过下面内容。有空再好好研究即可。
1. confReloadCheckInterval:
配置文件重加载间隔. 0表示随时加载, -1表示不重加载, 默认-1
2. confPath:
配置文件路径. 是相对context的路径, 默认/WEB-INF/urlrewrite.xml
3. logLevel:
设置日志级别, 可以是: TRACE, DEBUG, INFO(默认), WARN, ERROR, FATAL, log4j, commons, slf4j, sysout:{level}(比如 sysout:DEBUG), 如果你使用普通的日志级别有一定困难, 可以调为: sysout:DEBUG(表明是使用控制台输出的调试级别)
4. statusPath:
设置改变状态路径, 不能和已经安装的应用冲突(注意, 默认是/rewrite-status), 注意, 必须以/开始
5. statusEnabled:
设置status是否开启, 期望得到的值是true, false, 默认true
6. statusEnabledOnHosts:
设置允许status的主机, *可以被用作通配符, 默认是”localhost, local, 127.0.0.1”
7. modRewriteConf:
设置rewrite模式, 默认是false, 使用mod-rewrite(可以参照apache服务器的mod_rewrite相关资料)方式的配置文件, 如果设置为true并且confPath没有设置则配置文件路径将会被默认为/WEB-INF/.htaccess
8. modRewriteConfText:
从这些参数的值加从载mod_rewrite样式的配置, 设置这些参数则其他所有的参数都会被忽略. 比如:
<init-param>
<param-name>modRewriteConfText</param-name>
<param-value>
RewriteRule ^/~([^/]+)/?(.*) /u/$1/$2 [R]
RewriteRule ^/([uge])/([^/]+)$ /$1/$2/ [R]
</param-value>
</init-param>
9. allowConfSwapViaHttp:
设置是否允许通过HTTP方式交互设置参数, 比如, 通过调用/rewrite-status/?conf=WEB-INF/urlrewrite2.xml
3、在WEB-INF下新建urlrewrite的配置文件 urlrewrite.xml (默认的名称,如果更改,需要跟上述配置中classpath进行匹配)
<?xml version="1.0" encoding="utf-8"?> <!DOCTYPE urlrewrite PUBLIC "-//tuckey.org//DTD UrlRewrite 2.6//EN" "http://tuckey.org/res/dtds/urlrewrite2.6.dtd"> <urlrewrite> <rule> <from>/blog/(.*)</from> <to>/blog/personal.do?name=$1</to> </rule> </urlrewrite>
具体项目的配置,可以参见文章 http://blog.csdn.net/lgg201/archive/2010/02/27/5329364.aspx
至此配置已经全部结束,但是你可能想测试一下,自己的配置是否有问题,能否像测试java代码一样来通过单元测试完成这个过程?当然可以!
4、测试配置
编写单元测试类
public class UrlRewriteConfigurationTest extends TestCase{ private static final Logger log = Logger.getLogger(UrlRewriteConfigurationTest.class); private static final String REWRITE_CONF = "urlrewrite.xml"; private Conf conf; private UrlRewriter rewriter ; protected void setUp() { InputStream istream = getClass().getResourceAsStream("/"+REWRITE_CONF); conf = new Conf(istream, REWRITE_CONF); rewriter = new UrlRewriter(conf); } private String rewireteUrl(String fromUrl)throws Exception{ MockRequest request = new MockRequest(fromUrl); MockResponse response = new MockResponse(); RewrittenUrl rewrittenUrl = rewriter.processRequest(request, response); if (rewrittenUrl==null) return "failed"; String rewrittenUrlString = rewrittenUrl.getTarget(); return rewrittenUrlString; } public void testRewrite() throws Exception { String fromUrl="http://xxx.xxx.com/quzishen"; rewireteUrl(fromUrl); }
通过单元测试,可以快速知道自己配置是否会有问题。至此全部完成。
17:24:12
[urlrewrite]使用urlrewrite进行地址自动重定向相关推荐
- 通过禁止js来禁止网站自动重定向
下载地址 禁止网站自动重定向,上一篇无用.这一篇有用. 那就是禁止网站运行js.利用上面的插件.真是巴适.管用的.
- HttpClient 禁用自动重定向
目录 Intro Redirection HttpClient AutoRedirect Practice More References Intro 前段时间写了一个小工具来帮助我们简化一个每个月一 ...
- JavaScript实现http地址自动检测并添加URL链接
一.天生我材必有用 给http字符自动添加URL链接是比较常见的一项功能.举两个我最近常用到的自动检测http://地址并添加链接的例子吧,首先是QQ邮箱,在使用QQ邮箱时,如果输入了URL地址(ht ...
- tomcat配置重定向_在Tomcat上配置SSL以及从HTTP到HTTPS的设置自动重定向的步骤
tomcat配置重定向 Secured Socket Layer (SSL) is the cryptography protocol to provide message security over ...
- 智能水表自动抄表协议cjt188远传协议,支持地址自动分配检查,灵活好用、Mbus通讯测试工具是一款水表等设备的测试工具
智能水表自动抄表协议cjt188远传协议,支持地址自动分配检查,灵活好用.Mbus通讯测试工具是一款水表等设备的测试工具,真实有效可靠,可读取写入表计地址,发送标准188读计量数据.控制码等命令,可设 ...
- IPv6地址自动配置
默认情况下,配置项autoconf都是1,即开启地址自动配置. $ cat /proc/sys/net/ipv6/conf/all/autoconf 1 $ cat /proc/sys/net/ipv ...
- 配置无状态IPv6地址自动配置基础实验
实验描述 两台路由器设备相连,其中AR2的接口GE0/0/0能够自动获取IPv6地址,从而实现设备之间通信. 实验思路 为了能让AR2的接口GE0/0/0自动获取IPv6地址,该AR2的接口GE0/0 ...
- ipv6笔记无状态地址自动配置及状态
当配置一个新的ipv6地址时,会进入到tentative 阶段,会发送以自己IP地址为目的地址的请求报文,一秒后,如果没响应,就没有冲突,就可以用. 生命周期是针对动态获取的IP的,但是tentati ...
- 自动更改mac地址 ip计算机名的软件,根据MAC地址自动更改计算机名IP的批处理
根据MAC地址自动更改计算机名IP的批处理 根据MAC地址自动更改计算机名IP的批处理 一些错误信息的解决方法: 1.C:\>wmic path win32_pnpsigneddriver 节点 ...
最新文章
- 拉格朗日乘数法的原理,我用10幅图把它讲清楚了
- c语言extern关键字详解
- Node.js 官方文档中文版
- C/C++宏的使用总结
- 2021 年 1 月程序员薪资出炉,持续上涨!你过平均线了吗?
- ElasticSearch 未授权访问记录(端口:9200)
- 启动瑞星杀毒时提示"应用程序正常初始化(0xc00000ba)失败
- Linq to xml:检索
- pyspark 数据写入hive_美团是如何应用Spark处理大数据的?
- 查看ftp服务器里的文件,查看ftp服务器所有文件
- ajax async false好么,求教大神Ajax中使用async:false会导致ie假死如何解决?
- 明源云客微信抢房技巧_明源演示 - 微信抢房_软件抢房_网上选房_手机抢房_代抢房 - 爱抢房...
- 【C/C++】黑盒测试
- 成考本科计算机找工作有用吗,成人本科学历找工作有用吗 就业困难吗
- Json数据的对比工具,对比库(含js在线对比工具,.net 的jsondiffer包)
- Android实现视频播放的3种实现方式
- 个人物联网(目前用到了树莓派、PMS7003攀藤g7传感器、DHT11温湿度传感器)
- TensorFlow下用自己的数据训练Fater-RCNN
- 首次超越人类!“读图会意”这件事,AI比你眼睛更毒辣 | 达摩院
- CentOS6怎样开启MySQL远程访问