Java 如何使用重定向处理模板
我想解决以下问题,它是关于从数据库中删除实体的:Java 如何使用重定向处理模板,java,templates,servlets,Java,Templates,Servlets,我想解决以下问题,它是关于从数据库中删除实体的: 用户为某个实体选择删除 将从数据库中删除,并从列表中消失 页面内会出现一个撤消框架(如),用户可以在其中选择撤消删除 我不知道如何认识到这一点,因为目前我是这样解决的: 删除按钮链接到URL:Delete/entity\u id 我已经在我的请求处理程序中为这个URL编写了一个if case,用于删除实体 删除完成后,我发送一个响应。sendRedirect(/list),这样会显示更新的列表 这样,我就无法通过重定向发送其他数据。通常我会通
- 删除按钮链接到URL:Delete/entity\u id
- 我已经在我的请求处理程序中为这个URL编写了一个if case,用于删除实体
- 删除完成后,我发送一个
,这样会显示更新的列表响应。sendRedirect(/list)
重定向
这是不可能的
这种情况是如何解决的?我的web应用程序中很少有这种情况,下面是我如何解决的 我有一个名为MessageQueue的类,如下所示
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;
}
}
公共类消息队列{
公共静态哈希表消息=新哈希表();
公共静态无效消息(字符串键,对象obj)
{
messages.put(键,obj);
}
公共静态对象getMessage(字符串键)
{
if(key==null)
返回null;
Object obj=messages.get(key);
if(obj==null)
返回null;
消息。删除(键);
返回obj;
}
}
现在这个类保留在内存中。在重定向之前,我创建了一些重定向之后需要的对象。将随机Guid创建为字符串,然后将此对象存储在messagequeue中
然后,我将此Guid添加为URL的参数
字符串justDeletedId=“someId”;
字符串guid=(新guid()).toString();
MessageQueue.put(guid,justDeletedId);
sendRedirect(“\list\?msgid=“+guid”)
现在,在重定向之后,您可以检查messageID并从messagequeue中删除该对象,然后做任何您想做的事情
我选择允许使用此对象一次。。。避免内存泄漏
在当前版本中。。。我还实施了上次访问逐出策略,该策略使用quartz作业定期清理此消息队列您可以使用的
setAttribute()
和getAttribute()
方法。毕竟,这是一种通过不同HTTP请求传递Java对象的方法
在您的情况下,您可以创建这样一个撤消对象并将其存储在会话中。在您描述的重定向之后,将检索会话对象并将其内容传递给模板。+1这似乎是一个可靠的解决方案,我唯一不确定的是状态是否为“创建”。一个web应用程序不应该如此有状态,但我想你必须在某个地方划清界限。如果它回答了你的问题,你能选择这个作为答案吗