UrlRewrite的使用


UrlRewrite概述

UrlRewrite就是我们通常说的地址重写,用户得到的全部都是经过处理后的URL地址,类似于Apache的mod_rewrite。将我们的动态网页地址转化为静态的地址,如html、shtml,还可以隐藏网页的真正路径。

比如:有时候需要将xxx.com/news/ type1/001.jsp 转化成显示路径为xxx.com/news_type1_001.html


优点:


一:提高安全性,屏蔽内部的url结构.
二:美化URL
三:更有利于搜索引擎的收入,通过对URL的一些优化,可以使搜索引擎更好的识别与收录网站的信息.


 使用步骤


【第一步】下载jar包

在【http://tuckey.org/urlrewrite/#download】下载最新的jar文件,解压得到 【urlrewritefilter-4.0.3.jar】 和 【urlrewrite.xml】。

如果使用的是Maven管理项目,在pox.xml文件中加入如下代码,则Maven将自动下载需要的jar包。


    org.tuckey
    urlrewritefilter
    4.0.3
发布该文章时,最新版本为 4.0.3。


【第二步】
 创建web项目,增加 urlrewritefilter-4.0.3.jar 到 WEB-INF/lib。

如是使用Maven管理项目,则省略该步骤



【第三步】在WEB-INF/web.xml 增加urlrewritefilter过滤器。




    
    
        UrlRewriteFilter
        org.tuckey.web.filters.urlrewrite.UrlRewriteFilter
        
        
            confReloadCheckInterval
            60
        
        
        
        
            confPath
            /WEB-INF/urlrewrite.xml
        
        
        
        
            logLevel
            DEBUG
        
    
    
    
        UrlRewriteFilter
        /*
        REQUEST
        FORWARD
    
    
    
    
        index.jsp
    


如果觉得/*这样的通配,并不符合我的预期,我只想对部分路径进行URL的重写,/*可能会造成我想象不到的或者是许微不足道的性能浪费.我把它改成了我需要的:

    
        UrlRewriteFilter
        /member/*
    
    
        UrlRewriteFilter
        /article/*
    
 

【第四步】urlrewrite.xml配置

 因为上面我们通过confPath定义了配置文件的路径,其实该默认位置就是在/WEB-INF/urlrewrite.xml,为了更能说明问题,所以显示指定下。





    
        /page/(.*).html  
        /index.jsp?page=$1
    
    
    
        ^/user/([a-z]+)/([0-9]+)$
        /index.jsp?nickname=$1&age=$2
  

此时我们就可以通过url进行模拟了。

注意:

1.urlrewrite.xml是utf-8.所以如果你要在rule上加note标签为中文的话,也一定是要utf-8.
2.UrlRewriteFilter 最好是配置在web.xml的前面filter上,不然有可能对有些url转变失去作用.
3.urlrewrite属性:有仅只有一个,rule属性::至少一个.
4.在写rule的时,如果有多个参数时,中间的连接符号&应该是&
5.rule是url重写规则,from是显示出来的地址,to是映射的实际地址,$1是重写参数,它的值与from中的正则表达式是一一对应,可以为多个,()里是匹配的正则表达式, 在正则表达式^指定字符的串开始,$为指定结束
6.对于中文参数要使用(.*)作为参数转义.


示例


实例_1

urlrewrite.xml 文件配置内容:

    
    /page/(.*).html      
    /index.jsp?currentPage=$1

index.jsp中的内容:


    <%String current = request.getParameter("currentPage"); %>
    当前页码
    <%=current %> 

执行效果如下:




实例_2

Rule规则:


        World Rule
        /user/([a-z]+)/([0-9]+)$
        /index.jsp?nickname=$1&age=$2

index.jsp中的内容:

          <%
              String username = request.getParameter("nickname");
              int age = Integer.parseInt(request.getParameter("age"));
           %>           
         用户名: <%=username %> 年龄: <%=age %> 


执行效果如下:
当我们在url中输入”http://localhost/urlrewrite/user/dennisit/23”时

实际执行的就是”http://localhost/urlrewrite/index.jsp?nickname=dennisit&age=23”

实例_3

同理rule规则如下时


        /page/(.*)$
        /page/$1.action

这样我访问的:http://localhost/urlrewrite/page/test
则跳转到:    http://localhost/urlrewrite/page/test.action



实例4
Rule规则:

    
        /([a-z]+)/([a-z]+)/([a-z]+)$
        /$1.do?method=$2&uuid=$3
    

在index.jsp中添加如下链接:
跳转


当点击该链接,
地址栏中显示url是:http://localhost/urlrewrite/process/show/index,
其实际执行路径是:http://localhost/urlrewrite/process.do?method=show&uuid=index



你可能感兴趣的:(java)