为什么不能把这个斜线省略掉呢?

类别:Java 点击:0 评论:0 推荐:
在resin 3.0.9 及以前版本下,下面几种写法都是可以的,而放到Tomcat 5.0 下则抛出这个异常:
严重: Parse error in application web.xml
java.lang.IllegalArgumentException: Invalid <url-pattern> * in filter mapping
 at org.apache.commons.digester.Digester.createSAXException(Digester.java:2540)
 at org.apache.commons.digester.Digester.createSAXException(Digester.java:2566)
 at org.apache.commons.digester.Digester.endElement(Digester.java:1061)
 at org.apache.xerces.parsers.AbstractSAXParser.endElement(Unknown Source)
 at org.apache.xerces.impl.XMLDocumentFragmentScannerImpl.scanEndElement(Unknown Source)
 at org.apache.xerces.impl.XMLDocumentFragmentScannerImpl$FragmentContentDispatcher.dispatch(Unknown Source)
 at org.apache.xerces.impl.XMLDocumentFragmentScannerImpl.scanDocument(Unknown Source)
 at org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source)
 at org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source)
 at org.apache.xerces.parsers.XMLParser.parse(Unknown Source)
 at org.apache.xerces.parsers.AbstractSAXParser.parse(Unknown Source)
 at org.apache.commons.digester.Digester.parse(Digester.java:1548)
 at org.apache.catalina.startup.ContextConfig.applicationConfig(ContextConfig.java:263)
 at org.apache.catalina.startup.ContextConfig.start(ContextConfig.java:624)
 at org.apache.catalina.startup.ContextConfig.lifecycleEvent(ContextConfig.java:216)
 at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:119)
 at org.apache.catalina.core.StandardContext.start(StandardContext.java:4290)
 at org.apache.catalina.core.StandardHostDeployer.start(StandardHostDeployer.java:830)
 at org.apache.catalina.core.StandardHost.start(StandardHost.java:991)
 at org.apache.catalina.manager.ManagerServlet.start(ManagerServlet.java:1322)
 at org.apache.catalina.manager.HTMLManagerServlet.start(HTMLManagerServlet.java:530)
 at org.apache.catalina.manager.HTMLManagerServlet.doGet(HTMLManagerServlet.java:104)
 at javax.servlet.http.HttpServlet.service(HttpServlet.java:689)
 at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
 at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:237)
 at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:157)
 at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:214)
 at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104)
 at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)
 at org.apache.catalina.core.StandardContextValve.invokeInternal(StandardContextValve.java:198)
 at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:152)
 at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104)
 at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:540)
 at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:102)
 at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)
 at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:137)
 at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104)
 at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:118)
 at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:102)
 at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)
 at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
 at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104)
 at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)
 at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:929)
 at org.apache.coyote.tomcat5.CoyoteAdapter.service(CoyoteAdapter.java:160)
 at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:799)
 at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Http11Protocol.java:705)
 at org.apache.tomcat.util.net.TcpWorkerThread.runIt(PoolTcpEndpoint.java:577)
 at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:683)
 at java.lang.Thread.run(Thread.java:595)

必须写成这个:
  <filter-mapping>
    <filter-name>Set Character Encoding</filter-name>
    <url-pattern>/*</url-pattern>
  </filter-mapping>
写成这个不行:
  <filter-mapping>
    <filter-name>Set Character Encoding</filter-name>
    <url-pattern>*</url-pattern>
  </filter-mapping>
而我改成这样,却是正确的,通过了:
  <filter-mapping>
    <filter-name>Set Character Encoding</filter-name>
    <url-pattern>*.action</url-pattern>
  </filter-mapping>

因此,我认为这是个bug。

本文地址:http://com.8s8s.com/it/it13621.htm