首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >HttpSession接口

HttpSession接口
EN

Stack Overflow用户
提问于 2012-05-17 15:39:20
回答 2查看 868关注 0票数 0

我是servlets新手,我对HttpSession有疑问,

代码语言:javascript
复制
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中,

代码语言:javascript
复制
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关联的值。原因何在?

谢谢,阿尼尔。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-05-17 15:42:56

原因是您为属性SesName设置的最后一个值为dummy

代码语言:javascript
复制
ses.setAttribute("SesName", name);
ses.setAttribute("SesPhone", phone);
ses.setAttribute("SesName", dummy); // HERE!

来自the javadoc

如果具有相同名称的对象已绑定到会话,则将替换该对象。

票数 5
EN

Stack Overflow用户

发布于 2012-05-17 15:44:20

这实际上非常直观:如果您将新值放在现有键下,它会覆盖先前的值。否则,不可能更新会话中已经存在的条目。

代码语言:javascript
复制
ses.setAttribute("SesName", name);
//...
ses.setAttribute("SesName", dummy);
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10631677

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档