【发布时间】:2014-05-24 05:24:53
【问题描述】:
我的目标是使用以下模式的所有 url 到达相同的 servlet servlet1:
myserver.com/path1/*
其中 * 可以是“x”、“x/xx”、“x/xx/x.cfg”等任何内容。
最后,我只想处理正则表达式 [0-9a-zA-Z]+.(cfg|xml|htm) 之后的 url,但我可以在 servlet 中这样做。 servlet 解析原始 URL 并动态构建请求的配置文件。
当我有以下映射时
<servlet-name>servlet1</servlet-name>
<url-pattern>/path1</url-pattern>
正如预期的那样,网址 myserver.com/path1 指向 servlet1。
当我使用以下看起来对我有意义的映射时:
<servlet-name>servlet1</servlet-name>
<url-pattern>/path1/*</url-pattern>
我仍然可以通过 url myserver.com/path1/ 访问 servlet 1。
我无法通过 url myserver.com/path1/path2 访问 servlet i>,这个网址实际上让我回到了欢迎文件条目。
实际上,无论我输入什么模式,任何带有第二条路径的东西都会让我回到欢迎文件条目。对于第二条路径,我的意思是 myserver.com/path1/*,其中 * 超过 0 个字符。
我目前看到的唯一选择是让 Welcome-files 条目处理我的请求(丑陋)或使用
.cfg .xml *.htm
这使得像 myserver.com/XXX.cfg 这样的 URL 可以工作(myserver.com/X/XXX.cfg 不起作用)。这也很丑陋,并且会干扰该 web 应用程序的未来开发。
如何让映射按我想要的方式工作?
【问题讨论】:
-
您的配置文件中似乎有一个错误,因为
/path1/*应该像魅力一样工作 -
在这里阅读URL patterns
-
Andremoniy:知道我可以去哪里看吗?除了欢迎文件之外,该应用程序的 web.xml 只有几个正常工作的
和 条目。
标签: java tomcat servlets tomcat6 url-pattern