UrlRewrite 关于地址重写来增加安全性

UrlRewrite 关于地址重写来增加安全性
一、UrlRewrite的基本环境搭建
首先导入 urlrewrite-3.2.0.jar包,然后在web.xml里面声明Filter

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


    UrlRewriteFilter
    /*
    REQUEST
    FORWARD
然后在项目的 WEB-INF目录下新建一个urlrewrite.xml文件,如下:


    
     //这里配置地址重写的规则
示例:
1、使用正则表达式匹配(rule 的默认匹配方式是正则表达式

       ^/demo/(\w+).html$//客户端访问的地址:http://127.0.0.1:8080/Struts/demo/hello.html
       /Struts/$1//实际访问的地址:http://127.0.0.1:8080/Struts/hello
        ^/demo1/(\w+)/(\w+).html$
        /Struts/$1.action?age=$2
解析:
rule 是urlrewrite下的子节点,是urlrewrite的主要规则节点,在它里面包含from 和to两个子节点,from表示请求的URL,to表示将转到的真实的URL。
2、使用通配符匹配
转发模式:forward方式跳转

        /demo2/*/*
         
   重定向模式:redirect方式跳转 
  

        /demo2/*/*
        /Struts/$1.action?age=$2
除了支持指定规则的跳转外,UrlRewrite还支持当匹配规则的时候执行某个对象的某个函数
示例:

        ^/demo3/(\w+)/(\w+).html$
        //匹配规则后,指定的函数只在第一次匹配成功的时候执行
	//每次匹配规则后,指定的函数都会执行一次
        /Struts/$1.action?age=$2
 
   如上述设置,要实现匹配规则是执行某个函数,需要添加多一个run节点,在节点上面添加对应的类属性和方法属性。同时,对应的类必须继承RewriteRule类,执行的方法必须传入两个参数,分别是HttpServletRequest 和HttpServletResponse 
   
 
   
 
  
//记得要继承RewriteRule类
public class Demo extends RewriteRule{
 
    public void log(HttpServletRequest request,HttpServletResponse response){
        System.out.println("haha1");
    }
     
    public void log2(HttpServletRequest request,HttpServletResponse response){
        System.out.println("haha2");
    }
}
这样,当客户端输入的网址第一次匹配到指定规则的时候,UrlRewrite就会执行对应的函数,该函数只在第一次匹配成功的时候执行。

除了对请求的URL进行处理外,UrlRewrite还提供了对返回页面中的地址进行重写的功能。使用rule是对用户输入的url进行处理,但是开发过程中,经常需要在页面中也添加一些网址请求,UrlRewrite可以通过规则,对页面中的网址也进行重写。如:

        /(\w+).action\?id=(\w+)$
        /$1.html
在UrlRewrite中添加该规则后,我们在页面中原本的地址是:
 测试
可是在页面中显示却成了如下:
测试
这样可以隐藏了许多开发中的技术,较为安全。








你可能感兴趣的:(电子商城所要了解的知识)