我目前正在开发一个 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>
可以看到,form action应该调用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。
关于java - 使用 HTTPServlet 调用的相对路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43003744/