1
2
3
对俺有用的原因:
(一)可能原因是在web.xml中配置时,servlet-mapping的属性配置错误(红色出为配置错误):
<servlet-mapping>
<servlet-name>coreServlet</servlet-name>
<url-pattern>/CoreServlet</url-pattern>
</servlet-mapping>
正确配置为:
<servlet-mapping>
<servlet-name>coreServlet</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
其中
<url-pattern>xxx</url-pattern>
可以为你想要的路径,但是一定要配置正确。
ps: url-pattern规则:有精确匹配,最长路径匹配,扩展匹配,如果前三条规则都没有匹配到,则会交给第四种叫default servlet处理。
以”/’开头和以”/”结尾的是用来做路径映射的; “/” 是用来定义default servlet映射的。 以前缀”.”开头的是用来做扩展映射的。剩下的都是用来定义详细映射的;比如:
/aa/bb/cc.action。
<url-pattern>/</url-pattern>和<url-pattern>/*</url-pattern>的区别:
<url-pattern>/</url-pattern> 会匹配到/login这样的路径型url,不会匹配到模式为*.jsp这样的后缀型url
<url-pattern>/*</url-pattern>
会匹配所有url:路径型的和后缀型的url(包括/login,.jsp,.js和*.html等)
注意:路径和扩展名匹配无法同时设置,因为这种匹配即属于路径映射,也属于扩展映射,导致容器无法判断。比如下面的三个
<url-pattern>
都是非法的,如果设置,启动tomcat服务器会报错。
<url-pattern>/kata/*.jsp</url-pattern>
<url-pattern>/*.jsp</url-pattern>
<url-pattern>he*.jsp</url-pattern>
另外注意:
<url-pattern>/aa/*/bb</url-pattern>
这个是精确匹配,url必须是 /aa//bb,这里的不是通配的含义