java.lang.IllegalArgumentException:servlet 映射中的 <url-pattern> 无效

Posted

技术标签:

【中文标题】java.lang.IllegalArgumentException:servlet 映射中的 <url-pattern> 无效【英文标题】:java.lang.IllegalArgumentException: Invalid <url-pattern> in servlet mapping 【发布时间】:2010-09-06 19:19:01 【问题描述】:
<servlet>
    <servlet-name>myservlet</servlet-name>
    <servlet-class>workflow.WDispatcher</servlet-class>
    <load-on-startup>2</load-on-startup>
</servlet>

<servlet-mapping>
    <servlet-name>myservlet</servlet-name>
    <url-pattern>*NEXTEVENT*</url-pattern>
</servlet-mapping>

上面是来自 Tomcat 的web.xml 的 sn-p。 URL 模式 *NEXTEVENT* 在启动时抛出

java.lang.IllegalArgumentException: servlet 映射中的 无效

如果有人能提示错误,我们将不胜感激。

【问题讨论】:

【参考方案1】:
<url-pattern>*NEXTEVENT*</url-pattern>

网址格式无效。它可以以星号结尾或以星号开头(表示文件扩展名映射)。

url-pattern 规范:

以“/”字符开头并以“/*”结尾的字符串 后缀用于路径映射。 以“*.”前缀开头的字符串用作扩展名 映射。 仅包含“/”字符的字符串表示“默认” 应用程序的 servlet。在这个 如果 servlet 路径是请求 URI 减去上下文路径和 路径信息为空。 所有其他字符串仅用于完全匹配。

有关详细信息,请参阅Java Servlet Specification 版本 3.1 的第 12.2 节。

【讨论】:

这里是 servlet 映射的一个很好的解释:javapapers.com/servlet/what-is-servlet-mapping【参考方案2】:

可以实现的解决方法是添加一个 servlet 过滤器来进行 URL 重写,例如 将 NEXTEVENT 重写为 /NEXTEVENT/(NEXTEVENT 之前的那个)/(NEXTEVENT 之后的那个)或类似的东西。

【讨论】:

以上是关于java.lang.IllegalArgumentException:servlet 映射中的 <url-pattern> 无效的主要内容,如果未能解决你的问题,请参考以下文章

IllegalArgumentException:此 NavController 未知导航目的地 xxx