Urlrewrite 

地址重写,用户得到的全部都是经过处理后的URL地址

过滤用户的所有请求,符合规则的便对其进行重定向

rule结点中from默认使用的正则表达式来匹配,若用户访问服务器时的URL符合规则就跳转至to结点中的配置,默认是forward跳转。

<rule>:自定义匹配规则

<note>:注释,解释标签

<from>:显示的地址,要用()把要匹配的内容括起来才能获取,不然java会抛出异常

<to type="">:匹配成功后的实际地址,可以为null,相当于未调用chain.doFilter,type有两个值,forward (转发,参数不丢失),redirect (重定向,地址栏显示的地址就是目标真实地址)

注意:

$1:匹配中的第一个正则表达式的字符串的值,$2,$3,$4....也是如此

如果要用&符号,需要用&amp;代替

urlrewrite.xml是utf-8,note标签内的中文也一定是要utf-8.

UrlRewriteFilter 最好是配置在web.xml的前面filter上,不然有可能对有些url转变失去作用.

urlrewrite有仅只有一个,rule至少一个.

正则表达式^指定字符的串开始,$为指定结束,对于中文参数要使用(.*)作为参数转义.

 “+”匹配1或多个正好在它之前的那个字符

如果使用<outbound-rule>要记得代码中的url都是编码过的;

contex 是非常重要的, 如果有一个应用的context 是”/myapp”,并且你的请求是”/myapp/somefolder/somepage.jsp”,
容器交给UrlRewriteFilter
的url会是”/somefolder/somepage.jsp”, 这可能难以理解,但是在你的<rule>和<condition>中不要包含context path, 它是容器负责处理的.

应用通配符,通配符匹配引擎可以替代正则表达式, 在<condition>和<rule>中设置match-type是wildcard用以开启支持通配符.(或者设置default-match-type)

例如:

