我写了一个jsp的登陆程序,利用数据库中设定的账号来登录,但却始终有问题,代码如下,请高手指点: 登陆

我写了一个jsp的登陆程序,利用数据库中设定的账号来登录,但却始终有问题,代码如下,请高手指点:登陆界面代码:MyJsp.jsp<%@pagelanguage="java... 我写了一个jsp的登陆程序,利用数据库中设定的账号来登录,但却始终有问题,代码如下,请高手指点: 登陆界面代码:
MyJsp.jsp
<%@ page language="java" import="java.util.*" pageEncoding="GB18030"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>page</title>
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
</head>
<body>
<form method="post" action="check1.jsp">
<p>账号<input type="text" name="user" size="20"></p>
<p>密码<input type="password" name="pwd" size="21"></p>
<p><input type="submit" value="登录">  <input type="reset" value="重置"></p>
</form>
</body>
</html>
处理页面代码:
check.jsp
<%@ page contentType="text/html; charset=gbk" language="java" import="java.sql.*" pageEncoding="GB18030"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb18030" />
<title>验证页面</title>
</head>

<body>
<%
String strDBDriver="sun.jdbc.odbc.JdbcOdbcDriver";
String strDBUrl="jdbc:odbc:test1";
String sql="select * from t1";
Connection conn=null;
Statement stmt=null;
ResultSet rs=null;
try{
Class.forName(strDBDriver);
}
catch(java.lang.ClassNotFoundException e)
{
System.out.println(e.getMessage());
}
try{
String user,pwd,u,p;
rs=null;
conn=DriverManager.getConnection(strDBUrl,"sa","");
stmt=conn.createStatement();
rs=stmt.executeQuery(sql);
while(rs.next())
{
user=rs.getString("name");
pwd=rs.getString("password");
u=request.getParameter("user");
//u=u.trim();
p=request.getParameter("pwd");
//p=p.trim();
if(user.equals(u)&&pwd.equals(p))
{
out.println("登录成功!");
}
else
{
out.print("登录失败!");
}
}

}
catch(SQLException ex){
System.err.println(ex.getMessage());
}

%>
</body>
</html>
获取的密码始终和数据库里面的密码不一样,请指教
展开
 我来答
七诗翔惘
2011-03-11 · TA获得超过223个赞
知道小有建树答主
回答量:285
采纳率:0%
帮助的人:290万
展开全部
你做的好乱这样,连接数据库的分开啊,再调用查询方法,
第一:u和p 怎么没属性的
第二:数据库,sa怎么没密码啊,我连接的是 sql server ,没密码是连不上的
第三:你查询语句 select * from t1
你应该加个条件,根据什么查询啊,不然是查询表里的所有的数据,
应该是
"select * from t1 where name=?"
后还要加 stmt.setString(1, name);

下面是我做的一些代码,我先建了三个类,实体类,连接数据库类和查询类
//查询方法
public class UserDao {

Connection con=null;
PreparedStatement pst=null;
ResultSet rs=null;
public User findUser(String userName, String password){
User user=null;
try {
con=BaseDao.getConn();
String sql="select * from users where userName=? and password=?";
pst=con.prepareStatement(sql);
pst.setString(1, userName);
pst.setString(2, password);
rs=pst.executeQuery();
while(rs.next()){
user=new User();
user.setUserID(rs.getInt("userID"));
user.setUserName(rs.getString("userName"));
user.setPassword(rs.getString("password"));
user.setStatus(rs.getInt("status"));
}
} catch (ClassNotFoundException e) {
// TODO 自动生成 catch 块
e.printStackTrace();
} catch (SQLException e) {
// TODO 自动生成 catch 块
e.printStackTrace();
}
finally{
BaseDao.closeAll(con, pst, rs);
}

return user;
}
//处理部分
<%
request.setCharacterEncoding("GBK");
String name=request.getParameter("uName");
String pass=request.getParameter("uPass");
UserDao userdaoimpl=new UserDaoImpl();
User user=userdaoimpl.findUser(name);
if(pass.equals(user.getUPass()))
{
session.setAttribute("user",user);
response.sendRedirect("../index.jsp");
}
else
{
response.sendRedirect("../login.jsp");
}
%>

希望对你有所帮助,你要这个案例可以发你邮箱,我连接的是sql sever 2005数据库的,
追问
3Q..........邮箱zhangwang_li@126.com
追答
发给你了,别忘了附加数据库,
情龙人
2011-03-11 · 超过28用户采纳过TA的回答
知道答主
回答量:96
采纳率:0%
帮助的人:75.8万
展开全部
if(user.equals(u)&&pwd.equals(p))
{
out.println("登录成功!");
}
else
{
out.print("登录失败!");
}
这句话写的,和你本身逻辑有问题。
给你个思路,因为你查询的是多个结果。
所以你应该在这里面先判断。
if(user.equals(u))
{
if(pwd.equals(p)){
out.println("登录成功!");
break;
}else{
out.print("登录失败!");
break;
}
}
不过也有个小问题要你解决,就是如果用户名不对,你怎么处理,按照你写这个,加上个标识符,标志是否查询到该用户,如果没查询到该用户就在while外out 登陆失败即可
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
584808656
2011-03-11 · TA获得超过218个赞
知道小有建树答主
回答量:132
采纳率:0%
帮助的人:138万
展开全部
呵呵,应该是没有把rs移动到第一行,试试在while前面加上
rs.first();
rs.previous();
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式