appfuse中使用了UrlRewrite.实现了url的重写,这样有什么用处呢?上网搜了一把,大体上有以下好处:
1、满足搜索引擎的要求
某些搜索引擎不能支持动态页面的抓取,大量的信息就不能被潜在用户搜索到。用UrlRewrite技术你可以把
http://server/news.asp?id=111 变成
http://server/news/111.htm 这样他们就会被搜索引擎收录了。google虽然可以抓取动态页面,但是google对动态页面的评分一般低于静态页面。所以,对大量信息发布的网站,把网站地址改变成静态的绝对是值得的。
2、隐藏技术实现,提高网站的移植性
每个页面都挂着鲜明的.asp/.jsp这种开发语言的标记,可以一眼让人看出你的网站使用什么语言做的。而且在改变网站的语言的时候,你需要改动大量的链接。而且,一个页面修改了扩展名,他的pagerank也会随之消失,从头开始。我们可以用UrlRewrite技术隐藏我们的实现细节,这样修改移植都很方便,而且完全不损失pagerank。
3、满足美感的要求
对于追求完美主义的网站设计师,即使是网页的地址也要看起来简洁明快。形如
http://server/news.asp?channel=3&id=111 的网页地址,肯定是上不了完美主义者的法眼的,用UrlRewrite技术,你可以把他变成
http://server/news/3/111.htm 。
在应用中怎样集成它呢?看看appfuse中的实现方式。
首先在web.xml中配置一个过滤器:
1 <
filter
>
2
<
filter
-
name
>
rewriteFilter
</
filter
-
name
>
3
<
filter
-
class
>
org.tuckey.web.filters.urlrewrite.UrlRewriteFilter
</
filter
-
class
>
4
<
init
-
param
>
5
<
param
-
name
>
logLevel
</
param
-
name
>
6
<
param
-
value
>
commons
</
param
-
value
>
7
</
init
-
param
>
8
</
filter
>
1 <
filter
-
mapping
>
2
<
filter
-
name
>
rewriteFilter
</
filter
-
name
>
3
<
url
-
pattern
>
/*</url-pattern>
4 <!--dispatcher>REQUEST</dispatcher>
5 <dispatcher>FORWARD</dispatcher-->
6</filter-mapping>
然后在WEB-INF目录下有一个配置文件urlrewrite.xml内容如下:
1 <?
xml version
=
"
1.0
"
encoding
=
"
utf-8
"
?>
2
<!
DOCTYPE urlrewrite PUBLIC
"
-//tuckey.org//DTD UrlRewrite 3.0//EN
"
3
"
http://tuckey.org/res/dtds/urlrewrite3.0.dtd
"
>
4
5
<!--
https:
//
urlrewrite.dev.java.net/manual/3.0 -->
6
<
urlrewrite
>
7
<
rule
>
8
<
from
>^/
user
/
(.
*
).html$
</
from
>
9
<
to type
=
"
forward
"
>/
editUser.html\
?
username
=
$
1
</
to
>
10
</
rule
>
11
12
<!--
Override
default
validation.js from WebWork
-->
13
<
rule
>
14
<
from
>^/
webwork
/
css_xhtml
/
validation.js$
</
from
>
15
<
to type
=
"
forward
"
>/
template
/
css_xhtml
/
validation.js
</
to
>
16
</
rule
>
17
</
urlrewrite
>