我正在使用window.open
从javascript调用我的servlet window.open('myServlet','window','window Params')
我想在myservlet中检测调用是否来自弹出窗口,而不传递任何参数与servlet一起。我们可以在servlet中检测到它吗?
答案 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。
如前所述,参数方法更好。但这可能是一种可能的选择。