登录后重新加载JSP

时间:2014-02-06 14:05:02

标签: javascript html jsp iframe

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

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

在home.jsp页面的开头,我的div标签里面有topNavBarRight我放了以下代码:

    <%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.只是不重新加载,只手动重新加载...(放在我在代码中注释掉的地方“重装一次或其他什么”)。

OH YEAH如果您发送重定向到HOME.JSP(现在它的sendRedirect('index.html'))从LOGIN.JSP,IT OPENS IN IFRAME,有没有办法将sendredirect的目标更改为浏览器本身?这也可以解决它。因为在iframe中加载的页面就像这个http://imageshack.com/a/img585/1177/tkyl.png

一样

所以我所说的是欢迎客人应该成为欢迎用户名。 我只是无法想出这一个..请帮忙! :D先谢谢。

1 个答案:

答案 0 :(得分:0)

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

 if( "true".equals((String)session.getAttribute("login")) ){ 

同样session.getAttribute()返回Object,而不是String,因此在将字符串拉出时需要输入到String。

我建议使用向后语法"true".equals(str)而不是str.equals("true")的原因是,如果变量str为null,则str.equals("true")会因为使用而导致空指针异常在null实例上运行点运算符,而即使str为null,"true".equals(str)也不会抛出空指针异常。

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

由于index.html因为未解析服务器端而无法访问会话,因此最好将其设置为.jsp,因为如果用户登录或者您可能需要检查索引页面,或者不