如何在java中检测弹出调用?

时间:2014-01-28 13:31:14

标签: java javascript servlets web-applications popup

我正在使用window.open

从javascript调用我的servlet
  window.open('myServlet','window','window Params')

我想在myservlet中检测调用是否来自弹出窗口,而不传递任何参数与servlet一起。我们可以在servlet中检测到它吗?

2 个答案:

答案 0 :(得分:0)

您可以使用查询参数

window.open('myServlet?from=popup','window','window Params');

使用servlet中的参数来检测。

修改

由于您不想使用查询参数,因此无法在服务器端知道从哪里(点击)调用它。

答案 1 :(得分:0)

查询参数最好(如Suresh Atta所述)。一种可能的替代方法 - 因为你不能使用参数 - 可能是为你的servlet有两个servlet映射 - 只有弹出窗口的映射之一。

<servlet>
    <servlet-name>myServlet</servlet-name>
    <servlet-class>foo.bar.MyServlet</servlet-class>
</servlet>
<servlet-mapping>
    <servlet-name>myServlet</servlet-name>
    <url-pattern>/myServlet</url-pattern>
</servlet-mapping>
<!-- Popup-specific mapping -->
<servlet-mapping>
    <servlet-name>myServlet</servlet-name>
    <url-pattern>/myServlet-popup</url-pattern>
</servlet-mapping>

您的弹出窗口可以引用特定于弹出窗口的映射:

window.open('myServlet-popup','window','window Params');

然后在你的servlet中你可以检查HttpServletRequest以确定使用的路径 - 从而是否通过弹出窗口调用servlet。

如前所述,参数方法更好。但这可能是一种可能的选择。