一般通过url访问网站,url的格式都是

http://xxx.xxx.com?param=p1&param=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进行地址自动重定向相关推荐

  1. 通过禁止js来禁止网站自动重定向

    下载地址 禁止网站自动重定向,上一篇无用.这一篇有用. 那就是禁止网站运行js.利用上面的插件.真是巴适.管用的.

  2. HttpClient 禁用自动重定向

    目录 Intro Redirection HttpClient AutoRedirect Practice More References Intro 前段时间写了一个小工具来帮助我们简化一个每个月一 ...

  3. JavaScript实现http地址自动检测并添加URL链接

    一.天生我材必有用 给http字符自动添加URL链接是比较常见的一项功能.举两个我最近常用到的自动检测http://地址并添加链接的例子吧,首先是QQ邮箱,在使用QQ邮箱时,如果输入了URL地址(ht ...

  4. tomcat配置重定向_在Tomcat上配置SSL以及从HTTP到HTTPS的设置自动重定向的步骤

    tomcat配置重定向 Secured Socket Layer (SSL) is the cryptography protocol to provide message security over ...

  5. 智能水表自动抄表协议cjt188远传协议,支持地址自动分配检查,灵活好用、Mbus通讯测试工具是一款水表等设备的测试工具

    智能水表自动抄表协议cjt188远传协议,支持地址自动分配检查,灵活好用.Mbus通讯测试工具是一款水表等设备的测试工具,真实有效可靠,可读取写入表计地址,发送标准188读计量数据.控制码等命令,可设 ...

  6. IPv6地址自动配置

    默认情况下,配置项autoconf都是1,即开启地址自动配置. $ cat /proc/sys/net/ipv6/conf/all/autoconf 1 $ cat /proc/sys/net/ipv ...

  7. 配置无状态IPv6地址自动配置基础实验

    实验描述 两台路由器设备相连,其中AR2的接口GE0/0/0能够自动获取IPv6地址,从而实现设备之间通信. 实验思路 为了能让AR2的接口GE0/0/0自动获取IPv6地址,该AR2的接口GE0/0 ...

  8. ipv6笔记无状态地址自动配置及状态

    当配置一个新的ipv6地址时,会进入到tentative 阶段,会发送以自己IP地址为目的地址的请求报文,一秒后,如果没响应,就没有冲突,就可以用. 生命周期是针对动态获取的IP的,但是tentati ...

  9. 自动更改mac地址 ip计算机名的软件,根据MAC地址自动更改计算机名IP的批处理

    根据MAC地址自动更改计算机名IP的批处理 根据MAC地址自动更改计算机名IP的批处理 一些错误信息的解决方法: 1.C:\>wmic path win32_pnpsigneddriver 节点 ...

最新文章

  1. 拉格朗日乘数法的原理,我用10幅图把它讲清楚了
  2. c语言extern关键字详解
  3. Node.js 官方文档中文版
  4. C/C++宏的使用总结
  5. 2021 年 1 月程序员薪资出炉,持续上涨!你过平均线了吗?
  6. ElasticSearch 未授权访问记录(端口:9200)
  7. 启动瑞星杀毒时提示"应用程序正常初始化(0xc00000ba)失败
  8. Linq to xml:检索
  9. pyspark 数据写入hive_美团是如何应用Spark处理大数据的?
  10. 查看ftp服务器里的文件,查看ftp服务器所有文件
  11. ajax async false好么,求教大神Ajax中使用async:false会导致ie假死如何解决?
  12. 明源云客微信抢房技巧_明源演示 - 微信抢房_软件抢房_网上选房_手机抢房_代抢房 - 爱抢房...
  13. 【C/C++】黑盒测试
  14. 成考本科计算机找工作有用吗,成人本科学历找工作有用吗 就业困难吗
  15. Json数据的对比工具,对比库(含js在线对比工具,.net 的jsondiffer包)
  16. Android实现视频播放的3种实现方式
  17. 个人物联网(目前用到了树莓派、PMS7003攀藤g7传感器、DHT11温湿度传感器)
  18. TensorFlow下用自己的数据训练Fater-RCNN
  19. 首次超越人类!“读图会意”这件事,AI比你眼睛更毒辣 | 达摩院
  20. CentOS6怎样开启MySQL远程访问

热门文章

  1. ”出身985,工作996,劝退35“:37岁迟来的醒悟,扎心了!
  2. MySql实现联合查询
  3. tomcat9设置编码
  4. modbusTcp 从站和主站
  5. 常见档案数据存储载体介绍及特性比较
  6. 计算机算法优劣的主要标准,算法的评价指标有哪些 ?
  7. Windows安装系列:SVN Server服务
  8. 成都编程python培训
  9. 如何快速入门Comsol?
  10. turnserver (coturn + redis) 配置ICE server 临时用户密码【实践】