繁体   English   中英

HttpSession API

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM