2012-04-05 67 views
1

我想要一个特定的URL的“显式”servlet和一个处理所有其他URL的默认(排序全部)servlet。所以,我创建的web.xml文件是这样的:Asterisk(通配符匹配)和url-pattern

<servlet> 
    <servlet-name>My myindex.html servlet</servlet-name> 
    <servlet-class>in.shakir.web.MyIndexServlet</servlet-class> 
    </servlet> 
    <servlet-mapping> 
    <servlet-name>My myindex.html servlet</servlet-name> 
    <url-pattern>/myindex.html</url-pattern> 
    </servlet-mapping> 

    <servlet> 
    <servlet-name>My all others servlet</servlet-name> 
    <servlet-class>in.shakir.web.MyHandlerServlet</servlet-class> 
    </servlet> 
    <servlet-mapping> 
    <servlet-name>My all others servlet</servlet-name> 
    <url-pattern>*</url-pattern> 
    </servlet-mapping> 

但是它不工作(我得到甚至/myindex.html 404错误) 我使用Tomcat 7

但如果我删除第二个(默认或catch-all)部分从我的web.xml,然后myindex.html工作正常。那么,我的网址模式有什么问题?请指教。

回答

4

变化

<url-pattern>*</url-pattern> 

<url-pattern>/*</url-pattern> 

看到this以获取更多信息。

+0

Chandra,我刚刚看过那个页面,看起来使用/ * 会产生同样的效果。对 ? – 2012-04-05 06:22:38

+0

@ user1089770 /将充当默认的url模式。我的意思是如果没有url匹配,那么这个servlet将被调用。但我不认为servlet中存在第二种情况。我不知道第二宗案件。 – 2012-04-05 06:24:54