应用程序中的多个极短暂的会话属性

时间:2015-10-21 11:43:57

标签: java session java-ee servlets

我有一个jsp页面,显示数据库中的所有记录。每列下面都有一个删除按钮。删除记录的servlet代码是。

new userDao().get(User.Class,Long.parseLong("id")).delete();
// for some reasons I cannot use requestDispatcher, so I store the delete successful message in a session
request.getSession().setAttribute("message","Delete successful.");
// view.html is a servlet that gets all records
response.sendRedirect("view.html");

在view.html servlet中

request.setAttribute("message",get the message attribute from HTTPSession);
request.getSession().removeAttribute("message");
// go back to jsp
request.getRequestDispatcher("view.jsp").forward(request,response);

我的很多网页都是这样的。我理解会话用于跨越多个请求的数据,但这是我做得好还是坏的做法?我做错了吗?

1 个答案:

答案 0 :(得分:1)

框架也是这样做的。基本上没有多少其他地方可用于跨页面重定向存储这些消息。所以大多数框架只使用某种状态(视图状态,流状态或框架调用的任何状态),然后将整个对象存储在会话中。

根据您的示例,使用任何短暂的会话,也不是 - 很可能是您正在使用一个持久的会议,只有它的内容是短暂的。最后,您在会话上设置的内容不会传播到客户端(客户端只保存会话ID),并且通常它可能会保存在内存中,因此会话数据的频繁更改不应该&# 39;这是一个问题。