struts2中的struts.action.extension和web.xml中配置的filter的关系

struts.action.extension:该属性指定需要Struts 2处理的请求后缀,该属性的默认值是action,即所有匹配*.action的请求都由Struts 2处理。
web.xml中配置的filter中url-pattern配置为/* 也就是所有的请求都交给struts去处理。

他们有什么关系。是一样的吗?在线等答案。谢谢。

不一样,是这样的

web.xml里面的这个filter,他本质是一个过滤器,这里设置的内容就是我们要让这个过滤器过滤的内容

/*,我们的这个配置的意思是所有的链接地址都要经过struts2的过滤器的处理

struts.action.extension这个里面指定的扩展名,也就是说默认是action的我们才交给struts2控制器来处理,不是action扩展的我们不管(如图片、JS、CSS文件等)追问

struts2过滤器对请求有什么作用。如果请求不是配置文件中的规定。struts2就不会去处理。但请求经过了过滤器这个步骤。此时过滤器有什么用。

追答

过滤器要经过一个判断,不然他不知道你的请求是否会符合规定,
web.xml里面的过滤器配置只支持以下三种
① 完全匹配
/test/zhidao.action
② 目录匹配
/test/*
③ 扩展名匹配
*.action

看着第三种也符合我们的需求是吧,但是这种的扩展性不好,比如我们现在有一个这样的需求:

1、.do,.action扩展名的都要是struts2的请求,我们使用struts.action.extension,就可以达到,但是只使用web.xml里面的配置很难达到

2、如果我们只使用了3的过滤器的配置,我们现在又有一个需求,我们只需要过滤URL为/action/开头的,而扩展名又是action的,怎么办?这个时候我们使用2的目录匹配,加上struts.action.extension,也可以达到需求了

楼主加点分吧,嘿嘿

追问

你说的我懂,但不是我问的。你再回答下我把分给你
当url-pattern配置为/*时,所有的请求都经过了struts2过滤器,但请求不是sturts配置文件中的访问方式(例如:action为后缀)那么此时struts2过滤器有什么作用, Struts tags are only usable when the request has passed through its servlet filter,i want to know like this. can you tell me another thing about that ?sorry, my computer can't use the Chinese = =!! 3q

追答

当url-pattern配置为/*时,所有的请求都经过了struts2过滤器,但请求不是sturts配置文件中的访问方式(例如:action为后缀)那么此时struts2过滤器有什么作用
==========
没有作用,他就是来检查是否需要struts2进一步处理(是否是以action结尾的),如果不需要就不管了(如果不是action结尾的,就放行,交给容器如tomcat进一步处理)

温馨提示:内容为网友见解,仅供参考
第1个回答  2012-06-18
web.xml里面的filter是web容器将路径权利交给struts
struts.action.extension是指struts自己规定处理的路径
相似回答