需要一个urlrewritefilter的包,这个包是个开源的项目。
他的作用就是让我们使用的其典型应用就把动态URL静态化,便于搜索引擎爬虫抓取你的动态网页。
隐藏技术实现,提高网站的移植性
具体使用:
1-首先我们要有一个jar包叫urlrewrite-3.0.4.jar
2-然后我们要在我们的web.xml文件中配置下这个包
xml 代码
-
<filter>
-
<filter-name>UrlRewriteFilter</filter-name>
-
<filter-class>org.tuckey.web.filters.urlrewrite.UrlRewriteFilter</filter-class>
-
<init-param>
-
<param-name>logLevel</param-name>
-
<param-value>DEBUG</param-value>
-
</init-param>
-
</filter>
-
<filter-mapping>
-
<filter-name>UrlRewriteFilter</filter-name>
-
<url-pattern>/*</url-pattern>
-
</filter-mapping>
以上的这个就是我们在配置我们的过滤器。这样我们呢的每一个连接都会由这个类来完成URL的重写了。
但是具体怎么样的重写就有另一个文件来配置了。
所以我们是需要自己创建一个urlrewrite.xml的文件了,在这个文件中我们写我们想重写的url
xml 代码
-
<?xml version="1.0" encoding="utf-8"?>
-
<!DOCTYPE urlrewrite PUBLIC "-//tuckey.org//DTD UrlRewrite 3.0//EN"
-
"http://tuckey.org/res/dtds/urlrewrite3.0.dtd">
-
<urlrewrite>
-
<rule>
-
<from>index.html</from>
-
<to >/index.jsp</to>
-
</rule>
-
<rule>
-
<from>aptech/(\d*).html</from>
-
<to >abc.jsp?name=$1</to>
-
</rule>
-
<rule>
-
<from>aptech/(\d*)/(\d*).html</from>
-
<to >abc.jsp?name=$1&sex=$2</to>
-
</rule>
-
</urlrewrite>
红色的部分叫做URL重写规则。
也就是说具体怎么样的重写我们的URL是由我们的这个规则来定义的。
比如我的第一规则rule就是说。我在页面上的一个url显示的是index.html,
而实际上他会重新的定位到index.jsp上面去
……………………
比如我的第二规则rule就是说。我在页面上的一个url显示的是aptech/(\d*).html
而实际上他是在定位到了abc.jsp?name=$1上面的
这里的$1就标示是第一个正则表达式的值
而实际上他会重新的定位到index.jsp上面去
在这里我们要看些正则表达式参考
+ :规定前导字符必须再元字符前面出现一次或多次
* :规定前导字符必须在元字符前面出现0次或连续多次
? :规定前导字符必须在元字符前面出现0次或1次
\s :用于匹配单个空格符,包括TAB键和换行符
\S :用于匹配除单个空格符以外的所有字符
\d :用于匹配0-9的数字
\D :匹配任何的非数字,等价于[^0-9]
\w :用于匹配字符,数字,下划线
\W :用于匹配所有与w不匹配的字符
. :用于除换行符以外的所有字符
模式:
可以精确指定模式在匹配对象中出现的频率
{n} :这里的n是一个正整数.匹配前面的N个字符
{n,} :这里的n是一个正整数,匹配前面的至少n个字符
{n,m} :这里的n和m都是正整数.匹配至少n个最多m个前面的字符
定位符:
^ :规定匹配模式必须出现在目标字符串的开头
$ :规定匹配模式必须出现在目标字符串的结尾
\b :规定匹配模式必须出现在目标字符串的开头或者结尾的2个边界之一
\B :规定匹配模式必须出现在目标字符串的开头和结尾2个边界之内
中括号表达式:
若要创建匹配字符组的一个列表,在方括号内放置一个或者多个单个字符.普通字符在中括号内表示其本身
[a-z][A-Z][0-9]
运算符:
|,(),(?:),(?=),[]
否定符:
[^]:规定目标对象中不能存在模式中所规定的字符串
运算顺序:
从左到右
空字符串 (&$+)