java/jsp使用伪静态的好处在于,可以让用户访问系统时像访问一般的静态网页一般,地址栏不会出现很多奇怪的参数,在用户体验上会更加的出色。
构建一个伪静态框架也就是简简单单的3步:1)加入jar包、2)在web.xml文件中加上伪静态的过滤器和映射机制、3)在web.xml同目录下创建一个urlrewrite.xml文件,在文件中编写伪静态规则。那么我觉得,最重要的一步就是在urlrewrite.xml文件加下面编写合适的,优质的规则。下面看看编写规则到底需要注意哪些地方?
一个基本的规则代码片段如下:
<url>
<from>^/xxx.html</from>
<to>/xxx.jsp</to>
</url>
其中from里面的url是展现给用户的伪静态页面访问地址,而to里面的Url是伪静态url所对应的真实系统页面跳转的地址。
下面是几种常见的规则:
1,单页面规则写法:(记得不要把项目名写到里面去了!)
<rule>
<from>^/index.html</from>
<to>/index.jsp</to>
</rule>
2,带一个参的URL规则写法
把:showNews.jsp?id=参数 伪成:shownews_参数.html
<rule>
<from>^/shownews_(.[0-9]*).html</from>
<to>/showNews.jsp?id=$1</to>
</rule>
()里面是正则表达式,自己去找找这方面的知识,美元符号$1的意思是匹配第一个正则表达式
3,带两个参和多个参的URL规则写法
把showNews.jsp?id=参1&type=参2伪成news-参1-参2.html
<rule>
<from>^/news-(.[0-9]*)-(.[0-9]*).html</from>
<to>/showNews.jsp?id=$1&type=$2</to>
</rule>
注意一点:用“&”来代替”&“,多个参的url规则基本类似,依葫芦画瓢,应该能写出来!哦,还有一点,那就是jsp页面上的url的写法,href=”shownews_<%=news.getNewsID() %>.html”,如果前面加项目名的话,就再多加个”/”,JSP用urlrewrite实现伪静态就这么些步骤!
补充:
比如我们实际的访问地址是:http://yousite.com/entity.htm ?category=user&page=2.而我们想把它重写为http://yousite.com/entity/uesr/page_2.html。这样看起来比我们实际的要好看的多。我们就应该这样的写:
<rule>
<from>^/(\w+)/(\w+)/page_(\d+)\.html$</from>
<to type="forward">/$1.htm?category=$2&page=$3</to>
</rule>
简单的介绍一下常用的正规表示式:
代码
说明
.
匹配除换行符以外的任意字符
\w
匹配字母或数字或下划线或汉字
\s
匹配任意的空白符
\d
匹配数字
\b
匹配单词的开始或结束
^
匹配字符串的开始
$
匹配字符串的结束
常用的&要用 &来表示。$1,$2代表与你配置正规表达式/(\w+)/(\w+)/相对应的参数。<to type="forward">默认的是 type="forward".
另一个常用的规则就是连接外部的网站。就要用到。<to type="redirect">
<rule>
<from>^/rss/yahoo\.html$</from>
<to type="redirect"> http://add.my.yahoo.com/rss? url=http://feed.feedsky.com/MySiteFeed
</to>
</rule>