如何在servlet中获取html请求URL

时间:2013-01-22 09:12:20

标签: 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网址:http://www.mywebapp.com/sample.html(此处仅我请求,我需要此网址)

有人可以建议我如何在servlet中获取HTML url路径。

3 个答案:

答案 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