`

urlrewrite的使用,亲测!

阅读更多

 

首先声明:大牛们,别笑,俺是一小菜菜!

 

这两天发现项目上貌似有点问题,很多页面在跳转的时候 往往只是简单的<a href="xxxxxx.MM">

其实这样 也许会给恶意攻击者、敌对的竞争方带来便利!

因此,想到用urlrewrite来弄弄,但是老是出现问题!!总是跳不过去!


在大牛牛的指导下,终于搞定了,还是来做一个总结吧!!

首先下载urlrewrite的jar包。

然后在web.xml里面配置filter,这个filter必须配置在struts的filter前面,因为这是一个执行顺序的问题!

    <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>

之后,在相应的web-inf下面新建一个rule文件,用相应的规则处理url的问题!

这个文件名使用urlrewrite.xml

<?xml version="1.0" encoding="utf-8"?>

<!DOCTYPE urlrewrite PUBLIC "-//tuckey.org//DTD UrlRewrite 3.2//EN"

        "http://tuckey.org/res/dtds/urlrewrite3.2.dtd">

<urlrewrite>

   <rule>

    <from>^(.*)\.do$</from>

    <to type="forward">$1.MM</to>

    </rule> 

</urlrewrite>

这是我所用到的url变换规则,这个东东困扰了我好久!
再在配置文件web.xml中加上
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>/*</url-pattern>
<dispatcher>REQUEST </dispatcher>
                <dispatcher>FORWARD </dispatcher> 
                <dispatcher>INCLUDE </dispatcher> 
</filter-mapping>

其实搞出来就是那么的简单,其中注意4个方面,就能很简单的做出来!

1、<from>         <to>
也就是说这个.do    是在页面里面写好的,也就是例如:
<body>
<a href="123123.do">高帅富</a>
</body>

从页面提取(from)132123.do文件映射到(to)什么文件!

 

2、其实这个.do文件是虚拟的,是没有这个文件的!其对应的文件名为 123123.MM

 

3.关于正则表达式 ,请自己在网上找相关的api文档  就会有相应的解答!

这里指出:<to type="forward">$1.MM</to>中的$1.MM,“$1”这个符号,指的是上文中的小括号()里面的内容,如果有两个小括号(),$1指向指向左起第一个,$2指向左起第二个!

 

4、type="forward"这个 这个可是把我搞惨了  还有有俺家的大牛牛在 ,才把俺引出了迷雾!

平时用forward的时候都没注意到,这意思是在跳转页面的时候,url地址在地址栏不变,什么不变呢??

还是按照123123.do输出在地址栏。

 

,如果你写成了type="redirect"  那么,地址栏将会变成下面那个123123.MM!!!呵呵呵

 

 

如需将action的跳转  例如:list变成list.do  只需在struts配置文件加上

<constant name="struts.action.extension" value="do"></constant>

<!--action后缀.do -->

web.xml里配置

 

  <init-param>

<param-name>struts.action.extension</param-name>

<param-value>do</param-value>

</init-param>

 

总结一句话:小菜菜的基础知识不扎实  好高骛远!!                         有爱好IT的朋友可以加我QQ:474515923

 

互相学习  共同进步 最终达到共同富裕

分享到:
评论
2 楼 =寂寞_狐狸= 2012-07-20  
fatedgar 写道
我想要一种结果像这样:
在外网服务器上有个项目他的URL是:http://10.252.4.4:8077/jkda3
我想在本地输入:http://happysys:8080/jkda3就连接到上面的URL中去了
这个可以实现不?

应该是可以实现的 如果是类似于tomcat这种的话 在配置文件里面配置相应的link 应该能跳转到外网的地址的!
1 楼 fatedgar 2012-05-04  
我想要一种结果像这样:
在外网服务器上有个项目他的URL是:http://10.252.4.4:8077/jkda3
我想在本地输入:http://happysys:8080/jkda3就连接到上面的URL中去了
这个可以实现不?

相关推荐

Global site tag (gtag.js) - Google Analytics