• 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难上加难

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

  • 相关阅读:
    UNDO表空间的ORA1122错误解决(二)转
    Oracle 碎片整理
    如何解决Ora00600 4194错误转自eygle
    Oracle维护常用sql语句
    ORA01152: file 1 was not restored from a sufficiently old backup
    oracle的一些信息抽取脚本.sql
    Flash Recovery Area空间不足导致数据库不能打开
    HP—UNIX的信息收集脚本
    详细解读 STATSPACK 报告
    OLTP和OLAP
  • 原文地址:https://www.cnblogs.com/unflynaomi/p/4476852.html
Copyright © 2020-2023  润新知