gpt4 book ai didi

java - 如何在 Tomcat 的 中指定查询字符串?

转载 作者:塔克拉玛干 更新时间:2023-11-01 22:52:40 25 4
gpt4 key购买 nike

我正在运行 Tomcat 5.5.4 并且有一个 servlet 运行没有问题。但是,我想设置一个映射,以便仅在提交包含特定查询字符串的 URL 时启动 servlet。

现在在 web.xml 中我有: <servlet-mapping> <servlet-name>MyServer</servlet-name> <url-pattern>/go/*</url-pattern> </servlet-mapping>

如果浏览器提交 http://localhost/MyServer/go?P=123 servlet 已启动,一切正常。但是,如果 URL 与刚才显示的完全一致,我只想启动该 servlet。不幸的是,现在如果 URL 是 http://localhost/MyServer/go?P=AnyDarnThing servlet 仍然启动。我尝试设置以下内容: <url-pattern>/go?P=123</url-pattern>但这会导致请求的资源 (/MyServer/go) 不可用。

我在上述 URL 模式上尝试了多种变体(引用字符串,...),但我总是遇到上述错误。我注意到如果我(出于调试目的)删除“?”如在 <url-pattern>/goP=123</url-pattern>我不再收到错误消息并且服务器启动(但是,当然,它不会响应“查询字符串”,因为它的格式不正确。)这向我暗示“?”导致映射出现问题。我试过用其等效的 URL 特殊字符替换它,如下所示: <url-pattern>/go%3FP=123</url-pattern>但是当我尝试删除“?”时,这给出了与上面描述的相同的结果。完全。

我意识到我可以让 servlet 在提交任何查询字符串时启动,然后“忽略”除我关心的请求之外的所有请求,但有一个原因我宁愿不启动 servlet 开始和。所以,我的问题是,如何配置 servlet 以便它仅在包含特定查询字符串时启动?

谢谢。

最佳答案

你不能那样做。 url-pattern 非常有限。

如果您希望根据 GET 参数执行不同的操作,您可以手动执行。在 servlet 的 doGet() 方法中有一个简单的 if 子句,并根据查询字符串/get 参数调用不同的方法。

关于java - 如何在 Tomcat 的 <servlet-mapping> <url-pattern> 中指定查询字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9880295/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com