请问为什么这个filter配置不对呢,图片是我的目录结构


SecondFilter
/filter/*.jsp

服务器启动就出错[color=red]Invalid /filter/*.jsp in filter mapping[/color]
我很是郁闷啊,通过>/filter/*就可以配置成功,加个.jsp就不行吗

[color=blue][b]
你可以就路径定为/filter/* , 然后再Filter中检测是否是.jsp结尾

看下Servlet规范中,对url-pattern的定义吧:

Servlet JSR(2.3) 11.2章在web应用描述文件中,匹配的定义如下:

以'/'开始,以'/*'为结尾的字符串,用作路径匹配

以'*.'开始的字符串,用作扩展名匹配

包含'/'字符串,定义一个默认的servlet。如匹配的servlet路径是请求URI路径的最小上下文路径,路经的info为空。

其它的字符串用作精确的匹配。[/b][/color]

访问jsp不会经过过滤器吧,我以前用过都是配置servlet或struts里的.do,.action.

那你把jsp放在某个目录下,拦截某个目录可以吗?

[size=medium]/filter/* 或者 *.jsp

/filter/*.jsp 是不符合规则的。[/size]

[size=medium]

上次回答,容易被误解:

/filter/* 匹配filter目录下的所有资源

*.jsp 匹配所有的jsp请求

/filter/*.jsp 是不符合规则的,无法匹配。

PS:请对照Servlet规范中的描述。
[/size]
[b]
Servlet JSR(2.3) 11.2章[/b]

[size=medium][quote]在web应用描述文件中,匹配的定义如下:

以'/'开始,以'/*'为结尾的字符串,用作路径匹配

以'*.'开始的字符串,用作扩展名匹配

包含'/'字符串,定义一个默认的servlet。如匹配的servlet路径是请求URI路径的最小上下文路径,路经的info为空。

其它的字符串用作精确的匹配。[/quote][/size]

[color=blue][b]
应该不行吧?

你可以这样试试:[/b][/color]
[size=medium]
匹配:/filter/* 然后 在Filter中,判断是否是JSP结尾的。如果不是,直接放行。[/size]