• Maven 中配置 Urlrewrite 基本配置


    1. 在maven项目的pom.xml文件里加入:

                <!-- URL Rewrite -->
        <dependency>
          <groupId>org.tuckey</groupId>
          <artifactId>urlrewritefilter</artifactId>
          <version>3.1.0</version>
        </dependency>


    3.在WEB项目的web.xml里加上urlrewrite的过滤器
         <filter>
                <filter-name>UrlRewriteFilter</filter-name>
                <filter-class>org.tuckey.web.filters.urlrewrite.UrlRewriteFilter</filter-class>
                <init-param>

          <!-- 设置自动更新urlrewrite.xml信息 -->
                      <param-name>confReloadCheckInterval</param-name>
                      <param-value>60</param-value>
                </init-param>
          </filter>
          <filter-mapping>
                <filter-name>UrlRewriteFilter</filter-name>
                <url-pattern>/*</url-pattern>
                <dispatcher>REQUEST</dispatcher>
                <dispatcher>FORWARD</dispatcher>
                <dispatcher>INCLUDE</dispatcher>
          </filter-mapping>


    2. 在Web项目下WEB-INF目录里新建一个名为urlrewrite.xml的文件,标签格式如下:
     

    <?xml version="1.0" encoding="utf-8"?>
    <!DOCTYPE urlrewrite PUBLIC "-//tuckey.org//DTD UrlRewrite 3.2//EN" "\urlrewrite3.2.dtd">
      
    <urlrewrite>
      
      <rule>
        <note>重写index.jsp成index.html</note>
        <note>example:/index.html</note>
        <from>/index.html</from>
        <to type="forward">/index.jsp</to>
      </rule>
      
      <rule>
        <note>将view根目录下所有jsp资源重写成/xxx.action</note>
        <note>example:/index.action</note>
        <from>/([A-Za-z0-9]+).action</from>
        <to type="forward">/view/$1.jsp</to>
      </rule>
      
      <rule>
        <note>forward(转发模式)传参</note>
        <note>example:/user/param/fancy/8080.do</note>
        <from>/user/([A-Za-z0-9]+)/([A-Za-z0-9]+)/([A-Za-z0-9]+).do</from>
        <to type="forward">/view/parameter/$1.jsp?username=$2&amp;password=$3</to>
      </rule>
      
      <rule>
        <note>redirect(重定向模式)传参,to中写绝对地址</note>
        <note>example:/admin/param/fancy/8080.do</note>
        <from>/admin/([A-Za-z0-9]+)/([A-Za-z0-9]+)/([A-Za-z0-9]+).do</from>
        <to type="redirect">/urlrewrite-maven-example/view/parameter/$1.jsp?username=$2&amp;password=$3</to>
      </rule>
      
    </urlrewrite>


    urlrewrite.xml 这个配置文件一定只能放在 WEB-INF 下,放别的地方,无论你在web.xml中怎么配置都是不行的,至少现在是不行的。

    所谓重写,就一定会有规则的匹配,这里用到了正则表达式,方便起见,我只用了[A-Za-z0-9]+,简单的解释一下:

    A-Z:匹配 A 到 Z 中的任意一个字符,说一句废话,同理可得,

    a-z:匹配 a 到 z 中的任意一个字符

    0-9:匹配 0 到 9 的任意一个字符

    +:至少出现一次,即,一次或一次以上

    合起来 [A-Za-z0-9]+ 的意思就是:匹配一个任意的英文字母和数字组合的字符串

    <rule>:自定义匹配规则

    <note>:注释,解释标签

    <from>:定义具体的匹配规则

    <to>:匹配成功后的目标地址

    <to type="">:type的值有两个,一个是 forward (转发,参数不丢失),一个是 redirect (重定向,地址栏显示的地址就是目标真实地址)

    $1:匹配中的第一个正则表达式的字符串的值,$2,$3,$4....也是如此

    &amp; :是 & 的实体名,代表的就是 &,这个可以在 w3school 中找到:http://www.w3school.com.cn/tags/html_ref_entities.html

    第一个rule:访问 /index.html,实际上是访问了 /index.jsp

    第二个rule:访问 /xx.action , 实际上是访问了 view 目录下的 xx.jsp

    第三个rule:访问 /user/xx/yy/zz.do , 实际上是访问了 view 目录下的 parameter 目录下的 xx.jsp?username=yy&password=zz

    第四个rule:跟第三个其实是一样的,但是由于是重定向模式,所以地址栏就会显示真的是地址

    在 pom.xml 中右键,Run as --> Maven install

    下面是生成的 target 资源:

    将 war 文件拷贝到你的 服务器中,我用的是tomcat,然后启动tomcat:

    如果你是第一次使用 urlrewrite 可能会抛一个异常:

    这个异常信息是说系统找不到 tomcat bin 下的 urlrewrite3.2.dtd 文件,解决办法很简单:

    方法一:将 urlrewrite3.2.dtd 放到 urlrewrite.xml 所在的目录下,即 WEB-INFO 的目录下

    方法二:将 urlrewrite3.2.dtd 放到 tomcat 的 bin 目录下,这个方法一劳永逸,所以我选的是这个

    urlrewrite3.2.dtd 这个文件可以在文章的最下面下载,源码包里我没有放这个文件,没问题之后,

  • 相关阅读:
    网站开发动静分离
    如何前后端分离?
    设置HTML编码为UTF-8
    数据库索引&数据页
    spring中的BeanFactory和FactoryBean的区别与联系
    Java可重入锁与不可重入锁
    abo dto属性验证的坑
    小程序如何去掉button组件的边框
    asp.net core使用gzip
    npm总结
  • 原文地址:https://www.cnblogs.com/chen-lhx/p/4995490.html
Copyright © 2020-2023  润新知