UrlRewrite概述

UrlRewrite就是我们通常说的地址重写,用户得到的全部都是经过处理后的URL地址,类似于Apache的mod_rewrite。将我们的动态网页地址转化为静态的地址,如html、shtml,还可以隐藏网页的真正路径。

比如:有时候需要将xxx.com/news/ type1/001.jsp 转化成显示路径为xxx.com/news_type1_001.html


优点:

一:提高安全性,屏蔽内部的url结构.
二:美化URL
三:更有利于搜索引擎的收入,通过对URL的一些优化,可以使搜索引擎更好的识别与收录网站的信息.

使用步骤

【第一步】下载jar包

在【http://tuckey.org/urlrewrite/#download】下载最新的jar文件,解压得到 【urlrewritefilter-4.0.3.jar】 和 【urlrewrite.xml】。

如果使用的是Maven管理项目,在pox.xml文件中加入如下代码,则Maven将自动下载需要的jar包。

<dependency><groupId>org.tuckey</groupId><artifactId>urlrewritefilter</artifactId><version>4.0.3</version>
</dependency>

发布该文章时,最新版本为 4.0.3。

【第二步】  创建web项目,增加 urlrewritefilter-4.0.3.jar 到 WEB-INF/lib。

(如是使用Maven管理项目,则省略该步骤)


