struts学习中通过过滤器发现的问题

来源:百度知道 编辑:UC知道 时间:2024/06/08 20:14:33
1.
书上写web.xml配置中,一个servlet可以映射多个url-pattern,比如
<servlet-mapping>
<servlet-name>action</servlet-name>
<url-pattern>*.do</url-pattern>
</servlet-mapping>

<servlet-mapping>
<servlet-name>action</servlet-name>
<url-pattern>*.act</url-pattern>
</servlet-mapping>

但是我通过对不同的url-pattern使用不同的过滤器,发现有如下问题:

①对于显式的请求如超链接、按钮提交,不管代码中写的是哪种请求形式,都是按照映射中最后的一种形式即*act来处理的。比如一个链接,本来在jsp中写的是<html:link action="index.do">index</html:link>,但是鼠标悬浮其上时,状态栏显示的却是.../index.act
②而对于ajax中发送的请求形式,是按照实际代码的形式处理的,写什么就是什么。

请问是为什么?

2.发现过滤器对于forward不起作用:

web.xml中有如下设置
<filter-mapping>
<filter-name>filter</filter-name>
<url-pattern>*.do</url-pattern>
</filter-mapping>

struts-config.xml中有如下设置
<global-forwards>
<forward name="query&

对于第一种情况,可能是你使用了struts标签所致,你把超链标签换成普通的html标签再试试看.如果仍是如此,那可能就是取最后一次的配置信息了.
对于第二种情况很容易理解,filter拦截的是request,如果没有request当然不能拦截,而你的forward是同一个request所以不起效果.