jsp页面变量作用域问题
想实现一个注销的功能,在页面上有个注销按钮,我想一点它就注销,用了js给按钮加了onclick代码,如下
<%
session = request.getSession(true);
if (session.isNew())
{%>
<script LANGUAGE="JavaScript">
// alert("登录超时,请重新登录!");
top.location=‘main.jsp‘;
//session无效,在这里进行页面跳转,返回到登录页面
</script>
<%
}
String type=(String)session.getAttribute("type");
String show=null;
System.out.println("navigator的用户类型为:"+type);
if(type==null)
{
%>
<li class="L1"><a href="register.jsp" target="mainFrame"><img border="0" alt="register" src="images/register.png" align="middle" /><span> 注册</span></a></li>
<li class="L1"><a href="login.jsp" target="mainFrame"><img border="0" alt="login" src="images/login.png" align="middle" /><span> 登录</span></a></li>
<%
}
else
{
%>
<li class="L1"><img border="0" alt="register" src="images/logout.gif" align="middle" /><input class="button" type="button" name="logout" value="注 销" onclick="logout();" /></li>
<li class="L1"><a href="login.jsp" target="mainFrame"><img border="0" alt="login" src="images/login.png" align="middle" /><span> 切换身份</span></a></li><%
System.out.println("navigator已经正确显示!"+type);
}
%>
根据不同的用户显示不同的图片,
<script language="JavaScript">在同一个文件里,不是外部函数
function logout()
{
alert("logout!");
<%System.ou.println(type);session.invalidate();%>
top.location=‘main.jsp‘;
return false;
}
可是每次即使没有点击注销,也会把type显示一次,显示为null,且再次刷新页面,用户类型显示错误
这说明两点
1.不论JSP脚本在页面的哪个位置,它都会被执行,不会因为JS函数的触发或不触发而变化
2.JS脚本与JSp页面无法共享变量,就好像他们在不同页上,所以从JSp到js简单,从js到JSp难上加难
所以注销还是用超链接连到另一个页面去吧
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。