我使用的是这样的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网址:http://www.mywebapp.com/sample.html(此处仅我请求,我需要此网址)
有人可以建议我如何在servlet中获取HTML url路径。
答案 0 :(得分:3)
如果我理解正确,您希望在发出后续请求(form
帖子)时获取一个请求的网址(加载html的请求)。
HTTP是无状态的,因此无法可靠地执行此操作。
需要这样做有一点代码味道,但是如果你真的需要这个URL,那么你必须将URL作为隐藏的input
传递给{{1} }}。有多种方法可以做到这一点,无论你是使用JSP / JSTL还是使用JavaScript做客户端,但基本上你试图得到form
这样的:{/ p>
form
答案 1 :(得分:3)
这是一个问题,因为用户在您编写时加载了页面http://www.mywebapp.com/sample.html
,并且在此初始请求时,您将从request.getRequestURL().toString
获得这个值
在使用表单(来自客户端)的下一个请求中,url不再是http://www.mywebapp.com/sample.html
,而是form action
atributte中指定的那个。
有许多建议在表单或类似的东西中传递隐藏值,但您可以轻松地使用简单的HTTP。每当您执行GET请求时,您在浏览器(或其他客户端)窗口中都会获得一个新URL,但是当您执行POST请求时,浏览器中的URL不会更改。所以现在在你的代码中,如果你知道这是一个POST请求,并且你想从这个请求到达的地方获取页面,你可以很容易地从Http Header“Referer”中读取它:
String URLfromWherePostWasMade = request.getHeader("Referer");
这应该与所有“隐藏字段”示例相同
答案 2 :(得分:0)
您的HTML页面&#39;被称为&#34;推荐人&#34;你可以用这种方式得到它
HttpServletRequest.getHeader("Referer");
在您的情况下,它将返回表单已提交的页面
http://www.mywebapp.com/sample.html