使用 HTTPServlet 调用的相对路径

Relative path called with HTTPServlet

我目前正在开发一个 servlet,它 returns 给定 ID 的大量数据。 在URL

下调用

localhost:8080/RTC_W/api?id=123

源代码中没有给出特殊路径。 我的 web.xml 映射如下:

<servlet-mapping> <servlet-name>APICaller</servlet-name> <url-pattern>/api</url-pattern> </servlet-mapping>

它由一个欢迎文件调用,看起来像这样(仅相关部分)并提供一个小框来输入 ID:

<body>
RTC W Front End

<form action="/api" method="get"> 
  Work Item ID:<br>
  <input type="text" name="id" value=""><br>

  <input type="submit" value="Submit">
</form> 
</body>

如您所见,表单操作应该调用servlet 所在的路径/api。虽然调用的 URL 是错误的,它总是调用

localhost:8080/api?id=123

所以 /RTC_W/ 不见了。如果我将它添加到 <form action="RTC_W/api" method="get">,这个 URL 会被调用:

localhost:8080/RTC_W/RTC_W/api?id=123

所以路径被调用了两次。我做错了什么?

<form action="api" method="get">

这是你应该使用的。

当 URL 以 / 开头时,它始终是绝对 URL,即紧跟在 <hostname>:<port>

之后

如果 url 不是以 / 开头,它将附加到当前 URL。