黑马程序员技术交流社区

标题: jsp输出疑问 [打印本页]

作者: 一步步    时间: 2013-11-8 10:51
标题: jsp输出疑问
请问这段代码中在没有输入“密码”和“账户”时只要点击“登陆”后除了提示代码不能为空外,还会自动跳转到首页面,应该输入密码和用户名后在跳转啊!这是怎么回事啊?到底哪里控制着让这个jsp页面跳转到首页面的该怎么改啊!


<%@ page language="java" contentType="text/html; charset=GBK"
import="com.aptech.jb.entity.USER"
pageEncoding="GBK"%>

<script language="javascript">

function login(){
if( document.myForm.uname.value =="" ){
alert("用户名不能为空");
return false;
}else if(document.myForm.upass.value == ""){
alert("密码不能为空");
return false;
} else {
return true;
}
}

</script>
<%
if (session.getAttribute("user") != null) {
%>
<table align="center">
<tr>
<td width=''><font color='red'>当前用户:
<%
USER user = (USER) session.getAttribute("user");
%>
<%=user.getUname()%></font>
</td>
<td width='100'><a href="login.do?sign=logout">[注销]</a></td>
</tr>
</table>
<%
} else {
%>
<form action="login.do" method="post" name="myForm"onsubmit="login();">
          <p>&nbsp;</p>
  <table align="center">
<tr>
<td colspan="2">用户名:</td>
</tr>
<tr>
  <td colspan="2"><input type="text" name="uname" size=10" class="editbox"></td>
</tr>
<tr>
<td colspan="2">密&nbsp;&nbsp;码:</td>
</tr>
<tr>
  <td colspan="2"><input type="password" name="upass" size=10"  class='editbox'></td>
  </tr>
<tr>
<td>
<input type="hidden" name="sign" value="login"/>
<input type="submit" value="登陆"onclick="login()" class='btn'>
<input type="reset" value="重置" class='btn'>
</td>
</tr>
<tr>
  <td><a href="z.jsp">注册用户</a></td>
</tr>
<tr>
<td width='100'><a href="list.do">返回首页</a></td>
</tr>
  </table>
   </form>
<%
}
%>

作者: ~﹏~    时间: 2013-11-8 13:35
<input type="submit" value="登陆"onclick="login()" class='btn'>
当你点击登录的时候,执行了JS函数login(),并且在没输入的情况下返回了false
<form action="login.do" method="post" name="myForm"onsubmit="login();">
在你点击登录按钮的时候,因为【input type="submit" value="登陆"】他的类型是submit所以form要提交数据,提交到哪里呢?onsubmit="login()",他又提交到js函数login()中,
然后又返回了false
接下来会根据form的action属性将数据提交到login.do中去
我没有com.aptech.jb.entity.USER这个类,也不能继续调试了。。。
作者: 落木萧萧    时间: 2013-11-8 15:28
首先,如楼上所说,登录那个submit按钮调用了js的login函数,然后再提交表单的时候又调用了一次。这个只调用一次就行了。
其次,可以写成
  1. onclick="return login();"
复制代码
或者
  1. onsubmit="return login();"
复制代码
试试




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2