如何更新会话属性

时间:2014-05-17 05:33:03

标签: java jsp session servlets

我保存了一些会话属性。我有一个jsp页面,通过它调用servlet。这个servlet更新了一个会话变量,但我无法在jsp.Pls帮助中看到这些变化的反映。

在我的servlet中

    List<DriverList> abc = dao.getABC();
    request.getSession().removeAttribute("abc");
    request.getSession().setAttribute("abc", abc);

在我的jsp中

function update()
{
    var url = "updateServlet";
    var req = $.ajax({
    type: 'GET',
    url: url,
    cache: false,
    type: "GET",
    success: function()
    {
        latlng = [];
        latlng = [<c:forEach var="test" items="${abc}">
                     [<c:out value="${test.latitude}"/>,<c:out value="${test.longitude}"/>,"<c:out value= "${test.name}" />",<c:out value="${test.cellNo}"/>],
                 </c:forEach> ];

    },
    error: function (status) {
         }

    });

}  

${abc}的值与之前相同。如何获得新价值?

确切的流程 -

  1. 当调用登录servlet abc时,设置sessionAttribute的值。

  2. 现在重定向到base.jsp。我第一次使用abc。现在每30秒后调用一次update()函数。此更新函数通过ajax调用servlet,其中会话属性abc已更新。

  3. 在ajax请求的成功函数中,我想使用这个新的abc值但是再次获取旧的值。

2 个答案:

答案 0 :(得分:3)

要访问JSP中的abc变量,请尝试:

${sessionScope.abc}

另请注意,在设置之前删除通常是多余的。所以:

request.getSession().removeAttribute("abc");
request.getSession().setAttribute("abc", abc);

可以简单地成为:

request.getSession().setAttribute("abc", abc);

答案 1 :(得分:0)

我有类似的问题。 事实证明,当你使用

HttpSession 

控制器中的对象,不应使用

进行注释
@SessionAttributes