UrlRewrite:
UrlRewrite就是我们通常说的地址重写,用户得到的全部都是经过处理后的URL地址,类似于Apache的mod_rewrite。将我们的动态网页地址转化为静态的地址,如html、shtml,还可以隐藏网页的真正路径,
比如:有时候需要将xxx.com/news/ type1/001.jsp 转化成显示路径为xxx.com/news_type1_001.html
有点如下:
一:提高安全性,屏蔽内部的url结构.
二:美化URL
三:更有利于搜索引擎的收入,通过对URL的一些优化,可以使搜索引擎更好的识别与收录网站的信息.
下载地址: 官网下载: 实例展示
实例应用版本urlrewritefilter-4.0.3. Tomcat服务器端口定制为80
1. 创建web项目,增加 urlrewritefilter-4.0.3.jar 到 WEB-INF/lib
2. 在WEB-INF/web.xml 增加urlrewritefilter过滤器 (near the top above any servlet mappings)
UrlRewriteFilter org.tuckey.web.filters.urlrewrite.UrlRewriteFilter confReloadCheckInterval 60 confPath /WEB-INF/urlrewrite.xml logLevel DEBUG UrlRewriteFilter /* REQUEST FORWARD index.jsp
如果觉得/*这样的通配,并不符合我的预期,我只想对部分路径进行URL的重写,/*可能会造成我想象不到的或者是许微不足道的性能浪费.我把它改成了我需要的:
UrlRewriteFilter /member/* UrlRewriteFilter /article/*
更多请参考:
3. 因为上面我们通过confPath定义了配置文件的路径,其实该默认位置就是在/WEB-INF/urlrewrite.xml,为了更能说明问题,所以显示指定下
/page/(.*).html /index.jsp?page=$1 ^/user/([a-z]+)/([0-9]+)$ /index.jsp?nickname=$1&age=$2
此时我们就可以通过url进行模拟了.
注意:
1.urlrewrite.xml是utf-8.所以如果你要在rule上加note标签为中文的话,也一定是要utf-8.
2.UrlRewriteFilter 最好是配置在web.xml的前面filter上,不然有可能对有些url转变失去作用.
3.urlrewrite属性:有仅只有一个,rule属性::至少一个.
4.在写rule的时,如果有多个参数时,中间的连接符号&应该是&
5.rule是url重写规则,from是显示出来的地址,to是映射的实际地址,$1是重写参数,它的值与from中的正则表达式是一一对应,可以为多个,()里是匹配的正则表达式, 在正则表达式^指定字符的串开始,$为指定结束
6.对于中文参数要使用(.*)作为参数转义.
4.重写url演示
实例1
/page/(.*).html /index.jsp?currentPage=$1
index.jsp中的内容
<% String current = request.getParameter("currentPage"); %> 当前页码<%=current %>
执行效果如下:
实例2
Rule规则
World Rule ^/user/([a-z]+)/([0-9]+)$ /index.jsp?nickname=$1&age=$2
index.jsp中的内容
<% String username = request.getParameter("nickname"); int age = Integer.parseInt(request.getParameter("age")); %> 用户名: <%=username %> 年龄: <%=age %>
执行效果如下:
所以,当我们在url中输入”http://localhost/urlrewrite/user/dennisit/23”时,实际执行的就是”http://localhost/urlrewrite/index.jsp?nickname=dennisit&age=23”
实例3
同理rule规则如下时
^/page/(.*)$ /page/$1.action
这样我访问的:urlrewrite/page/test
则跳转到:
实例4 Rule规则
^/([a-z]+)/([a-z]+)/([a-z]+)$ /$1.do?method=$2&uuid=$3
在index.jsp中添加如下链接:
当点击该链接,
地址栏中显示url是:
其实际执行路径是:
转至:【http://www.cnblogs.com/dennisit/p/3177108.html】