【第三步】在WEB-INF/web.xml 增加urlrewritefilter过滤器。

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"><!-- 加到任何servlet映射的顶部,不然可能有些路径不能被过滤到http://urlrewritefilter.googlecode.com/svn/trunk/src/doc/manual/3.2/index.html--><filter><filter-name>UrlRewriteFilter</filter-name><filter-class>org.tuckey.web.filters.urlrewrite.UrlRewriteFilter</filter-class><!-- 设备文件重加载间隔 (0默示随时加载, -1默示不重加载, 默认-1) --><init-param><param-name>confReloadCheckInterval</param-name><param-value>60</param-value></init-param><!-- 自定义配置文件的路径,是相对context的路径,(默认位置 /WEB-INF/urlrewrite.xml) --><init-param><param-name>confPath</param-name><param-value>/WEB-INF/urlrewrite.xml</param-value></init-param><!-- 设置日志级别(将被记录到日志中)可以为: TRACE, DEBUG, INFO (default), WARN, ERROR, FATAL, log4j, commons, slf4j,比如 sysout:DEBUG(设置到控制台调试输出级别) (默认级别 WARN) --><init-param><param-name>logLevel</param-name><param-value>DEBUG</param-value></init-param></filter><filter-mapping><filter-name>UrlRewriteFilter</filter-name><url-pattern>/*</url-pattern><dispatcher>REQUEST</dispatcher><dispatcher>FORWARD</dispatcher></filter-mapping><welcome-file-list><welcome-file>index.jsp</welcome-file></welcome-file-list>
</web-app>如果觉得/*这样的通配,并不符合我的预期,我只想对部分路径进行URL的重写,/*可能会造成我想象不到的或者是许微不足道的性能浪费.我把它改成了我需要的:<filter-mapping><filter-name>UrlRewriteFilter</filter-name><url-pattern>/member/*</url-pattern></filter-mapping><filter-mapping><filter-name>UrlRewriteFilter</filter-name><url-pattern>/article/*</url-pattern></filter-mapping>

【第四步】urlrewrite.xml配置

因为上面我们通过confPath定义了配置文件的路径,其实该默认位置就是在/WEB-INF/urlrewrite.xml,为了更能说明问题,所以显示指定下。

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE urlrewritePUBLIC "-//tuckey.org//DTD UrlRewrite 4.0//EN""http://www.tuckey.org/res/dtds/urlrewrite4.0.dtd"><urlrewrite><rule><from>/page/(.*).html</from>  <to>/index.jsp?page=$1</to></rule><rule><from>^/user/([a-z]+)/([0-9]+)$</from><to>/index.jsp?nickname=$1&age=$2</to></rule>
</urlrewrite>

此时我们就可以通过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.对于中文参数要使用(.*)作为参数转义.

示例


实例_1

urlrewrite.xml 文件配置内容:

<rule>    <from>/page/(.*).html</from>      <to>/index.jsp?currentPage=$1</to>
</rule>

index.jsp中的内容:

<body><%String current = request.getParameter("currentPage"); %>当前页码
<%=current %>
</body>

执行效果如下:

实例_2

Rule规则:

<rule><name>World Rule</name><from>/user/([a-z]+)/([0-9]+)$</from><to>/index.jsp?nickname=$1&age=$2</to>
</rule>

index.jsp中的内容:

<body><%String username = request.getParameter("nickname");int age = Integer.parseInt(request.getParameter("age"));%>           用户名: <%=username %> 年龄: <%=age %> <br>
</body>

执行效果如下:
当我们在url中输入”http://localhost/urlrewrite/user/dennisit/23”时

实际执行的就是”http://localhost/urlrewrite/index.jsp?nickname=dennisit&age=23”

实例_3

同理rule规则如下时

<rule><from>/page/(.*)$</from><to type="redirect">/page/$1.action</to>
</rule>

这样我访问的:http://localhost/urlrewrite/page/test
则跳转到:    http://localhost/urlrewrite/page/test.action

实例4
Rule规则:

    <rule><from>/([a-z]+)/([a-z]+)/([a-z]+)$</from><to>/$1.do?method=$2&uuid=$3</to></rule>

在index.jsp中添加如下链接:

<a href="process/show/index">跳转</a>

当点击该链接,
地址栏中显示url是:http://localhost/urlrewrite/process/show/index,
其实际执行路径是:http://localhost/urlrewrite/process.do?method=show&uuid=index

UrlRewrite的使用相关推荐

  1. 虚拟主机上用Asp.net实现Urlrewrite

    在网上看到,很多朋友在asp.net中做urlrewrite,用的是HttpHandle+Server.Transfer的方法.其实这种方法是错误的.第一,HttpHandle是实现不了urlrewr ...

  2. urlrewrite使用小结

    urlrewrite顾名思义,就是对URL进行重写,用户得到的全部都是经过处理后的URL地址,这样做我觉得好处有三: 一:提高安全性,可以有效的避免一些参数名.ID等完全暴露在用户面前,如果用户随便乱 ...

  3. 秋色园QBlog技术原理解析:UrlRewrite之无后缀URL原理(三)

    文章回顾: 1: 秋色园QBlog技术原理解析:开篇:整体认识(一) --介绍整体文件夹和文件的作用 2: 秋色园QBlog技术原理解析:认识整站处理流程(二) --介绍秋色园业务处理流程 本节,将从 ...

  4. asp.net UrlRewrite 技术的实现

    首先在以下地址: download.microsoft.com/download/0/4/6/0463611e-a3f9-490d-a08c-877a83b797cf/MSDNURLRewriting ...

  5. urlrewrite实现之HTTP 运行库支持

    看了这一部分,不过好象我还是写不出自己的UrlRewrite的模块程序,不过可以借用下<<在 ASP.NET 中执行 URL 重写>>的示例代码.对HttpHandler和Ht ...

  6. java怎么来用urlrewrite伪静态化和urlrewrite的配置

    1.首先去官网下载urlrewrite的包(urlrewrite-3.2.0.jar),加入到项目中: 2.在web.xml中加入以下配置: <filter> <filter-nam ...

  7. jsp+urlrewrite实现html分页简单粗暴实现

    今天去检查一同事写的一分页实现,看了有点郁闷,都说了要换成html实现方便搜索引擎收录,他还是用的js,真是晕.还得帮他解决 好吧.言归正传,我在他的基础上粗暴的修改了下,达到了基本的效果,带数字分页 ...

  8. [转]URLRewrite隐藏.aspx后缀名的应用(转载+延伸)

    本文转自:http://www.cnblogs.com/showker/archive/2010/01/11/1644062.html 前言:为什么转载这篇文章?因为它有思考有实践.最近因为业务的需要 ...

  9. JSP URL重写-urlrewrite

    http://blog.csdn.net/mr_tank_/article/details/11892965 URL重写的目的不言而喻,首先引入urlrewrite-4.0.0.jar[或者其他版本] ...

  10. Apache URLRewrite 原理及配置实现

    看一下网站上的一些 URL.您是否发现一些类似于 http://yoursite.com/info/dispEmployeeInfo. ... 99&type=summary 的 URL?或者 ...

最新文章

  1. 免费GPU哪家强?谷歌Kaggle vs. Colab
  2. ES6中的promise、async、await用法详解
  3. mysql dba系统学习(5)二进制日志binlog之一
  4. 个人博客作业_week2
  5. 查看oracle自动优化,使用索引查询更快,优化器为何不能自动识别
  6. leetcode 140. 单词拆分 II(记忆化)
  7. Mac安装masscan【亲测有用】
  8. python generator长度_Python 高级特性之:生成器(generator)和迭代器(Iterator)
  9. vue通过链接显示服务器上的图片_图片网站该如何做SEO优化?详细讲解图片优化技巧...
  10. echarts java动态数据_[ASP.net教程]ECharts Java 动态加载数据,echartsjava
  11. CoffeeScript、TypeScript 、 JavaScript 之间
  12. 【转】string.Format对C#字符串格式化
  13. 贪心 学员 高阶机器学习 魔鬼·训练营
  14. Sublime Text清除历史记录
  15. html刮刮乐百分比,jQuery+html5实现彩票刮刮乐效果
  16. 腾讯游戏安全高级工程师胡和君:定制化对抗——游戏反外挂的安全实践
  17. Java代码如何运行的?
  18. NoSQL之 Redis配置与优化
  19. Cocos Creator游戏开发教程 学习笔记
  20. 工具篇 之 iTerm 2 用户名修改(基于 iTerm 2 + oh-my-zsh)

热门文章

  1. 单片机原理及应用c语言版课后答案魏鸿磊,单片机原理及应用
  2. 罗永浩直播带货卖了1.1亿,更高级的自我认知【附直播卖货商业计划书PPT】
  3. 如何用U盘安装Ubuntu操作系统
  4. 【GDOI模拟】屏保
  5. 白帽飞客从入门到放肆
  6. 在Microsoft Windows XP中使用NetMeeting
  7. ERP学习 之 财务管理
  8. 初学者,学哪一种3d模型设计软件比较好?
  9. 封装一段html,封装html
  10. 大学算法分析与设计复习总结