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="注 销" οnclick="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难上加难

所以注销还是用超链接连到另一个页面去吧

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值