场景:
写了个Filter,希望在路径中带有"xxx/sys/xxx"中生效,路径配置如下
<url-pattern>/sys/*</url-pattern>
本地Tomcat启动没问题,生产上webSphere上不生效
原因:
目标地址中带有双斜杠"//",具体路径为"xxx//sys/xxx"
解决思路:
1.路径中不应该有双斜杠,调整路径为正常单斜杠
2.调整通配符以适应双斜杠(最终不可行,欢迎大佬指教)
1不用说了,重点讲讲2。在一番尝试后,下面几种格式是不行的,有的直接报错,有的连正常路径都不触发了。
//sys/*
/*/sys/*
*/sys/*
/sys*
/*sys
逐去查阅资料,发现web.xml通配符只支持以下模式:
1、精确匹配。以”/”开头,加上servlet名称: /ad ;
2、路径匹配。以”/”开头,加上通配符”*” : /* ;
3、扩展名匹配。以通配符”*”开头,加上扩展名 : *.action ;
得出结论:
a.通配符路径匹配较为简单,无法跟正则一样。
b.测试和生产环境也有差异,功能上生产后的测试不能马虎。