简介:
spring + redis 防止表单重复提交。
实施:
1.根据http://see-you-again.iteye.com/admin/blogs/2323435完成spring和reis的整合
2.核心代码如下:
/**
* 为了实现防止表单重复提交功能,我们需要在数据库中存入一个唯一标识,当表单重复提交时
* 如果发现数据已经存在,那么返回插入失败
*
* 同时我们需要设置这个唯一标识的时效性,然而无论数据是否已经存在都会修改时效值,那么
* 解决办法便是设置uuid,只有插入值或者值相等时哦我们才允许修改
* @param singleid 唯一标识
* @return 操作结果
*/
public boolean add(final String singleid) {
boolean result = redisTemplate.execute(new RedisCallback<Boolean>() {
public Boolean doInRedis(RedisConnection connection)
throws DataAccessException {
RedisSerializer<String> serializer = redisTemplate.getStringSerializer();
String uuid = UUID.randomUUID().toString().replaceAll("-","");
byte[] key = serializer.serialize(singleid);
byte[] value = serializer.serialize(uuid);
boolean res = connection.setNX(key, value);
if(res || connection.get(key).equals(value))
connection.expire(key,122) ;
return res ;
}
});
return result;
}