关于‘Starting Tomcat v7.0 Server at localhost’ has encountered a problem问题


这个问题,写<servlet-mapping>中的<url-pattern>的时候,没有正确书写格式就会报错,比如,<url-pattern>./testservlet</url-pattern>、

<url-pattern>testservlet</url-pattern>这样的格式均不正确,必须:

1.精确匹配:/testservlet

2.扩展名匹配:*.jsp,*.html等

3.路径匹配:/test/*

4.任意匹配:/ 或者/*


以上几种之一,另外,匹配有优先之分:


当一个url与多个servlet的匹配规则可以匹配时,则按照 “ 精确路径 > 最长路径>扩展名”这样的优先级匹配到对应的servlet。举例如下:

例1:比如servletA 的url-pattern为 /test,servletB的url-pattern为 /* ,这个时候,如果我访问的url为http://localhost/test ,这个时候容器就会先进行精确路径匹配,发现/test正好被servletA精确匹配,那么就去调用servletA,不会去管servletB。

例2:比如servletA的url-pattern为/test/*,而servletB的url-pattern为/test/a/*,此时访问http://localhost/test/a时,容器会选择路径最长的servlet来匹配,也就是这里的servletB。 

例3: 比如servletA的url-pattern:*.action ,servletB的url-pattern为 /* ,这个时候,如果我访问的url为http://localhost/test.action,这个时候容器就会优先进行路径匹配,而不是去匹配扩展名,这样就去调用servletB。



猜你喜欢

转载自blog.csdn.net/YAN_HUAXIANGMO/article/details/72598250
今日推荐