- 浏览: 315239 次
- 性别:
- 来自: 武汉
-
文章分类
- 全部博客 (185)
- C# (8)
- Java (21)
- Oracle (25)
- mysql (3)
- SQLite (9)
- PHP (0)
- 虚拟机 (6)
- Tomcat (5)
- WebService (9)
- Linux (4)
- Windows (0)
- 域名和空间 (5)
- 测试 (1)
- Javascript (2)
- cache (1)
- 认证 (1)
- 图形报表 (1)
- Eclipse&plugins (1)
- struts2 (2)
- Swing (2)
- maven (1)
- BAT (3)
- JqueryUI (1)
- WEB (1)
- Jquery (1)
- 软件 (1)
- Google (1)
- sitemesh (1)
- Spring (1)
- 字体 (1)
- log4j (1)
- 日志级别 (1)
- 控制中心 (1)
- Log4jManager (1)
- log4j.jsp (1)
最新评论
-
chao_t:
不可以喃,楼主
实时控制log4j日志输出级别-Log4J日志级别控制中心 -
zercle:
感谢分享,还在下载中,一直都用plsql,昨天听别人说toad ...
Toad for Oracle 11绿色版本,加上plsql developerv9.0.1.1613 -
cmland:
赞一个,可以使用
Toad for Oracle 11绿色版本,加上plsql developerv9.0.1.1613 -
mozheshashou:
大哥 关键是那个服务器端怎么写啊 ,求指教啊,
说说JSON和JSONP,也许你会豁然开朗,含jQuery用例 -
bjxyj:
net.sourceforge.jdbclogger.Jdbc ...
p6spy的替代品:jdbc logger
1、简介
UrlRewriteFilter是一个用于改写URL的Web过滤器,类似于Apache的mod_rewrite。适用于任何Web应用服务器(如Resin,Orion,Tomcat等)。其典型应用就把动态URL静态化,便于搜索引擎爬虫抓取你的动态网页。
其主页:http://tuckey.org/urlrewrite/
2、安装
在其主页下载该包文件,把其jar 包放在lib 目录下,在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>
- <dispatcher>REQUEST</dispatcher>
- <dispatcher>FORWARD</dispatcher>
- </filter-mapping>
在 WEB-INF目录下放置urlrewrite.xml 其配置文件。重启应用即可完成安装。
3、参数介绍
(1)web.xml 下的filter 参数设置介绍
- <filter>
- <filter-name>UrlRewriteFilter</filter-name>
- <filter-class>org.tuckey.web.filters.urlrewrite.UrlRewriteFilter</filter-class>
- <!-- set the amount of seconds the conf file will be checked for reload
- can be a valid integer (0 denotes check every time,
- -1 denotes no reload check, default -1)
- 设置定时检查配置文件的时间以供重新加载的时间,该参数值为整型,0为每次都检查,-1为从不检查,默认为-1
- -->
- <init-param>
- <param-name>confReloadCheckInterval</param-name>
- <param-value>60</param-value>
- </init-param>
- <!-- if you need to the conf file path can be changed
- it is specified as a path relative to the root of your context
- (default /WEB-INF/urlrewrite.xml)
- 设置配置文件的路径
- -->
- <init-param>
- <param-name>confPath</param-name>
- <param-value>/WEB-INF/urlrewrite.xml</param-value>
- </init-param>
- <!-- sets up log level (will be logged to context log)
- can be: TRACE, DEBUG, INFO (default), WARN, ERROR, FATAL, log4j, commons, slf4j,
- sysout:{level} (ie, sysout:DEBUG)
- if you are having trouble using normal levels use sysout:DEBUG
- (default WARN)
- 设置日志的等级
- -->
- <init-param>
- <param-name>logLevel</param-name>
- <param-value>DEBUG</param-value>
- </init-param>
- <!-- you can change status path so that it does not
- conflict with your installed apps (note, defaults
- to /rewrite-status) note, must start with /
- 设置状态目录,必须以/开始,默认为/rewrite-status
- -->
- <init-param>
- <param-name>statusPath</param-name>
- <param-value>/status</param-value>
- </init-param>
- <!-- you can disable status page if desired
- can be: true, false (default true)
- 是否允许状态页面,默认为true
- -->
- <init-param>
- <param-name>statusEnabled</param-name>
- <param-value>true</param-value>
- </init-param>
- <!-- you may want to allow more hosts to look at the status page
- statusEnabledOnHosts is a comma delimited list of hosts, * can
- be used as a wildcard (defaults to "localhost, local, 127.0.0.1")
- 设置host 的列表,可以使用通配符,多个host 用逗号隔开
- -->
- <init-param>
- <param-name>statusEnabledOnHosts</param-name>
- <param-value>localhost, dev.*.myco.com, *.uat.mycom.com</param-value>
- </init-param>
- <!-- defaults to false. use mod_rewrite style configuration file (if this is true and confPath
- is not specified confPath will be set to /WEB-INF/.htaccess) -->
- <init-param>
- <param-name>modRewriteConf</param-name>
- <param-value>false</param-value>
- </init-param>
- <!-- load mod_rewrite style configuration from this parameter's value.
- note, Setting this parameter will mean that all other conf parameters are ignored.
- <init-param>
- <param-name>modRewriteConfText</param-name>
- <param-value>
- RewriteRule ^/~([^/]+)/?(.*) /u/$1/$2 [R]
- RewriteRule ^/([uge])/([^/]+)$ /$1/$2/ [R]
- </param-value>
- </init-param>
- -->
- <!-- defaults to false. allow conf file to be set by calling /rewrite-status/?conf=/WEB-INF/urlrewrite2.xml
- designed to be used for testing only
- <init-param>
- <param-name>allowConfSwapViaHttp</param-name>
- <param-value>false</param-value>
- </init-param>
- -->
- </filter>
- <filter-mapping>
- <filter-name>UrlRewriteFilter</filter-name>
- <url-pattern>/*</url-pattern>
- <dispatcher>REQUEST</dispatcher>
- <dispatcher>FORWARD</dispatcher>
- </filter-mapping>
(2)urlrewrite.xml 配置文件参数
- <?xml version="1.0" encoding="utf-8"?>
- <!DOCTYPE urlrewrite
- PUBLIC "-//tuckey.org//DTD UrlRewrite 3.0//EN"
- "http://tuckey.org/res/dtds/urlrewrite3.0.dtd">
- <urlrewrite>
- <rule>
- <from>^/some/olddir/(.*)$</from>
- <to type="redirect">/very/newdir/$1</to>
- </rule>
- <rule match-type="wildcard">
- <from>/blog/archive/**</from>
- <to type="redirect">/roller/history/$1</to>
- </rule>
- </urlrewrite>
配置文件规则:
urlrewirte 配置文件必须有一个urlrewrite根元素和包含至少一个rule元素 。
一个rule元素必须包含一个from 和一个to 元素,也可以包含0个以上的condition 元素和0个以上set 元素。
一个rule元素拦截用户的请求,from元素 是请求的url,to 元素是经过重写后的url 输出,下面是类似java 的重写内部实现。
- Pattern.compile(<from> element);
- pattern.matcher(request url);
- matcher.replaceAll(<to> element);
- if ( <condition> elements match && matcher.find() ) {
- handle <set> elements (if any)
- execute <run> elements (if any)
- perform <to> element (if any)
- }
(4)元素参数说明
<urlrewrite>元素
参数 | 取值 | 描述 |
default-match-type | regex(默认)、wildcard | 所有的rule和condition 元素都会用到该匹配方法 |
decode-using | header,utf8(默认)、null、iso-8859-1 等 | 当url 需要解码时request.getCharacterEncoding() 将被用到,如果为空,则为utf-8 |
use-query-string | false(默认)、true | 语句是否加到url的后面 |
use-context | false(默认)、true | 上下午路径是否要加到url 中 |
<rule>元素
参数 | 取值 | 描述 |
enable | true(默认)、false | 是否应用该rule |
match-type | regex(默认)、wildcard | 应用那种匹配规则 |
实例代码:
- <!--请求输入: /world/usa/nyc 输出为 /world.jsp -->
- <!--应用java 的正则表达式-->
- <rule match-type="regex">
- <from>^/world/([a-z]+)/([a-z]+)$</from>
- <to>/world.jsp</to>
- </rule>
- <!--应用wildcard表达式,该表达式后面会介绍-->
- <rule match-type="wildcard">
- <from>/world/*/*</from>
- <to>/world.jsp</to>
- </rule
<outbound-rule>元素
参数 | 取值 | 描述 |
enabled | true(默认)、false | 是否应该该规则 |
encodefirst | false(默认)、false | 是否在执行<outbound-rule>之前执行encodeURL(),ture为之后,false为之前 |
实例:
- <outbound-rule>
- <from>^/world.jsp?country=([a-z]+)&city=([a-z]+)$</from>
- <to>/world/$1/$2</to>
- </outbound-rule>
- 使用jsp
- <a href="<%= response.encodeURL("/world.jsp?country=usa&city=nyc") %>">nyc</a>
- 将输出
- <a href="/world/usa/nyc">nyc</a>
- 或者使用jstl 标签
- <a href="<c:url value="/world.jsp?country=${country}&city=${city}" />">nyc</a>
- 将输出
- <a href="/world/usa/nyc">nyc</a>
<name>元素
- <!--该规则的名称,可以用在rule元素和outbound-rule 元素中-->
- lt;rule>
- <name>World Rule</name>
- <from>^/world/([a-z]+)/([a-z]+)$</from>
- <to>/world.jsp?country=$1&city=$2</to>
- </rule>
<note>元素
- <!--用来描述该规则,可用在rule 元素和outbound-rule元素中-->
- lt;rule>
- <name>World Rule</name>
- <note>
- Cleanly redirect world requests to JSP,
- a country and city must be specified.
- </note>
- <from>^/world/([a-z]+)/([a-z]+)$</from>
- <to>/world.jsp</to>
- </rule>
<condition>元素
可以用来为rule元素选择条件,所有条件将在规则执行时执行(除非显式的把“next” 设为“or”)
参数 | 取值 | 描述 |
type | header(默认)、method、port、time等 | 设置一些条件的类型 |
name | 可为任何值 | 如果type 取值为header,这个名称将是http header 的值 |
next | and(默认)、or | and:下一个rule 元素和这个rule 必须匹配。or:下一个rule元素或者这个condition 将被匹配 |
operator | equal(默认)、notequal、greater、less等 | ie请求的值和condition 值比较 |
实例:
- <condition name="user-agent" operator="notequal">Mozilla/[1-4]</condition>
- <condition type="user-in-role" operator="notequal">bigboss</condition>
- <condition name="host" operator="notequal">www.example.com</condition>
- <condition type="method" next="or">PROPFIND</condition>
- <condition type="method">PUT</condition>
<from> 元素
rule 或者outbound-rule 必须至有一个from 元素,该值为url 相对于上下文的值
参数 | 取值 | 描述 |
casesensitive | false(默认)、true | 是否要求该值的大小写,false为大小写匹配,true为忽略大小写 |
<to>元素
重写后的输出值
参数 | 取值 | 描述 |
type | forward(默认)、passthrough、redirect等 | url 的跳转问题 |
last | false(默认)、true |
false:余下的rule 元素将被执行,如果该规则符合的话 true:剩下的rule 元素不被执行,如果该规则符合的话 |
encode | false(默认)、true |
response.encodeURL([to]) 是否被调用。 false:将在url重写前调用。 true:将不被调用 |
context |
如果应用服务器配置允许 cross context(跨越上下文),这个属性将被forward(只有forward可以,redirct 或者其他to元素的类型都不可以) 比如在tomcat 的配置文件中设有: <Context docBase="app" path="/app" reloadable="true" crossContext="true"/> |
<to>null</to>表示当这个规则匹配时,将不会有任何的反应。
to元素可以包含后引用(backreferences)和变量
Backreferences
比如: %N
Provides access to the grouped parts (parentheses) of the pattern from the last matched Condition in the current rule. N must be less than 10 and greater than 0 (i.e. %1, %2, %3 etc).
(上面不理解,未翻译)
变量
%{varName}
任何变量的 condition type 可以被用来作为varName。比如:%{port}将被翻译为80 ,%{year}将被翻译成2009等
函数
%{function:params}
函数可以用在set元素或者to元素中。
名称 实例 输入结果replace | ${replace:my cat is a blue cat:cat:dog} |
my dog is a blue dog |
replaceFirst | ${replace:my cat is a blue cat:cat:dog} |
my cat is a blue dog |
escape | ${escape:a b c} |
a+b+c |
unescape | ${unescape:a+b+c} |
a b c |
lower | ${lower:Hello World} |
hello world |
upper | ${upper:hello} |
HELLO |
trim | ${trim: abc def } |
abc def |
set元素
如果rule 匹配的话,允许你设置一些变量。
参数 | 取值 | 描述 |
type | request、session、cookie、charset等 | 设置域的类型 |
name | 任何数 |
在request、session、response-header、cookie,有特殊的作用 |
实例:
- <!--把client 的值设进request中,可通过request.getAttribute("client")来获取-->
- <rule>
- <condition name="user-agent">Mozilla/3\.0 (compatible; AvantGo .*)</from>
- <from>.*</from</span
发表评论
-
Java 实现快递查询 (免费) ,不用输入验证码
2013-05-25 21:54 1691查快递的时候发现了一个http://www.kaidi10 ... -
实时控制log4j日志输出级别-Log4J日志级别控制中心
2013-01-27 01:45 2428动态控制Log4J日志级别,只需要一个JSP页面 ... -
动态加载配置文件类,通用类
2012-07-21 12:13 2234package config; import java. ... -
Java 修复HTML标签
2012-07-03 14:15 1784开源的组件:http://sourceforge.net/pr ... -
正则表达式中的java 转义字符
2012-05-08 22:19 1690java 的转义字符,在正则表达式中应用 ... -
java解析SQL脚本
2012-05-08 22:17 1572/** * 执行初始化SQL脚本 * @param ... -
Protocol Buffer入门——轻松搭建java环境
2012-04-19 21:49 1243Protocol Buffer入门——� ... -
Jersey framework开发RESTFUL应用
2012-04-19 21:46 1433本文演示环境为eclipse + Maven插件 + J ... -
RMI、Hessian、Burlap、Httpinvoker、WebService的比較
2012-04-09 19:56 2902RMI、Hessian、Burlap、Httpin ... -
一个开源的Java快速开发平台
2012-04-10 09:24 1996http://www.j-hi.net/ J-HI是一 ... -
apache common DurationFormatUtils
2012-04-01 10:42 1205日期相減(兩日期相差多少天,月,年): Date d1 ... -
使用Perf4J进行性能分析和监控
2012-04-01 10:20 1019使用Perf4J进行性能分析和监控 作者 ... -
jsoup 是一款 Java 的HTML 解析器
2012-03-21 23:31 1122jsoup 是一款 Java 的HTML 解析器,可 ... -
struts2-redirect和redirect-action的一点区别
2012-03-15 14:23 756struts2-redirect和redirect-actio ... -
t150ckh request.getHeader("user-agent")解析浏览器
2012-03-07 20:18 19987public class BrowseTool { ... -
收邮件、更改邮件标志 javamai +imap
2011-05-09 12:17 1592来源:http://blog.csdn.net/su ... -
java.lang.SecurityException: Prohibited package name
2011-01-02 15:39 3083问题 java.lang.SecurityExceptio ... -
Java 线程Join的用法
2010-11-18 10:11 1031在上面的例子中多次使用到了Thread类的join方法。我想大 ... -
Java 守护线程与非守护线程的区别
2010-11-18 10:05 2506ublic static void main ... -
关于JAVA中enum枚举类型的思考
2010-10-31 09:58 1380package utils; /** * @ ...
相关推荐
在`urlrewrite-3.2.0-src`这个压缩包中,包含的是`URLRewriteFilter`的源代码,这对于开发者来说是一个很好的学习资源,可以深入了解其工作原理,甚至可以根据项目需求进行定制化开发。 总的来说,`...
UrlRewriteFilter架包和文档
标题 "urlrewritefilter-3.2.0下载" 指的是UrlRewriteFilter的3.2.0版本,这是一个非常流行的开源Java过滤器,它主要用于URL重写和管理。在Web开发中,URL重写是一项重要技术,可以用于优化SEO(搜索引擎优化),...
**URLRewriteFilter详解:实现高效且优雅的伪静态** 在Web开发中,为了提高用户体验和搜索引擎优化(SEO),我们常常需要将动态URL转化为看似静态的格式,这就是所谓的“伪静态”。URLRewriteFilter是一个非常实用...
这是urlrewritefilter-4.0.3.jar下载,通过java的Filter过滤器对URL进行重写,用户得到的全部都是经过处理后的URL静态地址,本质上通过伪地址进行页面跳转。 软件介绍 urlrewritefilter-4.0.3.jar是有时候项目中的...
**URLRewriteFilter详解** URLRewriteFilter是一款广泛使用的开源HTTP重写过滤器,它基于Apache的Tuckey项目开发,主要用于对URL进行重写和转换。在Java Web应用程序中,URLRewriteFilter可以帮助开发者实现诸如...
"jsp 利用urlrewritefilter实现伪静态" 这个标题表明了本文将探讨如何在JavaServer Pages (JSP) 中利用URLRewriteFilter来创建伪静态的URL。伪静态技术主要是为了优化搜索引擎排名和用户体验,使得动态生成的网页看...
《URLRewriteFilter详解及其在实现伪静态中的应用》 URLRewriteFilter是一款广泛应用于Java Web开发中的开源过滤器,其主要功能是对HTTP请求的URL进行重写,从而实现URL的美化、动态URL的静态化等多种目的。在这个...
**网址重写过滤器urlrewritefilter详解** 在Web开发中,URL(统一资源定位符)是用户与服务器交互的重要组成部分。一个清晰、简洁的URL不仅可以提高用户体验,也有助于搜索引擎优化(SEO)。`urlrewritefilter`是...
《URLRewriteFilter详解及其在Web应用中的实践》 URLRewriteFilter是开源项目Tuckey提供的一款强大的URL重写工具,它基于Apache的Filter机制,可以对HTTP请求的URL进行灵活的重写和转发,从而实现诸如URL美化、SEO...
通过学习和理解URLRewriteFilter提供的规则语法,开发者可以灵活地定制URL处理逻辑,以满足不同Web应用的需求。 综上所述,URLRewriteFilter是一个强大的工具,可以帮助开发者在Java Web应用中实现复杂的URL管理,...
《URLRewriteFilter详解与应用实例》 ...通过深入学习和实践,开发者可以掌握URLRewriteFilter的精髓,将其运用到自己的项目中,为用户提供更加友好的URL,同时也为网站的长期发展打下坚实的基础。
《URL重写技术详解——基于URLRewriteFilter的实践应用》 在Web开发中,URL重写是一项重要的技术,它能够使我们的网站URL更加简洁、美观,同时也可以隐藏某些敏感信息,提高网站的安全性。本文将围绕...
URL重写过滤器(URLRewriteFilter)是基于Apache的开源项目Tuckey提供的一个强大的URL管理工具,主要用于在Web应用程序中进行URL重写和URL映射。它使得我们可以在不改变实际URL的情况下,实现对URL的友好化处理,...
《URLRewriteFilter详解及其在伪静态中的应用》 URLRewriteFilter是一款广泛应用于Java Web开发中的开源过滤器,主要用于URL重写和管理。它的主要功能是改变HTTP请求的URL,使得原本动态的URL看起来像是静态的,...
通过对`Rule`、`Condition`、`Action`等核心组件的理解,开发者不仅可以定制自己的URL重写规则,还能深入学习到Web请求处理、配置解析、映射策略等相关技术,这对于提升Java Web开发技能具有重要价值。同时,源码的...
URLRewriteFilter的引入就是为了改进这种情况,它允许我们定义一系列规则来转换URL,使其更易于理解和管理。例如,我们可以将一个复杂的、包含多个参数的URL转换为简洁的、有意义的URL。 整合Struts1.2和...