?
首先声明:大牛们,别笑,俺是一小菜菜!
?
这两天发现项目上貌似有点问题,很多页面在跳转的时候 往往只是简单的<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>
从页面提取(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
?
互相学习 ?共同进步 最终达到共同富裕
在外网服务器上有个项目他的URL是:http://10.252.4.4:8077/jkda3
我想在本地输入:http://happysys:8080/jkda3就连接到上面的URL中去了
这个可以实现不?