java.lang.IllegalArgumentException: 在servlet mapping中,<url-pattern>无效。

44
<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`文件片段。在启动时,URL模式`*NEXTEVENT*`会抛出错误: ``` java.lang.IllegalArgumentException: Invalid in servlet mapping ``` 如果有人能提示错误将不胜感激。
2个回答

102
<url-pattern>*NEXTEVENT*</url-pattern>

URL模式无效。它可以以星号结尾或以星号开头(表示文件扩展名映射)。 url-pattern规范:
  • 以'/'字符开头并以'/*'后缀结尾的字符串用于路径映射。
  • 以'*.'前缀开头的字符串用作扩展名映射。
  • 仅包含'/'字符的字符串表示应用程序的“默认”servlet。在这种情况下,servlet路径是请求URI减去上下文路径,路径信息为null。
  • 所有其他字符串仅用于精确匹配。
有关详细信息,请参见Java Servlet Specification Version 3.1的第12.2节。

3
以下是Servlet映射的简明解释:http://javapapers.com/servlet/what-is-servlet-mapping/ - ripper234

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接