【问题标题】:Relative path called with HTTPServlet使用 HTTPServlet 调用的相对路径
【发布时间】:2017-08-17 15:25:02
【问题描述】:

我目前正在开发一个 servlet,它可以将大量数据返回给给定的 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/ 丢失了。如果我将它添加到&lt;form action="RTC_W/api" method="get"&gt;,则会调用此 URL:

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

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

【问题讨论】:

    标签: java http url servlets web.xml


    【解决方案1】:
    <form action="api" method="get">
    

    这是你应该使用的。

    当 URL 以 / 开头时,它始终是绝对 URL,即紧跟在 &lt;hostname&gt;:&lt;port&gt; 之后

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

    【讨论】:

      猜你喜欢
      • 2013-01-20
      • 1970-01-01
      • 1970-01-01
      • 2019-03-30
      • 1970-01-01
      • 2011-08-24
      • 2019-06-09
      • 1970-01-01
      • 2014-02-20
      相关资源
      最近更新 更多