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