获取HttpServletRequest响应地址

时间:2012-03-03 15:07:23

标签: java ajax servlets

我使用ajax脚本向servlet发送请求,servlet又向数据库发送请求,然后当数据库将一些数据返回给servlet时,servlet将结果返回给web页面。问题是,除了输出需要不同之外,在另一个页面上再次使用相同的脚本来完成相同的操作。

我的想法是确定请求来自哪个页面,并使用此信息格式化响应。

我已经尝试过HttpServletRequest req。(几乎所有API允许的)尝试获取所需的信息,但它似乎没有返回我需要的东西。我可以使用request.getRequestURL来返回servlet地址,但是我需要这个请求源自的网页,而不是它发送的地址。

我错过了一些明显的东西吗?

1 个答案:

答案 0 :(得分:3)

有一个名为“Referer”的HTTP标头,其中包含触发请求的页面的信息。对于AJAX请求,此标头通常包含触发AJAX请求的页面的URL。您可以使用request.getHeader(“Referer”)获取此标头,因此您可以尝试这是否是您需要的。

但是由客户端发送标题,所以你不能确定它会一直存在。并且这种方法也可能导致可维护性问题,例如,如果您将网页移动到其他URL。因此,参数化JavaScript和servlet可能是更好的设计,即客户端向URL添加一个参数,告诉servlet请求来自哪个上下文或预期的输出格式是什么。