我是servlets新手,我对HttpSession有疑问,
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
// processRequest(request, response);
String name = request.getParameter("Name");
String phone = request.getParameter("Phone");
String dummy = "some";
HttpSession ses = request.getSession();
ses.setAttribute("SesName", name);
ses.setAttribute("SesPhone", phone);
ses.setAttribute("SesName", dummy);
RequestDispatcher rd = request.getRequestDispatcher("./SessionApiImp");
rd.forward(request, response);
} 现在在另一个servlet中,
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
// processRequest(request, response);
HttpSession sess = request.getSession();
PrintWriter pw = response.getWriter();
pw.println(sess.getAttribute("SesName"));
pw.println(sess.getAttribute("SesPhone"));
} -So分配给它的值是什么?我试过了,它返回了与dummy关联的值。原因何在?
谢谢,阿尼尔。
发布于 2012-05-17 15:42:56
原因是您为属性SesName设置的最后一个值为dummy
ses.setAttribute("SesName", name);
ses.setAttribute("SesPhone", phone);
ses.setAttribute("SesName", dummy); // HERE!来自the javadoc
如果具有相同名称的对象已绑定到会话,则将替换该对象。
发布于 2012-05-17 15:44:20
这实际上非常直观:如果您将新值放在现有键下,它会覆盖先前的值。否则,不可能更新会话中已经存在的条目。
ses.setAttribute("SesName", name);
//...
ses.setAttribute("SesName", dummy);https://stackoverflow.com/questions/10631677
复制相似问题