window.location.reload(true)会清除HttpSession吗?

时间:2016-04-15 07:41:20

标签: javascript java liferay httpsession

我有javascript调用函数来设置会话值,如

下面是客户端代码:

   <a id="sampleId "href="javascript:confirmTechSimulationSwitch('testLink');

 function confirmTechSimulationSwitch(){
 var url = window.location.protocol + "//" + window.location.host +   "/dummy-proj/Toggle.jsp";
 var xmlHttpReq = new XMLHttpRequest();  
    if (window.XMLHttpRequest) {
      xmlHttpReq = new XMLHttpRequest();
      xmlHttpReq.open("POST",url, false);
      xmlHttpReq.send(null);
    } 
     if (xmlHttpReq.readyState == 4) { 
            if (xmlHttpReq.status == 200){
              var newResponse =xmlHttpReq.responseText.slice(0,4);
               if(xmlHttpReq.responseText !=null && newResponse =='true'){
          window.location.reload(true); 
               }
            }
          }

在这个Toggle.jsp中,我有一个恶作剧:

<%
System.out.println("inside jsp page");

        session.setAttribute("abc","true");
        request.setAttribute("abc","true");
        request.getSession().setAttribute("abc","true");
System.out.println(" abc123........ "+session.getAttribute("abc"));//prints true
System.out.println("abc456....... "+request.getAttribute("abc"));//prints true
System.out.println("abc789......."+request.getSession().getAttribute("abc"));//prints true
    }
%>

现在我尝试在以同样的方式从同一个应用程序重新加载页面后尝试获取此会话值,如下所示:

public void Test(HttpServletRequest request){
HttpSession session = request.getSession();
session.getAttribute("abc");// prints null
request.getAttribute("abc");//prints null
request.getSession().getAttribute("abc")//prints null
   }

从另一个java方法测试。我把它当作null。 任何人都可以建议我如何获得为重新加载页面后为abc设置的会话值?

1 个答案:

答案 0 :(得分:0)

首先让我们回答标题:不,它不会使服务器的会话无效,你的错误不在这里。

第二:这有什么意义?

if(res !=null && res =='true'){
     var res="true";
     [..]
}

没有必要这样做

最后,我们需要更多信息才能最终解决您的问题。就像激发你的javascript被执行的条件一样,或者javascript中的整个HTML,如果它包含在页面中。