我使用HttpUrlConnection连接servlet,servlet将sessionid返回给我的app,然后我的app启动默认浏览器。在servlet返回sessionid之前,我在会话中设置了一个属性。
HttpSession session = request.getSession();
session.setAttribute("ErrorInfo", "wrong!");
在Android应用程序中,它获取sessionid并启动默认浏览器。
Uri uri = Uri.parse("https://192.168.1.100:8443/test/error.jsp;jsession=" + sessionid);
Intent intent = new Intent(Intent.ACTION_VIEW, uri);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(intent);
并在error.jsp中,它将获得如下属性:
<%=session.getAttribute("ErrorInfo") %>
<%=session.getId() %>
当我测试它时,我认为它会显示“错误!”,但是jsp页面显示“null”并且浏览器生成了一个新会话。地址栏中的sessionid与session.getId的值不同( )。
例如,地址栏中的网址为“https://192.168.1.100:8443/test/error.jsp;jsessionid=C4E6732EBB4C17F409AB41143735C096”。
在这种情况下,我认为浏览器不应该生成新的会话,但确实如此。
好的,我自己解决了这个问题。问题是由浏览器引起的。首先,我使用浏览器访问网站,浏览器生成会话,然后浏览器将使用此会话直到浏览器关闭。因此,我的应用程序提供的sessionid将被浏览器忽略。为了解决这个问题,我让应用程序获取浏览器的会话并在HttpUrlConnection中使用此会话,因此整个过程中只有一个会话。
答案 0 :(得分:0)
你可以试试'?'代替 ';'附加queryString部分时URL中的字符?