jsp 链接 数据库 怪现象 我用jsp 写了 注册页面,将信息插入数据库,刚开始老出现 中文乱码,搞了半天,终于不乱码了。但是,又出现一怪现象,我用刚才注册的用户信息登陆,老是与数据库中的信息不匹配。可是 ,如果 我把用户信息 直接从数据库企业管理器 添加进数据库,而不是从我编写的注册页面。这样,就看可以正常登陆。这是为什么呢?? 为什么呢??? 从网页添加进的信息和从数据库中直接添加的信息 有什么不同呢??? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 首先我感觉还是你的编码问题,把你从数据库取出来的数据,和你从form里面获得数据,都打印出来看看,是不是有一方是乱码,然后还有可能是空格之类的问题 我把form里的数据和数据库中取出的数据 ,都打印出来 是一样的,我设置的密码都是数字。可是,在比较它们是否相等时,老是不相等。代码如下: userbenBO.java 文件 public boolean checkUser(String u,String p){ boolean b=false; try { //sql注入漏洞 ct=new ConnDB().getConn(); //top 1表示查到一条记录就返回,提高查询速度 ps=ct.prepareStatement("select top 1 passwd from users where username=?"); System.out.println("比较密码前"); ps.setString(1,u); rs=ps.executeQuery(); if(rs.next()){ //取出数据库的密码 String dbPasswd=rs.getString(1); System.out.println(dbPasswd); if(dbPasswd.equals(p)){ System.out.println("密码相等"); b=true; } else{ System.out.println("mi ma bu xiang deng"); } } } catch (Exception e) { e.printStackTrace(); // TODO: handle exception }finally{ //关闭资源 this.close(); } return b;}login.java 文件代码response.setContentType("text/html"); response.setCharacterEncoding("gbk"); request.setCharacterEncoding("gbk"); PrintWriter out = response.getWriter(); //得到用户名和密码,验证用户是否合法 String u=request.getParameter("username"); String p=request.getParameter("password"); System.out.println(u);System.out.println(p); //验证用户 UserBeanBO ubb=new UserBeanBO(); if(ubb.checkUser(u, p)){ //用户合法 //1.把成功登录的用户信息放入session【后面用到】 UserBean ub=ubb.getUserBean(u); request.getSession().setAttribute("userInfo", ub); request.getRequestDispatcher("index1.jsp").forward(request, response); }else{ //用户不合法 request.getRequestDispatcher("index.jsp").forward(request, response); System.out.println("error"); } 你确定是://取出数据库的密码String dbPasswd=rs.getString(1);System.out.println(dbPasswd);这个打印和System.out.println(p);这里是相同的?并且没有前后空格的区分?扫了一眼,你貌似全文都没有一个地方加trim的。还有这里:if(dbPasswd.equals(p)){你确保dbPasswd不为空么?你应该随手写上if(dbPasswd != null && dbPasswd.equals(p)){........真不知道该叫你大姐呢还是小妹呢。。如果实在解决不了,把你整个工程发上了,我调试一下 jquery的load方法 HSSFWorkbook的问题请帮帮忙。 配spring 事务时报错! 解决方案 跪求啊! 谁有Jfreechar 的开发文档? 正则表达式的使用 ★★★★★★关于应该怎样学Java,学习经验交流园地。Java入门、初学、提高之终结篇★★★★★★ struts 的ActionErrors的classcastException问题 java打印机报错,急,跪求 基于jboss的axis web service权限问题 关于JDOM的一个问题,谢谢 arrayList的问题 xfire webservice中用spring注入sessionFactory报错
userbenBO.java 文件 public boolean checkUser(String u,String p){
boolean b=false;
try {
//sql注入漏洞
ct=new ConnDB().getConn();
//top 1表示查到一条记录就返回,提高查询速度
ps=ct.prepareStatement("select top 1 passwd from users where username=?");
System.out.println("比较密码前");
ps.setString(1,u);
rs=ps.executeQuery();
if(rs.next()){
//取出数据库的密码
String dbPasswd=rs.getString(1);
System.out.println(dbPasswd);
if(dbPasswd.equals(p)){
System.out.println("密码相等");
b=true;
}
else{
System.out.println("mi ma bu xiang deng");
}
}
} catch (Exception e) {
e.printStackTrace();
// TODO: handle exception
}finally{
//关闭资源
this.close();
}
return b;
}login.java 文件代码response.setContentType("text/html");
response.setCharacterEncoding("gbk");
request.setCharacterEncoding("gbk");
PrintWriter out = response.getWriter();
//得到用户名和密码,验证用户是否合法
String u=request.getParameter("username");
String p=request.getParameter("password");
System.out.println(u);System.out.println(p);
//验证用户
UserBeanBO ubb=new UserBeanBO();
if(ubb.checkUser(u, p)){
//用户合法
//1.把成功登录的用户信息放入session【后面用到】
UserBean ub=ubb.getUserBean(u);
request.getSession().setAttribute("userInfo", ub);
request.getRequestDispatcher("index1.jsp").forward(request, response);
}else{
//用户不合法
request.getRequestDispatcher("index.jsp").forward(request, response);
System.out.println("error");
}
String dbPasswd=rs.getString(1);
System.out.println(dbPasswd);
这个打印和
System.out.println(p);
这里是相同的?并且没有前后空格的区分?
扫了一眼,你貌似全文都没有一个地方加trim的。
还有这里:if(dbPasswd.equals(p)){
你确保dbPasswd不为空么?你应该随手写上if(dbPasswd != null && dbPasswd.equals(p)){
........
真不知道该叫你大姐呢还是小妹呢。。
如果实在解决不了,把你整个工程发上了,我调试一下