本文早在我的http://andywuchuanlong.blog.163.com/中早有描述今天稍微修改了一下,供大家参考

一下文章所述,仅代表本人观点,如有异议,可以留言

1、首先去下载urlrewritefilterjar包,目前最高版本为4.0.3

2、新建一个web工程URLWriter(我的工程名字)

3、把jar包拷贝到web-inf/lib下面


4、在web.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>WARN</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>UrlRewriteFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>

5、在web.xml的同一级目录下面,也就是 web-inf下面新建一个urlrewrite.xml文件

文件内容如下:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE urlrewrite PUBLIC "-//tuckey.org//DTD UrlRewrite 3.2//EN"
"http://tuckey.org/res/dtds/urlrewrite3.2.dtd">

<urlrewrite>

<rule>

<!-- 这个是设置重写的规则的,我写的规则表示,浏览器中命名为任意字符.html的请求,
都会被提交给当前应用下的名为任意字符的servlet去处理,参数就是请求的参数,
也就是字母的值。注意:to的值是以/开头的,/表示当前应用。 -->
<from> ^/(.*).html$ </from>
<to> / $1?user=QQ:312037487&amp;pwd=andywuchuanlong@sina.cn </to>
</rule>

<urlrewrite>

rule是url重写规则,from是显示出来的地址,to是映射的实际地址,$1是重写参数,可以为多个,()里是匹配的正则表达式.

6、新建一个servlet UrlWriter.class

response.setContentType("text/html");

PrintWriter out = response.getWriter();

String param1 = request.getParameter("user");

String param2 = request.getParameter("pwd");

out.print(param1+"<br/>"+param2);

7、启动tomcat

8、浏览器中输入UrlWriter.html

结果是servlet UrlWriter里面是的东西

也就是说UrlWriter.html只是个虚拟的地址而已,当用户请求UrlWriter.html时,实际上是交给了servlet去处理