我在这里已经有一个未解决的问题,当我们使用servlet时,如何以及何时将.do附加到任何URL中...
今天,当我了解过滤器时,另一个疑问发生了:
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
在这种情况下什么是/ *,如果它意味着它将检查所有请求?此外,当调用某个操作时,url says: http://..../myapp/register.action.
赞.do
,.action
会被追加,甚至在映射中也没有提及。请清除这个疑问,如果可能,.do
也要怀疑......
答案 0 :(得分:1)
让我们逐一清除你的怀疑。在web.xml下面的行
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
是调用S2过滤器的条目。行<url-pattern>/*</url-pattern>
,告诉容器(tomcat / weblogic等)何时容器应该调用过滤器。
因为对于S2,我们需要做很多初始化工作才能让你的应用程序工作,我们告诉容器每个发送到容器的请求应该通过S2过滤器。
关于像.action,.do
这样的网址的扩展,这是内部的S2,与您在web.xml
中看到的过滤器映射无关。
所以简而言之,如果你点击了
这样的网址yourapplication-domian/abc.action
yourapplication-domian/abc.do
yourapplication-domian/abc.jsp
以上所有请求都将通过过滤器传递,现在一旦它们通过过滤器,S2内部将检查哪个URL是有效的S2 URL
例如,如果您将扩展名设置为.action
,则S2将仅识别具有这些扩展名的网址,并在过滤器处理所有扩展名时对其进行处理。
希望这有助于你清除疑虑
答案 1 :(得分:0)
在struts-core jar中找到struts-default.properties,你可以找到这些设置。
您可以提供以逗号分隔的列表
e.g。 struts.action.extension=action,jnlp,do
struts.action.extension=action (default setting)