java UrlRewrite技术简单介绍
来源:互联网 发布:帝国cms权限设置 编辑:程序博客网 时间:2024/06/05 18:59
我们先简单的了解一下使用Url重写能给你网站带来哪些好处。
第一:有利于搜索引擎的抓取,因为现在大部分的搜索引擎对动态页面的抓取还比较弱,它们更喜欢抓取一些静态的页面。而我们现在的页面大部分的数据都是动态的显示的。这就需要我们把动态页面变成静态的页面,有利于搜索引擎的抓取。
第二:让用户更容易理解,很少有用户去关心你网站的页面的地址,但对一般的大中型网站增强可读性还是必须的。这样会让你的网站更加完美。
第三:隐藏技术的实现,我们可以通过Url重写可以实现技术的隐藏。不至于暴露你所采用的技术,给一些想攻击你网站的爱好者提供方便。
第四:可以很方便的重用,提高网站的移植性。如果我们后台方法改动的话,可以保证前台的页面部分不用改。这样就提高了网站的移植性。
它虽然有这么多的优点,但是也有一点缺点的,因为它是通过过滤器原理来实现的,就以为着又多了一道访问,会多少影响点访问速度的,这个可以忽略不计的。
现在UrlRewriter技术有两个技术平台的,一个就是在Java方向的,另一个就是.NET方向的。今天我们讲的是Java方向的应用。
首先让我们了解它的工作原理,说白了它就是一个简单的过滤器(Filter) ,看看源码你就会很快的明白,它就是通过我们在jsp中常用的两个方法实现的forward(),sendRedirect().
下面我们就快速的为你的网站搭建Url重写技术。
第一步:下载urlrewrite-2.6.0.现在最新版本是3.1的。把urlrewrite-2.6.0.jar拷到classpath下。
第二步:在WEB-INF目录下建一个urlrewrite.xml文件。
第三步:在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>
</filter-mapping>
最后我要简单的讲一下常用的两个配置规则.以下就是简单的urlrewrite.xml配置片段。不要习惯Java的命名法把它写成urlRewrite.xml,这样即使你加上
代码如下复制代码<init-param>
<param-name>confPath</param-name>
<param-value>/WEB-INF/urlRewrite.xml</param-value>
</init-param>
在启动的服务器的时候还是会报错的,因为源码中必须是全小写的(urlrewrite.xml)且只能放到WEB-INF下面。
<urlrewrite>
<rule>
<from>^/(w+)/(w+)/page_(d+).html$</from>
<to type=”forward”>/$1.htm?category=$2&page=$3</to>
</rule>
</urlrewrite>
所有的规则配置都写在这里。第一个常用个规则就是站内的简单重写。
代码如下复制代码<rule><from></from>
<to type=”forward></to>
</rule>
<from></from>
写上你自己定义的访问地址,<to type=”forward></to>就是实际的访问地址。
比如我们实际的访问地址是:http://www.111cn.net?post=34
而我们想把它重写为http://www.111cn.net/java/urlwriter.html。
这样看起来比我们实际的要好看的多。
我们就应该这样的写:
<from>^/java/urlwriter.htm</from>
<to type=”forward”>/(w+)?post=34$</to>
</rule>
简单的介绍一下常用的正规表示式:
代码 说明
. 匹配除换行符以外的任意字符
w 匹配字母或数字或下划线或汉字
s 匹配任意的空白符
d 匹配数字
b 匹配单词的开始或结束
^ 匹配字符串的开始
$ 匹配字符串的结束
常用的&要用 &来表示。$1,$2代表与你配置正规表达式/(w+)/(w+)/相对应的参数。<to type=”forward”>默认的是 type=”forward”.
我自己用的例子
第一步下载jar包
在http://tuckey.org/urlrewrite/#download下载最新的jar文件,当前最新的是Beat3.2我下载的是urlrewritefilter-2.6.zip。解压得到urlrewrite-2.6.0.jar 和 urlrewrite.xml
第二步新建Web项目TestUrlRewrite,
在WebRoot下新建index.jsp,修改其代码如下所示:
<%@ page contentType="text/html; charset=UTF-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>测试TestUrlRewrite</title>
</head>
<body>
<%
String id = (String) request.getParameter("id");
out.println("<h3> the value is : " + id +" </h3> ");
%>
</body>
</html>
【第四步】发布程序
将程序发布到Tomcat中,然后在浏览器输入如下地址:
http://localhost:8080/TestUrlRewrite/index.jsp?username=niejingyu,页面展示效果如图1所示:
【第五步】添加urlrewrite文件
将urlrewrite-2.6.0.jar复制到WebRootWEB-INFlib下。
将urlrewrite.xml复制到WebRootWEB-INF下,其中urlrewrite.xml代码如下所示:
<?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>
<from>/(.*).html</from>
<to>index.jsp?id=$1</to>
</rule>
</urlrewrite>
*.html 是一个正则表达式的串。如果你对这个不理解可以学习一下java中正则表达式的应用。
$1 也是一个正则表达式的语言匹配正则中的组捕获。
【第六步】修改web.xml文件
在web.xml 增加如下内容:
<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>DEBUG</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>UrlRewriteFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
重启tomcat
访问http://localhost:8080/TestUrlRewrite/2.html,页面效果如图所示:
在这里是匹配/(.*).html,将请求转发到index.jsp?id=$1。你还可以根据需要转到xxx.action?id=$1
rule 中的%{REQUEST_URI}表示访问的相对地址,就是相对根目录的地址,就是域名/后面的成分,格式上包括最前面的“/”
%{query-string} 是url的"?"后面的东西,就是参数字符串、例如a=11&b=3
- java UrlRewrite技术简单介绍
- Java urlrewrite+Maven 简单使用
- 简单测试IIS下的UrlRewrite技术
- Intelligencia.UrlRewriter简单介绍(urlRewrite组件使用简单介绍)
- java urlrewrite
- java urlrewrite
- java urlrewrite
- java urlrewrite
- UrlRewrite、地址映射技术
- UrlRewrite、地址映射技术
- UrlRewrite、地址映射技术
- UrlRewrite、地址映射技术
- UrlRewrite、地址映射技术
- UrlRewrite、地址映射技术
- UrlRewrite、地址映射技术
- URL重写技术urlrewrite
- UrlRewrite、地址映射技术
- UrlRewrite、地址映射技术
- 文本框点击事件
- ent0 en0 et0 专题总结
- Docker daemon日志的位置
- 利用python内置函数,快速统计单词在文本中出现的次数
- uva 10305 简单拓扑排序
- java UrlRewrite技术简单介绍
- 浅析linux中snapshots, blockcommit,blockpull
- 如何在Caffe中配置每一个层的结构
- 调试adb运行时需要运行到cmd,发现cmd具体指令都不会,所以在网上查了一下
- 第一次使用ungetc
- ramparse
- Spring@Autowired注解与自动装配
- HDOJ Oulipo 1686【KMP】
- window下键盘监控api函数详解