论坛首页 入门技术论坛

网站的退出问题!

浏览 3849 次
该帖已经被评为新手帖
作者 正文
   发表时间:2007-12-04  
用户登陆的校验是放到一个servlet里面的,项目用到frame,所以地址栏的地址一直是这个servlet的地址。当点击退出以后,我把程序转向登陆页。但是地址栏是没有变化的,在次刷新又进去系统了。这个问题我实在不清楚应该怎么弄了,我想改变地址栏的地址,http://localhost:8080/webGUI/forwardCnm
但是无论是转发,重定向,还是js的location地址栏始终没有变化。就在这个地址栏上刷新还能得到用户名和密码。实在是搞不清楚怎么回事了,望有精验的前辈给个解决方案!
   发表时间:2007-12-04  
我很清楚的把问题写好,为什么又被会员集体评为入门贴了呢?这是一个非常简单的问题吗???
0 请登录后投票
   发表时间:2007-12-04  
确实是 非常 简单的问题
0 请登录后投票
   发表时间:2007-12-05  
有打这几个字的时间,为什么不讲一下怎么解决呢?你完全可以不来回复的!!!
0 请登录后投票
   发表时间:2007-12-05  
很简单  因为如果回答问题要打更多字
0 请登录后投票
   发表时间:2007-12-05  
windows.frames[0]
0 请登录后投票
   发表时间:2007-12-11  
谢谢抛出异常的爱
但是这个问题还是没有解决。我在把问题更为详细的说一下。一个index.jsp为首页登陆。以post方式提交到一个servlet,在这个servlet里面判断用户名密码名,如果正确:
session.setAttribute("_USER", username);
request.getRequestDispatcher("cnmServlet").forward(request, response);
转给另一个servlet,(这个servlet是采用另一个小系统来组合成一个项目)这个servlet是转发到一个jsp页,这个jsp里面:
<jsp:include flush="true" page="top.jsp" />
<jsp:include flush="true" page="blank.html" />
是由两个页面组合起来的。top.jsp是一个引航条。我的退出就做在了这个jsp里面:
<a href="system/loginout.jsp">退出</a>
这个jsp想着把session清空了,然后在转到登陆页面。
我在这个jsp里面试了三种方法:
<jsp:scriptlet>
    session.removeAttribute("_USER");
    session.invalidate();
   
   // response.sendRedirect(request.getContextPath()+"/index.jsp");
  // request.getRequestDispatcher("../index.jsp").forward(request,response);

    </jsp:scriptlet>
   <script type="text/javascript">
window.location.href = "${pageContext.request.contextPath}/index.jsp";   
   </script>
转发,重定向,还有使用js,但是都不起作用。地址栏始终是
http://localhost:8080/webGUI/forwardCnm
这个servlet的地址。在这个servlet地址栏上一刷新就能在次进入系统了。有人能给解释一下吗??非诚误扰!!!!!
0 请登录后投票
   发表时间:2007-12-11  

window.location.href
改成
window.parent.location.href

0 请登录后投票
   发表时间:2007-12-11  
codeutil 的几句话让我解决了这个一直想不通的问题。谢谢!
按这个解决方法,可以想像成jsp的include就好比dom里面另加一个窗口吧。
0 请登录后投票
   发表时间:2007-12-22  
codeutil的方法是正解。
引用自:
http://www.howtocreate.co.uk/tutorials/javascript/browserinspecific

引用

If the page is the only page being displayed, top, parent, self and window will be equal. If the page is being held within a frameset, self and top will not be equal. If the page is the page containing the frameset, and it itself is not being held within a frameset, self and top will be equal. If someone is loading your page into their frameset and you don't want them to, you can use the self-top relationship to remove your page from their frameset and replace their frameset page with your page using:

if( self != top ) { top.location.replace(self.location.href); }


Note, I could have used this:
if( self != top ) { top.location.href = self.location.href; }


However, that makes the browser add the new entry into its history, so if they clicked their back button, they would be forwarded back to your page again. Unfortunately, Gecko browsers (Mozilla/Firefox/Netscape 6+) will only allow the second option as they have very high security levels relating to cross-site scripts.
0 请登录后投票
论坛首页 入门技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics