巧妙的实现了伪静态化

http://www.duzhi.me/article/48.html

相信大家都看到上面的URL很不陌生,(说的是格式),尤其刚从Wordpress 的逻辑看。下面截一张WordPress的图给大家看看.

看到上面的图,用PHP Wordpress 的 非常熟悉。PHP 用的基本都是rewrite 实现301转发。

下面我们看看Java 怎么实现呢?

大部分搜索引擎都会优先考虑收录静态的HTML页面,而不是动态的*.jsp、*.php页面。但实际上绝大部分网站都是动态的,不可能全部是静态的HTML页面,因此互联网上大部分网站都会考虑伪静态——就是将*.jsp、*.php这种动态URL伪装成静态的HTML页面。

主要有两个实现方案:

URLRewrite:

在Google Code 上有个工具包叫做URLRewrite;


     
      org.tuckey 
      urlrewritefilter
      3.1.0
    

首先引入Java 如上;

 
            UrlRewriteFilter
            org.tuckey.web.filters.urlrewrite.UrlRewriteFilter
            

      
                  confReloadCheckInterval 
                  60
            
      
      
            UrlRewriteFilter
            /*
            REQUEST
            FORWARD
            INCLUDE
      

在Web.xml 中添加Filter;

下面就开始写规则了;

 

 

下面写几个规则供大家参考下,

 
    重写index.jsp成index.html
    example:/index.html
    /index.html
    /index.jsp
  
  
  
    将view根目录下所有jsp资源重写成/xxx.action
    example:/index.action
    /([A-Za-z0-9]+).action
    /view/$1.jsp
  
  
  
    forward(转发模式)传参
    example:/user/param/fancy/8080.do
    /user/([A-Za-z0-9]+)/([A-Za-z0-9]+)/([A-Za-z0-9]+).do
    /view/parameter/$1.jsp?username=$2&password=$3
  
  
  
    redirect(重定向模式)传参,to中写绝对地址
    example:/admin/param/fancy/8080.do
    /admin/([A-Za-z0-9]+)/([A-Za-z0-9]+)/([A-Za-z0-9]+).do
    /urlrewrite-maven-example/view/parameter/$1.jsp?username=$2&password=$3
  

所谓重写,就一定会有规则的匹配,这里用到了正则表达式,方便起见,我只用了[A-Za-z0-9]+,简单的解释一下:

A-Z:匹配 A 到 Z 中的任意一个字符,说一句废话,同理可得,

a-z:匹配 a 到 z 中的任意一个字符

0-9:匹配 0 到 9 的任意一个字符

+:至少出现一次,即,一次或一次以上

合起来 [A-Za-z0-9]+ 的意思就是:匹配一个任意的英文字母和数字组合的字符串

:自定义匹配规则

:注释,解释标签

:定义具体的匹配规则

:匹配成功后的目标地址

:type的值有两个,一个是 forward (转发,参数不丢失),一个是 redirect (重定向,地址栏显示的地址就是目标真实地址)

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

& :是 & 的实体名,代表的就是 &,这个可以在 w3school 中找到:http://www.w3school.com.cn/tags/html_ref_entities.html

第一个rule:访问 /index.html,实际上是访问了 /index.jsp

第二个rule:访问 /xx.action , 实际上是访问了 view 目录下的 xx.jsp

第三个rule:访问 /user/xx/yy/zz.do , 实际上是访问了 view 目录下的 parameter 目录下的 xx.jsp?username=yy&password=zz

第四个rule:跟第三个其实是一样的,但是由于是重定向模式,所以地址栏就会显示真的是地址

最后贴个目录结构;

 

下一篇介绍下我的博客怎么实现URL Rewrite

除特别注明外,本站所有文章均为duzhi原创,转载请注明出处来自https://www.duzhi.me/article/55.html

联系我们

******

在线咨询:点击这里给我发消息

邮件:ashang.peng#aliyun.com

QR code