/big/url/*匹配/big/url/abc.html但是不匹配/big/url/abc/dir/或/big/url/abc/

/big/url/**匹配/big/url/abc.html,/big/url/abc/dir/和/big/url/abc/

也可以和正则的替换一样, 每个*代表一个参数,在<set>和<to>中用$N的方式使用

优点

(1)提高安全性 :有效的避免一些参数名、ID等完全暴露在用户面前,若用户输入不符合规则会返回404或错误页面

(2)美化URL :去除如*.do之类的后缀名、长参数串等

使用步骤:

1、下载urlrewritefilter-4.0.3.jar,加入到工程lib目录下。

2、配置web.xml

<!-- 加到任何servlet映射的顶部,不然可能有些路径不能被过滤到-->
<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>
  <dispatcher>REQUEST</dispatcher>
  <dispatcher>FORWARD</dispatcher>
  <dispatcher>INCLUDE</dispatcher>
</filter-mapping>

3 、配置urlrewrite.xml

添加urlrewrite.xml 到工程的WEB-INF目录下。
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE urlrewrite PUBLIC "-//tuckey.org//DTD UrlRewrite 3.1//EN" "http://tuckey.org/res/dtds/urlrewrite3.1.dtd">
<urlrewrite>
  <rule>
<note>
The rule means that requests to /test/status/ will be redirected to /rewrite-status the url will be rewritten.
</note>
<from>^/vweb/view/index\-([0-9]+)$</from>
<to>/vweb/view/index.shtml?_vwebid=$1&amp;type=show</to>
</rule>
</urlrewrite>
示例:
<rule>
<from>^/([a-z]+)/([a-z]+)/([a-z]+)$</from>
<to>/$1.do?method=$2&amp;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. seo优化urlrewrite伪静态技术

    1.下载urlrewrite-3.2.0.jar 2.在WEB-INF下增加urlrewrite.xml <?xml version="1.0" encoding=" ...

  2. springMVC学习之url重写:urlrewrite with tuckey UrlRewriteFilter

    在开发网站时地址栏的一些信息是我们不希望让客户看到,所以在开发时候就会涉及到url重写的问题. 下面介绍一种常用的url地址重写的方法. 1.利用maven下载相关jar文件,pom文件配置如下: & ...

  3. 【转】伪静态URLRewrite学习笔记

    UrlRewrite: UrlRewrite就是我们通常说的地址重写,用户得到的全部都是经过处理后的URL地址,类似于Apache的mod_rewrite.将我们的动态网页地址转化为静态的地址,如ht ...

  4. UrlRewrite(URL重写)--ASP.NET中的实现

    概述 今天看了下URL重写的实现,主要看的是MS 的URL Rewrite. URL重写的优点有:更友好的URL,支持老版本的URL URL重写的缺点有:最主要的缺点是性能低下,因为如果要支持无后缀的 ...

  5. http://www.iis.net/downloads/microsoft/url-rewrite

    http://www.iis.net/downloads/microsoft/url-rewrite iis  url重写模块.官方下载

  6. 伪静态URLRewrite学习笔记

    UrlRewrite: UrlRewrite就是我们通常说的地址重写,用户得到的全部都是经过处理后的URL地址,类似于Apache的mod_rewrite.将我们的动态网页地址转化为静态的地址,如ht ...

  7. paip.java UrlRewrite 的原理and实现 htaccess正则表达式转换

    paip.java UrlRewrite 的原理and实现 htaccess正则表达式转换 #---KEYWORD #-正则表达式 正则表达式 表示 非指定字符串开头的正则 排除指定目录.. 作者 老 ...

  8. paip.基于urlrewrite的反向代理以及内容改写

    paip.基于urlrewrite的反向代理以及内容改写 ---------反向代理 RewriteCond %{REQUEST_URI} !=/process.php RewriteRule  ^( ...

  9. urlrewrite伪静态 及多参数传递-附正则表达式语法 [轉]

    首先 加载 urlrewrite包 配置web.xml [list] [*] <error-page> [*]             <error-code>404</ ...

  10. ASP.NET伪静态 UrlRewrite(Url重写) 实现和配置

    核心提示:大家一定经常在网络上看到很多网站的地址后缀都是用XX.HTML或者XX.ASPX等类似静态文件的标示来操作的吧,那么大家有怀疑过他真的是一个一个的静态生成的文件么,静态文件的生成的优缺有好有 ...

随机推荐

  1. react项目中登陆注册验证码的倒计时,页面刷新不会重置

    目前很多的网站和app在做登陆注册时都会用到手机验证码,为了防止验证码轰炸,也就是随意的点击验证码,一般我们需要对获取验证码进行一些限制,最常用到的是在规定时间内不得重复发送. 实现倒计时很简单,可以 ...

  2. ROS开源小车TurtleBot3详情介绍(Burger)

    您为什么要选择ROS开源智能小车 ROS(RobotOperating System,机器人操作系统)是目前世界上更主流更多人使用的的机器人开源操作系统.它可以提供操作系统应有的服务,包括硬件抽象,底 ...

  3. 如何创建 mapbox 精灵图

    前面文章介绍了如何在本地发布OSM数据,并使用 maputnik 自定义 mapbox 格式的地图样式. 在使用 maputnik 配图时,如果想要使用自己的图片作为地图符号,就需要制作精灵图. ma ...

  4. UnRAID_6.8.2_配置_设置

    UnRAID_6.8.2_配置_设置 转载注明来源: 本文链接 来自osnosn的博客,写于 2020-10-05. 参考: UnRAID download Getting_Started Offic ...

  5. 风炫安全WEB安全学习第二十节课 反射型XSS讲解

    风炫安全WEB安全学习第二十节课 反射型XSS讲解 反射性xss演示 原理讲解 如果一个应用程序使用动态页面向用户显示错误消息,就会造成一种常见的XSS漏洞.通常,该页面会使用一个包含消息文本的参数, ...

  6. NOIP初赛篇——05计算机语言

    程序 ​ 程序就是一系列的操作步骤,计算机程序就是由人实现规定的计算机完成某项工作的操作步骤.每一步骤的具体内容能够理解的指令来描述,这些指令告诉计算机"做什么"和"怎么 ...

  7. SIGGRAPH Asia 2020 电脑动画节(CAF)获奖短片出炉!

    电脑动画节(CAF) 是SIGGRAPH Asia盛会最受瞩目的环节之一.2020年12月15日,SIGGRAPH Asia 2020虚拟线上会议正式宣布了电脑动画节的三部获奖短片:最佳作品奖< ...

  8. 关于使用th:text获取不到值

    今天在使用thymeleaf模板引擎整合SpringBoot时,对于从controller层传递过来的参数"message",无法获取. 控制层代码如下: @PostMapping ...

  9. .NET 云原生架构师训练营(模块二 基础巩固 敏捷开发)--学习笔记

    2.7.1 敏捷开发 敏捷介绍 敏捷的起源 敏捷软件开发宣言 敏捷开发十二原则 生命周期对比 敏捷开发的特点 敏捷的发展 敏捷的核心 敏捷的起源 2001年,17个老头子在一起一边滑雪,一边讨论工作, ...

  10. mysql: Character set 'utf8mb4' is not a compiled character set and is not specified in the '/usr/share/mysql/charsets/Index.xml' file

    mysql: Character set 'utf8mb4' is not a compiled character set and is not specified in the '/usr/sha ...