Javascript 登录后重新加载JSP

Javascript 登录后重新加载JSP,javascript,html,jsp,iframe,Javascript,Html,Jsp,Iframe,人们 我有一个简单的网站,它有一个Home.jsp,在Home.jsp内部有一个iFrame。在iframe中,用户可以选择他想要做的事情。登录示例。每隔一页仅在iframe内加载一次。jsp是iframe持有者,以及页眉和页脚数据 登录后(我使用JSP“session”实现),我重定向到index.html(在iframe内部打开)。在home.JSP中,有一个特定的位置显示“欢迎来宾”或“欢迎用户名”我现在面临的主要问题是,登录后,一切正常,除了“欢迎用户名”不会自动更新。如果我刷新页面,由

人们
我有一个简单的网站,它有一个Home.jsp,在Home.jsp内部有一个iFrame。在iframe中,用户可以选择他想要做的事情。登录示例。
每隔一页仅在iframe内加载一次。jsp是iframe持有者,以及页眉和页脚数据

登录后(我使用JSP“session”实现),我重定向到index.html(在iframe内部打开)。
在home.JSP中,有一个特定的位置显示“欢迎来宾”或“欢迎用户名”
我现在面临的主要问题是,登录后,一切正常,除了“欢迎用户名”不会自动更新。如果我刷新页面,由于会话被保留,它将正确显示。然后,即使是注销链接也会工作,并自动重新加载到home.jsp中

在home.jsp页面的开头,在保存topNavBarRight的div标记中,我放置了以下代码:

    <%if (session.getAttribute("fname") == null){
out.print("Welcome Guest");
}
else{
out.print("Welcome");
%>
<a href="profile.jsp">"<%=session.getAttribute("fname") %> </a>
<a href="logout.jsp">Logout</a>
<%
    if(session.getAttribute("login") == "true"){ //something to reload once or whatever
    session.setAttribute("login", "false"); //so that it doesnt reload again.
    }%>         

因此,您可以看到为什么在我重新加载页面时它会工作。现在我陷入困境的是,如何让它在iframe中加载index.html后自动重新加载一次?在我的login.jsp中,我还将一个名为“login”的属性保存为session.addAttribute(“login”,“true”);但是它不起作用

我有两件事:1。使用META、Javascript(window.loc)等任何东西重新加载循环(放置在if块的主体之外) 2.只是不重新加载,只是手动重新加载…(放在我在代码“重新加载一次或任何东西”中注释掉的地方)

哦,是的,如果您从LOGIN.JSP发送重定向到HOME.JSP(现在是它的sendRedirect('index.html')),它会在IFRAME内部打开,有没有办法将sendRedirect的目标更改为浏览器本身?这也能解决问题。因为在iframe中加载的页面如下所示

所以我想说的是,受欢迎的客人应该成为受欢迎的用户名。
我就是想不出这个。。请帮忙我先谢谢你

您最大的问题是,在Java中,for String==比较指针等价性,因此它只告诉您这两个字符串是否指向内存中的同一地址。要测试它们是否包含相同的值,需要使用
.equals()

另外,
session.getAttribute()
返回的是对象,而不是字符串,所以在从中提取字符串时需要键入cast to String

我建议使用向后语法
“true”.equals(str)
而不是
str.equals(“true”)
的原因是,如果变量
str
为null,那么
str.equals(“true”)
将由于在null实例上使用点运算符而引发null指针异常,而
“true”.equals(str)
即使str为null,也不会引发null指针异常

至于iFrame,我的建议是,不要使用iFrame。学习使用CSS使用滚动条设置div的样式,然后使用jsp:include或Ajax填充这些div


由于index.html无法访问会话,因为它没有解析服务器端,因此最好将其设置为.jsp,因为如果用户登录或未登录,您可能需要在索引页中进行检查。

我很确定我忽略了什么或遗漏了什么,但我无能为力,因为我对会话管理非常陌生,了解如何登录和维护会话花了我一些时间。。在那之后,如果这不起作用,那就太令人沮丧了。哇,是的,老兄,我完全忘记了,尽管我已经遇到过很多次这个问题!!字符串==指针。。。我忘了。。。谢谢。。见小错误。。
 if( "true".equals((String)session.getAttribute("login")) ){