Источник семени не так очень важен. Более важный псевдо алгоритм генератора чисел. Однако я услышал некоторое время назад о генерации семени для некоторых банковских операций. Они взяли много факторов вместе:
, Даже если некоторые из этих параметров не изменяются очень вовремя, можно поместить их в некоторую хорошую хеш-функцию.
, Как генерировать хорошее случайное число?
, Возможно, мы можем принять во внимание inifinite количество вселенных? Если это верно, это все время, новые параллельные вселенные создаются, мы можем сделать что-то вроде этого:
int Random() {
return Universe.object_id % MAX_INT;
}
В каждый момент мы должны быть на другом ответвлении параллельных вселенных, таким образом, у нас должен быть другой идентификатор. Единственная проблема состоит в том, как получить объект Вселенной :)
Вот объяснение проблемы .. .
При нажатии кнопки «Отправить» в форме на веб-сервер отправляется запрос, содержащий все данные, введенные в форму. Не только URL-адрес, но и данные формы являются частью запроса, и этот запрос запоминается браузером. Если пользователь нажимает «обновить», браузер повторяет запрос, отправляя те же данные формы URL и на веб-сервер снова.
Но формы могут быть отправлены двумя разными способами: GET или POST, в зависимости от атрибута "method" тега "form". Существует соглашение, что запрос GET не имеет побочных эффектов; он только извлекает данные, но не вносит никаких изменений в базу данных. С другой стороны, если запрос изменяет данные, он всегда должен использовать запрос POST. Как я уже сказал, это всего лишь условные обозначения, и между ними нет особой технической разницы, но очень важное различие состоит в том, что браузеры будут предупреждать пользователя, если они попытаются повторить POST - при нажатии на кнопку «обновить» появится диалоговое окно. предупреждение пользователя о том, что это может вызвать повторение операции, и подтверждение того, что он действительно хочет выполнить повторную отправку. Браузер не показывает это подтверждение при обновлении запроса GET.
Использует ли ваша форма метод GET, как подозревает @mk? Если да, то изменить его на POST - самое простое решение, поскольку это будет как минимум означать, что пользователь будет предупрежден, если он попытается выполнить обновление.
Но лучшим решением является идиома POST + REDIRECT + GET, предложенная @cletus. Это разделяет обновление базы данных (POST) и представление (GET) на две операции. При нажатии кнопки «Обновить» в браузере просто повторяется команда GET, которая не имеет побочных эффектов.
Здесь вам нужна идиома:
POST + REDIRECT + GET работает следующим образом:
Преимущество этого заключается в том, что при нажатии на перезагрузку не выполняется повторно отправьте форму. Также, если вы нажмете кнопку «Назад» в браузере, вам не будет предложено «отправить снова?» диалоговое окно.
Вот пример JSP этого.
Отправка AJAX означает, что вместо отправки формы обратно на сервер в традиционном смысле вы создаете запрос AJAX обратно на сервер с данными формы. Этот submit делает то, что ему нужно. При нажатии кнопки «Обновить» страница просто перезагружается. Он не будет повторно отправлять запрос AJAX.
Не используйте GET для отправки или иного изменения данных. Вместо этого используйте POST. Вы захотите изменить форму, чтобы читать
<form action="test.jsp" method="get">
См. http://www.google.com/search?q=get+post для получения дополнительной информации.
(Ваш вопрос также является немного неясно - вы имеете в виду обновление в браузере или в контейнере (например, Tomcat)? Что вы имеете в виду, повторно отправьте страницу? Страницы не отправляются, а формы отправляются. Какая система? Я догадался, что вы имели в виду, если вы что-то имели в виду в противном случае дайте нам знать.)
ЕСЛИ вы используете JSP на стороне сервера и используете сервлет контроллера для управления направлением страницы. Вы можете просто изменить режим направления страницы с «Вперед» на «Перенаправление страницы». Таким образом вы можете предотвратить повторную отправку формы. это было бы полезно понять
с уважением!