当前位置: 代码迷 >> Java Web开发 >> jsp中的注册登录系统(mysql)
  详细解决方案

jsp中的注册登录系统(mysql)

热度:6289   发布时间:2013-02-25 21:10:58.0
jsp中的注册登录系统(mysql)求助
以下是代码
<%@page contentType="text/html;charset=GBK" language="java" import="java.sql.*"%>
<html><head><meta http-equiv="Content-Type" content="text/html;charset=GBK"><title>跳转到主页</title></head>
<body>
<%!
String str1;
String str2;
String sql;
boolean res;
%>
<%
request.setCharacterEncoding("GBK");
str1=request.getParameter("loginname");
str2=request.getParameter("loginpassword");
res=false;
%>
<%
//JDBC_ODBC连接MySql数据库,不需要设置数据源
//数据库连接代码 开始

String server="localhost"; //MYSQL 服务器的地址
String dbname="logindata"; //MYSQL 数据库的名字
String user="root"; //MYSQL 数据库的登录用户名
String pass="123456"; //MYSQL 数据库的登录密码
String port="3306"; //SQL Server 服务器的端口号,默认为1433

//数据库连接字符串
String url ="jdbc:mysql://"+server+":"+port+"/"+dbname+"?user="+user+"&password="+pass+"&useUnicode=true&characterEncoding=GBK";
//加载驱动程序
Class.forName("org.gjt.mm.mysql.Driver").newInstance();
//建立连接
Connection conn= DriverManager.getConnection(url);
//创建语句对象
Statement stmt=conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);
// **** 数据库连接代码 结束 *******
sql="select * from login";
ResultSet rs=stmt.executeQuery(sql);
rs.first();
while(rs.next())
{
if(str1.equals(rs.getString("name")))
{
res=true;
break;
}
}
if(res=true)
{
if(str2.equals(rs.getString("paswnd")))
{
session.setAttribute("name",str1);
rs.close();
stmt.close();
conn.close();
response.sendRedirect("./loginsuccess.jsp");
}
else
{ rs.close();
stmt.close();
conn.close();%>
<jsp:forward page="./loginerrorpaswnd"/>
<%}
}
else
{ rs.close();
stmt.close();
conn.close();%>
<jsp:forward page="./loginerrorname"/>
<%}%>

</body>
</html>
在运行过程中我输入了正确的用户名密码,但是apache报错是
if(str2.equals(rs.getString("paswnd")))
这一行
然后后面root cause是这个:
javax.servlet.ServletException: java.sql.SQLException: After end of result set
不懂为什么报错

新手求各位大神帮助!

------解决方案--------------------------------------------------------
if(str2.equals(rs.getString("paswnd")))
确定password没有写错??
------解决方案--------------------------------------------------------
把first()去掉,你用first指向了第一行,再执行next那就已经到下一条记录,而你的查询只有一条记录,所以就到结果集的末尾。
------解决方案--------------------------------------------------------
建议楼主试试3楼的意见!
  相关解决方案
本站暂不开放注册!
内测阶段只得通过邀请码进行注册!
 
  • 最近登录:Mon Dec 10 16:54:28 CST 2018
  • 最近登录:Mon Dec 10 16:54:28 CST 2018
  • 最近登录:Mon Dec 10 16:54:28 CST 2018
  • 最近登录:Mon Dec 10 16:54:28 CST 2018
  • 最近登录:Mon Dec 10 16:54:28 CST 2018