jsp 退出系统(注销和退出整个系统)(退出top框架)
退出和注销按钮都是放在top的窗口中,用
注销页面:
<tdalign="center" width="5%"><ahref="main/exit.jsp?id=1" 注销</a></td>
<tdalign="center" width="5%"><ahref="main/exit.jsp?id=2" 退出</a></td>
处理页面:
<body>
<%
if(session.getAttribute("username")==null||session.getAttribute("username")==""){
response.sendRedirect("../login/login.jsp");
return;
}
else {
if(request.getParameter("id").equals("1")){
session.invalidate();
out.println("<script language='javascript'>alert('确定要注销吗?');"+"window.top.location.href='../login/login.jsp';</script>");
}
// out.println("<scriptlanguage='javascript'>alert('确定要退出吗?');"+"window.location.href='../login/login.jsp';</script>");
else{
session.invalidate();
out.print("<scriptlanguage='javascript'>top.close();</script>");
}
}
%>
</body>
这种方法只退出top的框架,左右框架都没退出,查点资料,原理方法很简单:
解决方法1:
只要在注销页面和退出加个target="_top"就可以了
<td align="center" width="5%"><ahref="main/exit.jsp?id=1" target="_top">注销</a></td>
<tdalign="center" width="5%"><ahref="main/exit.jsp?id=2" targer="_top">退出</a></td>
这样它会先在另一个窗口跳出脚本提示!
而退出整个系统脚本上有点问题
<body>
<%
if(session.getAttribute("username")==null||session.getAttribute("username")==""){
response.sendRedirect("../login/login.jsp");
return;
}
else {
if(request.getParameter("id").equals("1")){
session.invalidate();
out.println("<scriptlanguage='javascript'>alert('确定要注销吗?');"+"window.top.location.href='../login/login.jsp';</script>");
}
// out.println("<scriptlanguage='javascript'>alert('确定要退出吗?');"+"window.location.href='../login/login.jsp';</script>");
else{
session.invalidate();
%>
<scriptlanguage="javascript">
top.opener=null; //不过这个我暂时还不知道什么意思,应该是刷新原来的页面
top.close();
</script>
<%
}
}
%>
</body>
解决方法2:
刚问了一个网友,他给我提供的一种脚本的方法,不用提交到其他页面处理,只在本页面,很不错的 !!!
<script language="javascript">
function exit(){
window.open('../login/login.jsp','_top')
}
</script>
<input type="button" value="退出" οnclick="exit();" />
Session.Remove("SessionName ");
Session.RemoveAll();
Session.Clear()
注销用户登录
前台:
<asp:Button ID="btnLogout" runat="server" Text="注销" onclick="btnLogout_Click"/>
后台:
protected void Page_Load(object sender, EventArgs e) { Response.Buffer = true; Response.ExpiresAbsolute = DateTime.Now.AddDays(-1); Response.Expires = 0; Response.CacheControl = "no-cache"; } protected void btnLogout_Click(object sender, EventArgs e) { Session.Clear(); Response.Redirect("../Login.aspx"); }
asp.net 删除cookies同时注销登录禁用IE后退事件框架里处理
protected void Button1_Click(object sender,EventArgs e)
{
HttpCookie aCookie;
string cookieName;
int limit = Request.Cookies.Count;
for (int i = 0; i < limit; i++)
{
cookieName = Request.Cookies[i].Name;
aCookie = new HttpCookie(cookieName);
aCookie.Expires = DateTime.Now.AddDays(-1);//设置Cookie过期
Response.Cookies.Add(aCookie);
}
//if (Request.IsAuthenticated == false)
//{
Response.Write(" <mce:scripttype=\"text/javascript\"><!--
top.location.href= 'Login.aspx ';
// --></mce:script> ");
Response.End();
//}
}
Response.Write(" <scripttype=\"text/javascript\"> top.location.href= 'Login.aspx ';</script> ");
Response.End();
“如何在用户在关闭所有页面时就注销登录”,想想可以通过一个JS来实现!
当用户正常关闭,或者离开当前时会触发一个客户端事件:window.onclose();
在onclose() 这个事件中就可以弹出一个窗口注销当前的用户。
window.open(“logout.aspx”,"logout","status=no,scrollbars=no,resizable=no,width=1,height=1,left=10000,top=10000");
而有人想用document的 onUnLoad()事件,那是针对document对象的。所以页面上的任何连接都会出触发事件。
但是刚才的window.close() 方法 在刷新页面的时候也会触发,所以这个方法不大好,最后找到这样一个方法
script
window.onunload =function(){if(self.screenTop9000)alert(‘Closed.‘)}
/script
好象只有在IE里可以,其他浏览器有兼容性问题