博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
urlrewrite使用小结
阅读量:6503 次
发布时间:2019-06-24

本文共 2431 字,大约阅读时间需要 8 分钟。

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

使用urlrewrite的步骤如下:

首页,访问其官网:,我下载的是最新的目前还处于Beta版的urlrewritefilter-4.0.3,下载后将其中的urlrewrite-4.0.3.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>  

 

其实,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.       
  6. <outbound-rule>  
  7.     <from>/zh_CN/NewsInfo.do\?method=view&amp;id=([0-9]+)$</from>  
  8.     <to>/zh_CN/NewsInfo/NEWS_$1</to>  
  9. </outbound-rule>  

 

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

 

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

 

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

 

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

 

当用户点击此链接后urlrewrite便用通过rule的配置重跳转到真正的访问地址,这样便很好的隐藏了真实地址
这其中有点是需要注意的,引用官网中的一段话:
Using the example above JSP's with the code
<a href="<%= response.encodeURL("/world.jsp?country=usa&amp;city=nyc") %>">nyc</a>
will output
<a href="/world/usa/nyc">nyc</a>

Or JSTL
<a href="<c:url value="/world.jsp?country=${country}&amp;city=${city}" />">nyc</a>
will output
<a href="/world/usa/nyc">nyc</a>

Note, If you are using JSTL (ie, <c:url) this will work also.
意思就是说需要转化的链接不能直接写在a标签中,需要写在c:url或其他服务器需要解析的变量中,这样才能对其重新显示

转载于:https://www.cnblogs.com/java-rocky/archive/2013/01/25/2876771.html

你可能感兴趣的文章
京东校招java笔试题_试卷: 京东2019校招笔试Java开发工程师笔试题(1-)
查看>>
java怎么删除创建的类_一个java创建,删除,构建Jenkins等功能的JenkinsUtil工具类...
查看>>
编程java梦想数_JAVA基础总结
查看>>
java初始化重排_JAVA并发环境下指令重排带来的问题
查看>>
java connection 共享_【java項目實戰】ThreadLocal封裝Connection,實現同一線程共享資源...
查看>>
java中锁的等级_深入浅出!对象级别锁 vs 类级别锁 – Java
查看>>
php 5.4 memcache,linux下php5.4添加memcache扩展
查看>>
php session作用,session的作用是什么
查看>>
php 两行数据合并,PHP如何实现统计数据合并
查看>>
java国外研究综述,国内外研究现状_毕业论文
查看>>
php执行事务,thinkPHP框架中执行事务的方法示例
查看>>
php 两个值比较大小写,php比较两个字符串(大小写敏感)的函数strcmp()
查看>>
java3d获取模型在xoy平面的投影,将3D世界点投影到新视图图像平面
查看>>
php 修改图片src,jq修改src图片地址 .attr is not a function
查看>>
sudo php 无法打开,从PHP / Apache,exec()或system()程序作为root用户:“ sudo:无法打开审核系统:权限被拒绝”...
查看>>
Microsoft dotnetConf 2015 一些整理
查看>>
在Android Studio中使用shareSDK进行社会化分享(图文教程)
查看>>
转载:APP的上线和推广——线上推广渠道
查看>>
******IT公司面试题汇总+优秀技术博客汇总
查看>>
Java线
查看>>