[英]HttpSession API
我是servlet的新手,在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"));
}
-那么哪些值分配给它呢? 我尝试过,它返回了与哑元关联的值。 是什么原因?
谢谢,阿尼尔。
原因是您为属性SesName
设置的最后一个值是dummy
:
ses.setAttribute("SesName", name);
ses.setAttribute("SesPhone", phone);
ses.setAttribute("SesName", dummy); // HERE!
从javadoc :
如果同名对象已绑定到会话,则替换该对象。
实际上,这非常直观:如果将新值放在现有键下,它将覆盖以前的值。 否则,将不可能更新会话中已经存在的条目。
ses.setAttribute("SesName", name);
//...
ses.setAttribute("SesName", dummy);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.