Пусть сервлет предварительной обработки первого JSP сгенерирует уникальный токен.
String token = UUID.randomUUID().toString();
Сохраните его в сеансе
session.setAttribute("token", token);
Передайте его как скрытое входное значениев форме
<input type="hidden" name="token" value="${token}" />
или в качестве параметра запроса ссылки, когда вы используете ссылки вместо форм
<a href="second.jsp?token=${token}">link</a>
Позвольте сервлету предварительной обработки второго JSP сравнитьэто с тем, что в сеансе
String token = (String) session.getAttribute("token");
session.removeAttribute("token");
if (token != null && token.equals(request.getParameter("token"))) {
// Valid, continue requesst.
} else {
// Invalid, block request.
}
Это была базовая концепция, предполагающая один постраничный разговор.Чтобы охватить несколько страниц / вкладок браузера, вы вместо этого хотели бы использовать Set<String>
или, возможно, Map<String, Set<String>>
в качестве токена (с URI в качестве ключей и токенов в качестве значений).