• Urlrewrite


    Urlrewrite 

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

    过滤用户的所有请求,符合规则的便对其进行重定向

    rule结点中from默认使用的正则表达式来匹配,若用户访问服务器时的URL符合规则就跳转至to结点中的配置,默认是forward跳转。

    <rule>:自定义匹配规则

    <note>:注释,解释标签

    <from>:显示的地址,要用()把要匹配的内容括起来才能获取,不然java会抛出异常

    <to type="">:匹配成功后的实际地址,可以为null,相当于未调用chain.doFilter,type有两个值,forward (转发,参数不丢失),redirect (重定向,地址栏显示的地址就是目标真实地址)

    注意:

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

    如果要用&符号,需要用&amp;代替

    urlrewrite.xml是utf-8,note标签内的中文也一定是要utf-8.

    UrlRewriteFilter 最好是配置在web.xml的前面filter上,不然有可能对有些url转变失去作用.

    urlrewrite有仅只有一个,rule至少一个.

    正则表达式^指定字符的串开始,$为指定结束,对于中文参数要使用(.*)作为参数转义.
     “+”匹配1或多个正好在它之前的那个字符

    如果使用<outbound-rule>要记得代码中的url都是编码过的;

    contex 是非常重要的, 如果有一个应用的context 是”/myapp”,并且你的请求是”/myapp/somefolder/somepage.jsp”, 容器交给UrlRewriteFilter 的url会是”/somefolder/somepage.jsp”, 这可能难以理解,但是在你的<rule>和<condition>中不要包含context path, 它是容器负责处理的.

    应用通配符,通配符匹配引擎可以替代正则表达式, 在<condition>和<rule>中设置match-type是wildcard用以开启支持通配符.(或者设置default-match-type)
    例如:
    /big/url/*匹配/big/url/abc.html但是不匹配/big/url/abc/dir/或/big/url/abc/
    /big/url/**匹配/big/url/abc.html,/big/url/abc/dir/和/big/url/abc/
    也可以和正则的替换一样, 每个*代表一个参数,在<set>和<to>中用$N的方式使用

    优点

    (1)提高安全性 :有效的避免一些参数名、ID等完全暴露在用户面前,若用户输入不符合规则会返回404或错误页面
    (2)美化URL :去除如*.do之类的后缀名、长参数串等

    使用步骤:

    1、下载urlrewritefilter-4.0.3.jar,加入到工程lib目录下。

    2、配置web.xml

    <!-- 加到任何servlet映射的顶部,不然可能有些路径不能被过滤到-->
    <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>
      <dispatcher>INCLUDE</dispatcher>
    </filter-mapping>

    3 、配置urlrewrite.xml

    添加urlrewrite.xml 到工程的WEB-INF目录下。
    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE urlrewrite PUBLIC "-//tuckey.org//DTD UrlRewrite 3.1//EN" "http://tuckey.org/res/dtds/urlrewrite3.1.dtd">
    <urlrewrite>
      <rule>
           <note>
               The rule means that requests to /test/status/ will be redirected to /rewrite-status the url will be rewritten.
           </note>
           <from>^/vweb/view/index-([0-9]+)$</from>
           <to>/vweb/view/index.shtml?_vwebid=$1&amp;type=show</to>
       </rule>
    </urlrewrite>
    示例:
        <rule>
            <from>^/([a-z]+)/([a-z]+)/([a-z]+)$</from>
            <to>/$1.do?method=$2&amp;uuid=$3</to>
        </rule>

    在index.jsp中添加链接:<a href="process/show/index">跳转</a>

    地址栏url:http://localhost/urlrewrite/process/show/index,

    实际路径:http://localhost/urlrewrite/process.do?method=show&uuid=index

  • 相关阅读:
    Hibernate4
    Hibernate3 多对多关系
    Hibernate 二(一级缓存,多表设计之一对多)
    Hibernate 配置文件
    Hibernate 基础解析(Configuration,SessionFactory,Session,Transaction,Query,Criteria)
    struts2 防止表单的重复提交
    struts2 UI标签 和 主题
    struts2 OGNL配和通用标签和其它标签的使用
    struts2 对EL的改变
    struts2 contextMap
  • 原文地址:https://www.cnblogs.com/whatarewords/p/10723544.html
Copyright © 2020-2023  润新知