2014-04-30 2 views
-1

У меня есть требование, когда мне нужно отправить уникальное значение для каждого запроса, и я должен проверить его в своем классе для целей безопасности. любая идея о том, как это сделать?Отправка уникального значения для каждого запроса в java

+3

Извините, но здесь не достаточно информации, чтобы ответить на вопрос. Откуда взялось уникальное значение, какова его цель, что вы сделали до сих пор, чтобы попытаться решить эту проблему? – jgm

+0

Определите уникальное значение? Также четко сформулируйте свою проблему. мы здесь не для того, чтобы предлагать решения для ваших требований. так что напишите нам, что вы пробовали? –

+1

Более подробная информация. Вы хотите отправить уникальное значение из сервлета в jsp и проверить его? – cbach

ответ

0

Все что вам нужно сделать, это добавить 1 к значению, которое вы отправили последним. Это переместит вашу проблему на «, сколько времени потребуется, чтобы вывести счетчик n-бит», и это просто простая математическая проблема, как только вы оцениваете, как часто вы делаете запрос.

Валидация проста - просто сохраните достаточно истории. База данных сделает это наиболее просто для вас.

2

Существует ряд решений этой проблемы, поскольку это зависит от того, насколько она уникальна.

Вы можете использовать UUID.randomUUID(), чтобы создать идентификатор, который очень нравится быть уникальным на нескольких машинах.

Вы можете сделать

String str = uuid.toString(); 

и обратить вспять с

UUID uuid2 = str.fromString(str); 
assert uuid.equals(uuid2); // true 

Вы можете использовать счетчик как AtomicLong. Если вы закодируете его в базе 36, вы получите гораздо более короткие идентификаторы, но это не уникально между перезапусками или между процессами.

Модифицируйте это, вы можете использовать AtomicLong, который начинается с System.currentTimeMillis() * 1000, поэтому вы должны быть уникальными для перезапуска.

Вы также можете использовать базу данных JDBC для уникальных значений. Недостатком является то, что это довольно сложно и медленно.

+0

Спасибо, Питер за ответ. Я хочу пойти с UUID, и я думаю о том, чтобы поместить скрытую переменную в JSP, и это значение будет передано UUID, но как я могу проверить это число в моем классе действий? существует такой метод, как UUID.getUUID, и будет ли этот номер таким же, как тот, который сгенерирован в JSP – user2727493

+0

@ user2727493 Я добавил примеры перевода в/из String. –

+0

Спасибо за ответ peter. как я могу проверить его на стороне Java ?. Я думаю, я могу поместить скрытую переменную в JSP с UUID в качестве значения, но как я могу проверить ее в java, как только я получу контроль над контроллером. – user2727493

Смежные вопросы