一、Urlrewriter的作用
Urlrewriter的作用主要是重写url路径,以此来隐藏真实的路径,如:http://www.xxxx.com/crm_index.do而真实访问的是http://www.xxxx.com/crm/index.jsp。还有一种就是,在高并发访问的时候,可以更具是否用静态文件来进行路径的重写。
二、Urlrewriter的部署
先看下我的项目结构:
1、下载Urlrewriter的jar包http://pan.baidu.com/s/1c18p6mO,这个版本是4.0.3,也可以去官网下载:http://tuckey.org/urlrewrite/,然后放进WEB-INF/lib目录下。(注意:用build path会出现错误,拷贝进去就好)
2、需要一个配置文件(urlrewrite.xml)放在WEB-INF文件夹下(也可以其它目录,需要在web.xml文件种设置),源码如下:
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE urlrewrite
PUBLIC "-//tuckey.org//DTD UrlRewrite 4.0//EN"
"http://www.tuckey.org/res/dtds/urlrewrite4.0.dtd">
<urlrewrite>
<rule>
<from>/(.*).php</from>
<to>$1.jsp</to>
</rule>
</urlrewrite>
注意:上面的form to是正则表达式的写法
3、创建过滤:
在web.xml中配置如下代码:
<filter>
<filter-name>UrlRewriteFilter</filter-name>
<filter-class>org.tuckey.web.filters.urlrewrite.UrlRewriteFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>UrlRewriteFilter</filter-name>
<url-pattern>/*</url-pattern>
<dispatcher>REQUEST</dispatcher>
<dispatcher>FORWARD</dispatcher>
</filter-mapping>
4、试着运行下:
输入以下地址:http://localhost:8080/UrlRewrite/index.php
实际访问:http://localhost:8080/UrlRewrite/index.jsp
三、详细解析:
1、关于这个jar包
需要导入包,这个包可以下载,如果是maven项目也可也可以通过,以下配置导入这个包:
<dependency>
<groupId>org.tuckey</groupId>
<artifactId>urlrewritefilter</artifactId>
<version>4.0.3</version>
</dependency>
2、进行访问拦截配置:
一般情况下入下配置就可以了
<filter>
<filter-name>UrlRewriteFilter</filter-name>
<filter-class>org.tuckey.web.filters.urlrewrite.UrlRewriteFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>UrlRewriteFilter</filter-name>
<url-pattern>/*</url-pattern>
<dispatcher>REQUEST</dispatcher>
<dispatcher>FORWARD</dispatcher>
</filter-mapping>
这个有几个这样的参数,配置参数方式如下:
<init-param>
<param-name>confReloadCheckInterval</param-name>
<param-value>60</param-value>
</init-param>
(1) confReloadCheckInterval:设置多少秒,配置文件将会进行核对和加载(0表示每次检查,-1表示没有重新加载检查)。
(2) confPath:设置配置文件的路径(默认在WEB-INF文件夹下)
(3) logLevel:设置日志级别,设置值可以是:TRACE, DEBUG, INFO (default), WARN, ERROR, FATAL
(4) statusPath:是否禁用状态页,设置值可以是:true,false
(5) statusEnabledOnHosts:这是那些主机可以查看状态页,默认localhost,local,127.0.0.1
(6) modRewriteConf: 默认false。是否使用mod_rewrite风格配置文件。
(7) modRewriteConfText:负载mod_rewrite风格配置的value,note这个参数,这个参数设置将意味着所有其他配置参数被忽略。
(8) allowConfSwapViaHttp:是否可以通过网络访问这个配置文件,默认为false
3、配置文件的设置:
有点多,不一一解释,可去官网查阅。
基本配置方式:
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE urlrewrite
PUBLIC "-//tuckey.org//DTD UrlRewrite 4.0//EN"
"http://www.tuckey.org/res/dtds/urlrewrite4.0.dtd">
<urlrewrite>
<rule>
<from>^/some/olddir/(.*)$</from>
<to type="redirect">/very/newdir/$1</to>
</rule>
<rule match-type="wildcard">
<from>/blog/archive/**</from>
<to type="redirect">/roller/history/$1</to>
</rule>
</urlrewrite>
注意:match-type 这个属性是设置匹配的方式,默认:regex
详细可看官方文档:http://cdn.rawgit.com/paultuckey/urlrewritefilter/master/src/doc/manual/4.0/index.html