我有一个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);
我的很多网页都是这样的。我理解会话用于跨越多个请求的数据,但这是我做得好还是坏的做法?我做错了吗?
答案 0 :(得分:1)
框架也是这样做的。基本上没有多少其他地方可用于跨页面重定向存储这些消息。所以大多数框架只使用某种状态(视图状态,流状态或框架调用的任何状态),然后将整个对象存储在会话中。
根据您的示例,使用任何短暂的会话,也不是不 - 很可能是您正在使用一个持久的会议,只有它的内容是短暂的。最后,您在会话上设置的内容不会传播到客户端(客户端只保存会话ID),并且通常它可能会保存在内存中,因此会话数据的频繁更改不应该&# 39;这是一个问题。