最新消息:

javaweb程序的URL重写工具urlrewritefilter

java开发技术 admin 4701浏览 0评论

什么是url重写?
URL 重写是拦截客户端传入 Web 请求URL并自动将其定向到到规则指定的 URL 的过程。比如浏览器发来请求 http://blog.mocoder.com/hello.html ,服务器自动将这个请求中定向为http://blog.mocoder.com/test.do?method=hello。

url重写有哪些好处呢?

1. 搜索引擎比较喜欢.html,.htm的(与.jsp,.php,.aspx,.cff相比),因为.html, .htm是静态的,更容易让引擎了解你网页的内容。而动态网页的内容是根据用户,来输出不同的内容,不容易让引擎吸收具体HTML内容。
2. 如果不用URL Rewriting将拓展名隐藏或改成.html,那么假如这个网站要换个技术或把动态页面换成静态,则需要寻找所有含有拓展名的连接,把连接所含URL进行拓展名修改(如从JSP换到PHP技术,则要寻找所有含有.jsp的页面,并把所有含.jsp的URL改成.php,费时费力)。URL Rewriting正好避免了这点,因为好的URL是能做到“不变应完变”的。
3. 防止某些黑客恶意攻击。有些大网站采用不同的技术开发不同功能的页面。而把拓展名改掉,让黑客无法确认此页面用的技术是什么,从而就无从下手。
4. 方便访问者使用。访问者不是程序员,他们不明白什么是.jsp,.php.aspx,他们只知道URL。所以统一把拓展名拿掉,或者同意把拓展名换为html,htm,有利于用户的使用。用户可以知道现在在你网站的位置,如何通过输入URL到某一页面。

 

url重写在php开发的web程序中应用十分广泛,当然,大多数的javaweb框架如springMVC、struts都有指定访问url的配置,但是不够灵活。

今天为大家介绍一款用户javaweb程序的rul重写工具:urlrewritefilter,同样支持正则表达式的哦!!

1、下载urlrewrite,官方下载地址:http://tuckey.org/urlrewrite/dist/urlrewritefilter-2.6.zip
2、修改web.xml ,加入以下过滤器(一定要放在最前面):
<filter>
<filter-name>UrlRewriteFilter</filter-name>
<filter-class>
org.tuckey.web.filters.urlrewrite.UrlRewriteFilter
</filter-class>
</filter>
<filter-mapping>
<filter-name>UrlRewriteFilter</filter-name>
<url-pattern>/*</url-pattern>

</filter-mapping>
3.修改urlrewrite配置.xml

<?xml version=”1.0″ encoding=”utf-8″?>
<!DOCTYPE urlrewrite PUBLIC “-//tuckey.org//DTD UrlRewrite 2.6//EN”
“http://tuckey.org/res/dtds/urlrewrite2.6.dtd”>

<!–
Configuration file for UrlRewriteFilter
http://tuckey.org/urlrewrite/
–>
<urlrewrite>
<rule>
<from>^/([a-z]+)$</from>
<to type= “forward” >/world.jsp?id=$1</to>
</rule>
<rule>
<from>^/world/(.*)$</from>
<to>/world.jsp?tid=$1</to>
</rule>
<rule>
<from>^/(.*).html$</from>
<to>/test1/$1.jsp</to>
</rule>

<outbound-rule>
<note>
The outbound-rule specifies that when response.encodeURL is called (if you are using JSTL c:url)
the url /rewrite-status will be rewritten to /test/status/.

The above rule and this outbound-rule means that end users should never see the
url /rewrite-status only /test/status/ both in thier location bar and in hyperlinks
in your pages.
</note>
<from>/rewrite-status</from>
<to>/test/status/</to>
</outbound-rule>
</urlrewrite>

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

5、新建world页面:

好了,在项目中新建world.jsp,启动tomcat,输入
http://localhost:8080/mysite/world/1
mysite是你的项目名
实际上访问的是http://localhost:8080/mysite/world.jsp?tid=1
这样就简单的实现了伪静态的效果

转载请注明:心阳之家 » javaweb程序的URL重写工具urlrewritefilter

发表我的评论
取消评论
表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址