urlRewrite url重写

UrlRewrite  即 地址重写,用户得到的全部都是经过处理后的URL地址。

优点

一:提高安全性,可以有效的避免一些参数名、ID等完全暴露在用户面前,如果用户随便乱输的话,不符合规则的话直接会返回个404或错误页面,这比直接返回500或一大堆服务器错误信息要好的多
二:美化URL,去除了那些比如*.do之类的后缀名、长长的参数串等,可以自己组织精简更能反映访问模块内容的URL
三:更有利于搜索引擎的搜索,通过对URL的一些优化,可以使搜索引擎更好的识别与收录网站的信息
 
urlrewrite其实就是个过滤器

使用方法:

1、到官网http://tuckey.org/urlrewrite/下载下载urlrewritefilter.jar

2、配置web.xml文件

3、编写urlrewrite.xml配置文件

urlrewrite.xml配置文件中:

1、rule的作用:如:

<rule>
    <from>/(.*).html</from>
    <to>index.jsp?id=$1</to>
</rule>

其作用是:当在程序中发出2.html请求,或直接在浏览器地址栏中写入2.html时,其实际访问的是index.jsp?id=2,只是没在地址栏中表现出来而已!!

 这里<to>index.jsp?id=$1</to>中默认的type="forward",就表示实际访问的地址没在地址栏中表现出来。

而如果设置type="redirect",那么实际访问的地址会在地址栏中表现出来!!

【所以如果我们想要做地址伪装的话,目前的做法是将type="forward",同时,在程序中发出请求时,请求的地址同样要写成伪装的地址。

  但伪装的地址还要自己写,这样对自己很不方便。

有没有能够实现,我们在程序中发出请求时写的是实际的地址,但在地址栏中显示的是伪装的地址呢??

答案是肯定的。==》将添加outbound-rule映射,如: <outbound-rule>
                                  <from>index.jsp</from>
                                  <to>%{context-path}/test/status/</to>
                            </outbound-rule>

然后在原来,<a href="index.jsp"></a>这里改为:<a href="<%=response.encodeURL("index.jsp") %>"></a>

它就会自动帮你把你在程序中发出的请求编码成伪地址。该伪地址再映射访问实际的地址就OK了。

   

2、outbound-rule的作用

总结:

在项目中实现url重写的步骤:

1、  导入UrlRewriteFilter的jar包

2、导入urlrewrite.xml配置文件,放在/WEB-INF目录下,

3、在web.xml文件中添加一个Filter过滤器

    <filter>

       <filter-name>UrlRewriteFilter</filter-name>

       <filter-class>org.tuckey.web.filters.urlrewrite.UrlRewriteFilter</filter-class>

    </filter>

    <filter-mapping>

       <filter-name>UrlRewriteFilter</filter-name>

       <url-pattern>/*</url-pattern>

       <dispatcher>REQUEST</dispatcher>

       <dispatcher>FORWARD</dispatcher>

    </filter-mapping>

4、在文件中,编写rule映射规则(用于输入伪地址时映射到访问真正的url地址)

5、在文件中,编写outbound-rule映射规则(用于在程序中将实际的请求地址进行编码)

6、在原来涉及url的地方:

<a href="index.jsp"></a>这里改为:<a href="<%=response.encodeURL("index.jsp") %>"></a>

原文地址:https://www.cnblogs.com/cyh123/p/3255097.html