Servlet配置web.xml,使用通配符出问题

时间:2021-04-07 21:04:19
配置web.xml,在<servlet-mapping>中的<url-pattern>尝试使用通配符。配置如下

<!-- servlet mapping指定了Servlet类的访问url -->
<servlet-mapping>
<servlet-name>HelloServlet</servlet-name>
<url-pattern>/servlet/*.hk</url-pattern><!-- 使用通配符 -->
</servlet-mapping>

但是启动tomcat的时候提示如下错误

严重: ContainerBase.addChild: start: 
org.apache.catalina.LifecycleException: Failed to start component [StandardEngine[Catalina].StandardHost[localhost].StandardContext[/WebProj01]]
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:153)
at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:725)
at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:701)
at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:717)
at org.apache.catalina.startup.HostConfig.deployWAR(HostConfig.java:940)
at org.apache.catalina.startup.HostConfig$DeployWar.run(HostConfig.java:1816)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471)
at java.util.concurrent.FutureTask.run(FutureTask.java:262)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
at java.lang.Thread.run(Thread.java:744)
Caused by: java.lang.IllegalArgumentException: Invalid <url-pattern> /servlet/*.hk in servlet mapping
at org.apache.catalina.core.StandardContext.addServletMapping(StandardContext.java:3153)
at org.apache.catalina.core.StandardContext.addServletMapping(StandardContext.java:3128)
at org.apache.catalina.startup.ContextConfig.configureContext(ContextConfig.java:1376)
at org.apache.catalina.startup.ContextConfig.webConfig(ContextConfig.java:1184)
at org.apache.catalina.startup.ContextConfig.configureStart(ContextConfig.java:779)
at org.apache.catalina.startup.ContextConfig.lifecycleEvent(ContextConfig.java:306)
at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:95)
at org.apache.catalina.util.LifecycleBase.fireLifecycleEvent(LifecycleBase.java:90)
at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5150)
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:147)
... 10 more

上面提示到 Invalid <url-pattern> /servlet/*.hk in servlet mapping。
我看了下这里通配符的使用规则,一种是/*,另一种是*.后缀名。
不知道我这个问题出在哪里了??

3 个解决方案

#1


好像是不能用/*.后缀,至于为什么,不太清楚

#2


引用 1 楼 qnmdcsdn 的回复:
好像是不能用/*.后缀,至于为什么,不太清楚

可我在网上查找这个通配符的用法的时候,里面的确说可以这么用,还有《java web王者归来》这本书中也说了这种用法,如下图。
Servlet配置web.xml,使用通配符出问题

#3


引用 2 楼 wzd772461552 的回复:
Quote: 引用 1 楼 qnmdcsdn 的回复:

好像是不能用/*.后缀,至于为什么,不太清楚

可我在网上查找这个通配符的用法的时候,里面的确说可以这么用,还有《java web王者归来》这本书中也说了这种用法,如下图。
Servlet配置web.xml,使用通配符出问题


你说的那两种用法是*.后缀或者/*吧, 不过你用的是/*.后缀吧,不在这两种情况中

#1


好像是不能用/*.后缀,至于为什么,不太清楚

#2


引用 1 楼 qnmdcsdn 的回复:
好像是不能用/*.后缀,至于为什么,不太清楚

可我在网上查找这个通配符的用法的时候,里面的确说可以这么用,还有《java web王者归来》这本书中也说了这种用法,如下图。
Servlet配置web.xml,使用通配符出问题

#3


引用 2 楼 wzd772461552 的回复:
Quote: 引用 1 楼 qnmdcsdn 的回复:

好像是不能用/*.后缀,至于为什么,不太清楚

可我在网上查找这个通配符的用法的时候,里面的确说可以这么用,还有《java web王者归来》这本书中也说了这种用法,如下图。
Servlet配置web.xml,使用通配符出问题


你说的那两种用法是*.后缀或者/*吧, 不过你用的是/*.后缀吧,不在这两种情况中