JSP 页面上的会话值仅在刷新页面后出现,并且在刷新页面之前显示为空

问题描述 投票:0回答:0

我正在用 spring boot 开发一个 web 项目。我在前端使用 JSP。我将在服务中所做的一些计算保存到会话中,然后使用

getAttribute()
方法在我的 JSP 文件中显示它们。我的问题是这样的:当我第一次打开我的 JSP 页面时,这些值冻结为 null。当我刷新页面时,这些值应该出现了,但是这些值总是需要时间才能到达,我必须手动刷新页面才能显示这些值。

我不认为有办法将这个等待时间归零,也没有办法立即显示会话值。

这是我的示例服务 java 代码:

@Override
    public void testService(HttpServletRequest request, HttpServletResponse response) throws Exception {
        String testValue = "testValue";
        request.getSession().setAttribute("testValue", testValue);
}

这里是一个JSP文件的例子:

<div id="testValue">
                    <%=request.getSession().getAttribute("testValue")%>
 </div>

问题陈述截图:

  • 刷新页面前的值
  • 刷新页面后的值

如图所示,当我手动刷新页面时,我可以看到我想要的值。但是我们不能指望用户手动刷新页面。不知道有没有办法不用等待,直接等待这些session值。我尝试编写一个 ajax 调用,在设置会话值时更新相关方:

<script>
                    function updateSessionVariables() {
                        var url = "/diger/indexpage/searchnew.oim";
                        var xmlHttpRequest = new XMLHttpRequest();
                        xmlHttpRequest.onreadystatechange = function () {
                            if (xmlHttpRequest.readyState == 4) {
                                if (xmlHttpRequest.status == 200) {
                                    document.getElementById("testValue").innerHTML = xmlHttpRequest.responseText;
                                }
                            }
                        };
                    }
                    updateSessionVariables();
                </script>

但是没有任何变化,我不得不再次手动刷新页面才能看到这些值。我怎么解决这个问题?我想直接把这些值显示给用户,不需要等待或者至少不需要手动刷新页面。

java ajax spring jsp servlets
© www.soinside.com 2019 - 2024. All rights reserved.