我的 Web 应用程序中很少有这样的场景,这就是我解决它的方法
我有一个名为消息队列的类,如下所示
public class MessageQueue {
public static Hashtable<String, Object> messages = new Hashtable<String, Object>();
public static void putMessage(String key, Object obj)
{
messages.put(key, obj);
}
public static Object getMessage(String key)
{
if(key == null)
return null;
Object obj = messages.get(key);
if(obj == null)
return null;
messages.remove(key);
return obj;
}
}
现在这个类留在记忆中。在重定向之前,我创建了一些重定向后需要的对象。创建一个随机 Guid 作为字符串,然后将此对象存储在消息队列中
然后我将此 Guid 添加为 URL 的参数
String justDeletedId = "someId"; 字符串 guid = (new Guid()).toString(); MessageQueue.put(guid,justDeletedId); sendRedirect("\list\?msgid=" + guid);
现在重定向后,您可以检查 messageID 并从消息队列中删除对象并做任何您想做的事情
我选择允许使用此对象一次...以避免内存泄漏
在当前版本中......我还实施了 Last Access Eviction 策略,该策略使用石英作业定期清理此消息队列