urlrewrite实现JSP的URL重写

本文介绍如何使用urlrewrite实现JSP的URL重写,包括安装配置步骤及规则设置,旨在提高网站的安全性和美观度,并利于搜索引擎优化。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

urlrewrite实现JSP的URL重写。 这里讲解的是 3.2版本 。现在网上最新版本是4.0

转载来源:http://blog.youkuaiyun.com/yjflinchong/article/details/8472344

我的资源库:http://www.itlib.tk/

urlrewrite顾名思义,就是对URL进行重写,用户得到的全部都是经过处理后的URL地址,这样做我觉得好处有三:
一:提高安全性,可以有效的避免一些参数名、ID等完全暴露在用户面前,如果用户随便乱输的话,不符合规则的话直接会返回个404或错误页面,这比直接返回500或一大堆服务器错误信息要好的多
二:美化URL,去除了那些比如*.do之类的后缀名、长长的参数串等,可以自己组织精简更能反映访问模块内容的URL
三:更有利于搜索引擎的收入,通过对URL的一些优化,可以使搜索引擎更好的识别与收录网站的信息

使用urlrewrite的步骤如下:

首页,访问其官网:http://tuckey.org/urlrewrite/,我下载的是最新的目前还处于Beta版的urlrewritefilter-3.2.0,下载后将其中的urlrewrite-3.2.0.jar扔到需使用此功能项目的lib目录中去
其次,在web.xml中加入如下配置:

  1. <filter>
  2. <filter-name>UrlRewriteFilter</filter-name>
  3. <filter-class>org.tuckey.web.filters.urlrewrite.UrlRewriteFilter</filter-class>
  4. <init-param>
  5. <param-name>logLevel</param-name>
  6. <param-value>WARN</param-value>
  7. </init-param>
  8. </filter>
  9. <filter-mapping>
  10. <filter-name>UrlRewriteFilter</filter-name>
  11. <url-pattern>/*</url-pattern>
  12. <dispatcher>REQUEST</dispatcher>
  13. <dispatcher>FORWARD</dispatcher>
  14. </filter-mapping>
<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>

其实,urlrewrite其实就是个过虑器,它将会过虑用户的所有请求,符合规则的便对其进行重定向,具体的配置参数的使用方法见官方文档:http://urlrewritefilter.googlecode.com/svn/trunk/src/doc/manual/3.2/index.html
配置好web.xml后将下载的urlrewritefilter-3.2.0中的urlrewrite.xml配置文件放在WEB-INF目录下,这样在使用urlrewritefilter时它便自动到该目录下读取相关的配置了,我配置了个简单的,代码如下:

  1. <rule>
  2. <from>/zh_CN/NewsInfo/NEWS_([0-9]+)</from>
  3. <to>/zh_CN/NewsInfo/view.do?method=view&amp;id=$1</to>
  4. </rule>
  5. <outbound-rule>
  6. <from>/zh_CN/NewsInfo.do/?method=view&amp;id=([0-9]+)$</from>
  7. <to>/zh_CN/NewsInfo/NEWS_$1</to>
  8. </outbound-rule>
<rule> <from>/zh_CN/NewsInfo/NEWS_([0-9]+)</from> <to>/zh_CN/NewsInfo/view.do?method=view&amp;id=$1</to> </rule> <outbound-rule> <from>/zh_CN/NewsInfo.do/?method=view&amp;id=([0-9]+)$</from> <to>/zh_CN/NewsInfo/NEWS_$1</to> </outbound-rule>

rule结点中form的规则默认使用的是正则表达式来匹配的,当用户访问服务器时的URL会与该配置相比较,如果符合规则就会按照下面to结点中的配置对其进行跳转,其默认是forward跳转,具体配置可见官网文档。
outbound-rule结点是服务器解析后的页面URL对外表现的形式,配置与上面的大体相同,如我一新闻链接代码在JSP中书写的形式如下:

  1. <c:urlvar="news_url"value="/zh_CN/Press/view.do?method=view&id=${cur.id}&msg=Press"/>
  2. <li>·<ahref="${news_url}"mce_href="${news_url}"target="_blank"title="${cur.titleSub}">${cur.title}</a></li>
<c:url var="news_url" value="/zh_CN/Press/view.do?method=view&id=${cur.id}&msg=Press" /> <li>· <a href="${news_url}" mce_href="${news_url}" target="_blank" title="${cur.titleSub}">${cur.title}</a></li>

经服务器解析后,最终显示在页面中的将变成:

  1. <li>·<ahref="/项目名/zh_CN/NewsInfo/NEWS_9999"mce_href="项目名/zh_CN/NewsInfo/NEWS_9999"target="_blank"title="${cur.titleSub}">新闻标题</a></li>
<li>· <a href="/项目名/zh_CN/NewsInfo/NEWS_9999" mce_href="项目名/zh_CN/NewsInfo/NEWS_9999" target="_blank" title="${cur.titleSub}">新闻标题</a></li>


urlrewrite实现JSP的URL重写

转载来源: http://blog.youkuaiyun.com/yjflinchong/article/details/8472344

当用户点击此链接后urlrewrite便用通过rule的配置重跳转到真正的访问地址,这样便很好的隐藏了真实地址
需要转化的链接不能直接写在a标签中,需要写在c:url或其他服务器需要解析的变量中,这样才能对其重新显示

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值