小弟想在同个页面来实现登陆或注销,通过判断session中是否有用户名来显示是登陆界面还是注销界面,一个form显示的是登陆,调用的是index.jsp页面,另一个form显示的是注销,调用的是本页面,第一个form调用时没问题,但第二个form调用时要点提交按钮两次才执行,不知道为什么
代码如下:
<%String name1=(String)session.getAttribute("user_name");//get the user_name from session's attribute  if(name1==null||name1=="")//whether user_name is null or void
 {  %>
<form action="index.jsp" method=post name=form1> 
用户名:
<input type=hidden name=user_hide id="hide" size=10>
<input type=text name=user id="user" size=10>
<br>&nbsp;&nbsp; 密码: 
<input type=password name=pw id="pw" size=10><br>&nbsp;&nbsp;&nbsp; 
    <input type="submit" name="submit" value="登陆" onClick="encode();" >&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
<input type=button name=sign_up value=注册>
</form>
<%} 
else
{
 out.print(name1+"您好");
%>
<br>
<form action="" method=post name=form2>
<input type=hidden name=uu value="1">
<input type=submit name=sign_out value=注销>
</form>
<%
}String a=request.getParameter("uu");   
  if(a==null)
  a=""; 
  if(a.equals("1"))
                {
                  String name="";
    session.setAttribute("user_name",name);//注销的话,将session中name值清空
   }%> 

解决方案 »

  1.   

    <form action="" method=post name=form2>把action里的页面名加上试试看还有把下面这段代码 拿到页面上面。页面的执行顺序是从上到下执行 如果获得不到值肯定没反映。估计有关吧,试试看吧~
    if(a==null) 
      a=""; 
      if(a.equals("1")) 
                    { 
                      String name=""; 
        session.setAttribute("user_name",name);//注销的话,将session中name值清空 
      }