如何更新会话属性

Vai*_*ali 5 java session jsp servlets

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

在我的servlet中

    List<DriverList> abc = dao.getABC();
    request.getSession().removeAttribute("abc");
    request.getSession().setAttribute("abc", abc);
Run Code Online (Sandbox Code Playgroud)

在我的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) {
         }

    });

}  
Run Code Online (Sandbox Code Playgroud)

${abc}与以前相同.如何获得新价值?

确切的流量 -

  1. 当登录servlet被调用abcsessionAttribute设置值时.

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

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

che*_*vim 3

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

${sessionScope.abc}
Run Code Online (Sandbox Code Playgroud)

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

request.getSession().removeAttribute("abc");
request.getSession().setAttribute("abc", abc);
Run Code Online (Sandbox Code Playgroud)

可以简单地变成:

request.getSession().setAttribute("abc", abc);
Run Code Online (Sandbox Code Playgroud)