神奇的url重写-动态页面静态化(II)

接上一章的动态页面静态化。
方法二、通过url重写。既动态页面与静态页面使用同样的url来实现。
例如:原请求为:href="tradesite.jspa?path=jtwl&id=1234"
重写后为:href="tradesite/jtwl/1234.htm"
通过这样的重写我们能保证动态页面与静态页面使用同样的url地址访问。这样在生成静态页的时候就不存在替换动态url链接的操作了。
实现步骤:
1.在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>trace</param-value>
</init-param>
</filter>

<filter-mapping>
<filter-name>UrlRewriteFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>

没错就是一个过滤器而已。定义了使用哪个类来进行url重写、
当然要导入相应的url重写jar包:urlrewrite-3.0.4.jar
class:指明使用这个类的路径。
<param-name>logLevel</param-name>
<param-value>trace</param-value>
指明debug模式。
filter-mapping>
<filter-name>UrlRewriteFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
表示对所有的url都进行重写。
还没有完。
这时候要建立url重写规则配置文件urlrewrite.xml。主要是通过正则表达式来匹配实际要访问的url去。
<?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 default-match-type="regex">
<rule>
<from>^/more/([a-zA-Z0-9]+)/([0-9]+)\.htm$</from>
<to>/secondpage.jspa?path=$1&id=$2</to>
</rule>
<rule>
<from>^/difang/([a-zA-Z0-9]+)/([0-9]+)\.htm$</from>
<to>/difangsite.jspa?path=$1&locpid=$2</to>
</rule>
<rule>
<from>^/index\.htm$</from>
<to>/index.jspa</to>
</rule>
<rule>
<from>^/localservice/([a-zA-Z0-9]+)\.htm$</from>
<to>/localservice.jspa?path=$1</to>
</rule>
<rule>
<from>^/toolclass/([a-zA-Z0-9]+)/([0-9]+)\.htm$</from>
<to>/toolclassbytpid.jspa?path=$1&tpid=$2</to>
</rule>
<rule>
<from>^/toolsite/([a-zA-Z0-9]+)/([0-9]+)\.htm$</from>
<to>/toolsitebycid.jspa?path=$1&tcid=$2</to>
</rule>
<rule>
<from>^/tradeservice/([a-zA-Z0-9]+)\.htm$</from>
<to>/tradeservice.jspa?path=$1</to>
</rule>
<rule>
<from>^/trade/([a-zA-Z0-9]+)/([0-9]+)\.htm$</from>
<to>/tradesite.jspa?path=$1&tradepid=$2</to>
</rule>
<rule>
<from>^/([a-zA-Z0-9_\-/]*)css/(.*\.css)$</from>
<to>/css/$2</to>
</rule>
<rule>
<from>^/([a-zA-Z0-9_\-/]*)js/(.*\.js)$</from>
<to>/js/$2</to>
</rule>
<rule>
<from>^/([a-zA-Z0-9_\-/]*)pic/(.*)$</from>
<to>/pic/$2</to>
</rule>
</urlrewrite>


配置文件的名称必须这样命名。因为在filter中已经规定了它会负责读取urlrewrite.xml然后进行请求。
通过这个配置文件也都能看得出只要页面中的链接能匹配到这里的配置规则、则会将它转译到新的url再次进行跳转。
它的神奇之处在于 能替换所有的url包括页面中需要引入的css、js、image等文件夹。
这样你在生成静态页时既不需要你重新修改页面链接。生成的文件目录名正好是你配置规则转译之前的目录结构。例如href="tradesite/jtwl/1234.htm"
生成后的目录即位:根目录/tradesite/jtwl/1234.htm/
在特殊需求下还会变为:根目录/tradesite/jtwl/1234/curr/[color=red]时间毫秒值1293413755437.htm[/color]
这样在每次生成静态页时则不会覆盖原来的文件。而可以设定规则让用户每次访问到的为时间值最大的那个文件。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值