在java中为每个请求发送唯一值

时间:2014-04-30 09:34:51

标签: java servlets

我有一个要求,我必须为每个请求发送唯一值,为了安全起见,我必须在我的课程中验证。关于如何做到这一点的任何想法?

2 个答案:

答案 0 :(得分:2)

这个问题有很多解决方案,因为它取决于它需要的独特性。

您可以使用UUID.randomUUID()创建一个非常喜欢在多台计算机上唯一的ID。

你可以做到

String str = uuid.toString();

并用

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

您可以使用像AtomicLong这样的计数器。如果在基数36中对其进行编码,则会得到更短的ID,但这在重新启动或进程之间并不是唯一的。

对此的修改是您可以使用以System.currentTimeMillis() * 1000开头的AtomicLong,这样您的ID在重新启动时应该是唯一的。

您还可以将JDBC数据库用于唯一值。缺点是这是相当复杂和缓慢的。

答案 1 :(得分:0)

您需要做的就是将上次发送的值加1。这会将你的问题转移到" 耗尽n位计数器需要多长时间"一旦你估计了你提出请求的频率,这只是一个简单的数学问题。

验证很简单 - 只需保留足够的历史记录。数据库最适合您。