java - 如何在servlet中获取html请求URL

标签 java servlets

我正在使用这样的 HTML 表单,

<form action="/myservlet?userid=12345" method="post" enctype="multipart/form-data">
<input type="file" name="file">
<input type="submit" value="Submit">
</form>

这个 HTML 表单的路径例如 http://www.mywebapp.com/sample.html

在我的 servlet 中,当我使用 String url = req.getRequestURL().toString(); 并打印字符串时,它会打印表单操作 URL http://www.mywebapp.com/myservlet?userid=12345而不是 HTML URL。

预期的 HTML URL:http://www.mywebapp.com/sample.html (从这里只有我请求并且我需要这个 URL)

任何人都可以建议我如何获取 servlet 中的 HTML url 路径。

最佳答案

如果我理解正确的话,当您发出后续请求(form post)时,您希望获取一个请求(加载 html 的请求)的 URL。

HTTP 是无状态的,因此没有办法可靠地做到这一点。

需要执行此操作有点代码味道,但如果您确实需要该 URL,则必须将该 URL 作为隐藏的输入 传递到表单。有多种方法可以做到这一点,无论您使用 JSP/JSTL 还是使用 JavaScript 在客户端执行某些操作,但基本上您都在尝试获取如下所示的 form:

<form action="/myservlet?userid=12345" method="post" enctype="multipart/form-data">
   <input type="file" name="file">
   <input type="hidden" name="url" value="http://www.mywebapp.com/sample.html"/>
   <input type="submit" value="Submit">
</form>

关于java - 如何在servlet中获取html请求URL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14454979/

相关文章:

java - 使用左连接、自定义包装器和动态搜索词的条件查询

java.lang.ClassNotFoundException : org. junit.runners.BlockJUnit4ClassRunner

jsp - 如何在JSP页面上显示bean对象的Arraylist

javascript - 如何使用ajax将js数组发送到servlet?

servlets - 使用特殊的自动启动 servlet 在启动时进行初始化并共享应用程序数据

java - 当光标位于分钟区域时,具有 dateModel "H:mm"的 JSpinner 更新小时而不是分钟

java - ThreadLocalRandom与共享静态Random实例性能对比测试

java - 这是用不同单位实现距离的好方法吗

tomcat - 如何让 Apache Tomcat 从 'www.myapp.com' 而不是 'www.myapp.com/myapp' 为我的网页提供服务?

java - SpringMVC - dispatcher servler 的 url pattern 样式