1、下载urlrewrite-2.6.0.jar
2、web.xml
<?xml version="1.0" encoding="UTF-8"?> <web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"> <!-- 开启URLREWRITE监听 --> <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> <dispatcher>REQUEST</dispatcher> <dispatcher>FORWARD</dispatcher> </filter-mapping> <!-- 404错误 --> <error-page> <error-code>404</error-code> <location>/404.jsp</location> </error-page> <!-- 500错误 --> <error-page> <error-code>500</error-code> <location>/500.jsp</location> </error-page> <welcome-file-list> <welcome-file>welcome.jsp</welcome-file> </welcome-file-list> </web-app>
<?xml version="1.0" encoding="utf-8"?> <!DOCTYPE urlrewrite PUBLIC "-//tuckey.org//DTD UrlRewrite 3.2//EN" "\\urlrewrite3.2.dtd"> <urlrewrite> <rule> <note>重写index.jsp成index.html</note> <note>example:/index.html</note> <from>/index.html</from> <to type="forward">/index.jsp</to> </rule> <rule> <note>将view根目录下所有jsp资源重写成/xxx.action</note> <note>example:/index.action</note> <from>/([A-Za-z0-9]+).action</from> <to type="forward">/view/$1.jsp</to> </rule> <rule> <note>forward(转发模式)传参</note> <note>example:/user/param/fancy/8080.do</note> <from>/user/([A-Za-z0-9]+)/([A-Za-z0-9]+)/([A-Za-z0-9]+).do</from> <to type="forward">/view/parameter/$1.jsp?username=$2&password=$3</to> </rule> <rule> <note>redirect(重定向模式)传参,to中写绝对地址</note> <note>example:/admin/param/fancy/8080.do</note> <from>/admin/([A-Za-z0-9]+)/([A-Za-z0-9]+)/([A-Za-z0-9]+).do</from> <to type="redirect">/urlrewrite-maven-example/view/parameter/$1.jsp?username=$2&password=$3</to> </rule> </urlrewrite>
urlrewrite.xml 这个配置文件一定只能放在 WEB-INF 下,放别的地方,无论你在web.xml中怎么配置都是不行的,至少现在是不行的。
所谓重写,就一定会有规则的匹配,这里用到了正则表达式,方便起见,我只用了[A-Za-z0-9]+,简单的解释一下:
A-Z:匹配 A 到 Z 中的任意一个字符,说一句废话,同理可得,
a-z:匹配 a 到 z 中的任意一个字符
0-9:匹配 0 到 9 的任意一个字符
+:至少出现一次,即,一次或一次以上
合起来 [A-Za-z0-9]+ 的意思就是:匹配一个任意的英文字母和数字组合的字符串
<rule>:自定义匹配规则
<note>:注释,解释标签
<from>:定义具体的匹配规则
<to>:匹配成功后的目标地址
<to type="">:type的值有两个,一个是 forward (转发,参数不丢失),一个是 redirect (重定向,地址栏显示的地址就是目标真实地址)
$1:匹配中的第一个正则表达式的字符串的值,$2,$3,$4....也是如此
& :是 & 的实体名,代表的就是 &,这个可以在 w3school 中找到:http://www.w3school.com.cn/tags/html_ref_entities.html
第一个rule:访问 /index.html,实际上是访问了 /index.jsp
第二个rule:访问 /xx.action , 实际上是访问了 view 目录下的 xx.jsp
第三个rule:访问 /user/xx/yy/zz.do , 实际上是访问了 view 目录下的 parameter 目录下的 xx.jsp?username=yy&password=zz
第四个rule:跟第三个其实是一样的,但是由于是重定向模式,所以地址栏就会显示真的是地址
5、welcome.jsp 测试页面
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <title>Urlrewrite Simple Demo</title> </head> <body> <h3>/welcome.jsp</h3> <HR/> <p> <a href="index.html" target="_blank">/index.html</a> </p> <p> <a href="index.action" target="_blank">/index.action</a> </p> <p> <a href="user/param/fancy/8080.do" target="_blank">/user/param/fancy/8080.do</a>(forward[转发模式]) </p> <p> <a href="admin/param/fancy/8080.do" target="_blank">/user/param/fancy/8080.do</a>(redirect[重定向模式]) </p> </body> </html>
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <title>Urlrewrite Simple Demo</title> </head> <body> <h3>/index.jsp</h3> <h1>Hello Urlrewrite</h1> </body> </html>
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <title>Urlrewrite Simple Demo</title> </head> <body> <h3>/view/index.jsp</h3> <h1>Hello Urlrewrite</h1> </body> </html>
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <title>Urlrewrite Simple Demo</title> </head> <body> <h3>/view/parameter/param.jsp</h3> <h1>${param}</h1> </body> </html>
转载 http://www.cnblogs.com/fancyzero/archive/2012/06/10/urlrewrite.html
代码和dtd文件免费下载地址http://download.csdn.net/detail/xuke6677/8087521