我在web.xml文件下配置
         <init-param>
   <param-name>pattern</param-name>
   <param-value>.*\\.do$|.*\\.jsp$</param-value>
   </init-param>
参数值通过filterConfig拿出来怎么是.*\\\\.do$|.*\\\\.jsp$啊,为什么会出现这种情况,但是你后台打印的话它会帮你转义出来所以你看到的是.*\\.do$|.*\\.jsp$ 这样问题就出来了,我开始不知道是这个情况,然后我就拿去匹配当然和我预想的结果不一样,匹配不上。那么怎样解决这个问题了,当然可以直接在文件中写死不去传,
如果还是想通过传参数该怎么解决,谢谢大侠们的指教啊

解决方案 »

  1.   

    首先在web.xml中的,要表达.do,要用'\'来转义'.' 所以变成 ‘\.do’  但 ‘\’在正则里也是有特殊意义的,也需要'\' 转义一下,所以最终变成'\\.do' 在java类里,‘\’也需要转义,'\\' 表示 一个 '\' 。所以要表示两个'\',就需要四个'\'
      

  2.   

    <param-value>.*\.(?:do|jsp)$</param-value>写成这样就可以了
      

  3.   

    \\. 是在 Java 代码中需要这样写,因为 \ 在编译器中是个转义字符,但在 XML 中 \ 并不是个转义字符,所以不需要使用两个 \\我感觉有很多人都无法理解 Java 中使用 \\ 的目的是什么!