Правилом запроса было бы лучше (как описано Suresh Atta). Одна из возможных альтернатив - поскольку вы не можете использовать параметр - может быть, иметь два сервлет-отображения для вашего сервлета - с одним из отображений только для всплывающего окна.
<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');
Тогда внутри сервлета можно осмотреть HttpServletRequest
, чтобы определить путь, который был использован - и, таким образом, является ли сервлет, вызываемый через всплывающее окно или нет.
Как уже говорилось, метод параметров лучше. Но это может быть альтернативой.
Javascript работает на стороне клиента и сервлетах, работающих на стороне сервера. –
Я согласен, но я думал, может быть, браузер отправляет некоторые вещи, специфичные для всплывающих окон на серверную сторону. – emilly
@ user3222249 Вы имеете в виду заголовки запросов? Нет ничего похожего на место браузера, когда запрос был запущен. по крайней мере, AFAIK. –