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

  • 相关阅读:
    分支与合并@基础
    创业者那些鲜为人知的事情
    centos7.5+nginx+php急速配置
    通过webhost扩展方式初始化EFCore数据库
    AspNetCore架构图
    Linux就该这样学--之常用linux命令及bash基础
    使用gitlab构建基于docker的持续集成(三)
    使用gitlab构建基于docker的持续集成(二)
    使用gitlab构建基于docker的持续集成(一)
    使用docker-compose配置mysql数据库并且初始化用户
  • 原文地址:https://www.cnblogs.com/cyh123/p/3255097.html
Copyright © 2020-2023  润新知