首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > Java Web开发 >

验证用户名和密码的简单有关问题,有代码!大家帮忙看看吧!奇怪的异常.

2012-01-05 
验证用户名和密码的简单问题,有代码!!大家帮忙看看吧!奇怪的错误...当我在前台只是调用isPasswdOk()函数时

验证用户名和密码的简单问题,有代码!!大家帮忙看看吧!奇怪的错误...
当我在前台只是调用isPasswdOk()函数时能够通过。即:
if(isIn.isPasswdOk(syslogin.getUserName(),syslogin.getPassWd())){//right
但两个同时调用时却报错了。
if(isIn.isUsernameOk(syslogin.getUserName())){//用户名判断
if(isIn.isPasswdOk(syslogin.getUserName(),syslogin.getPassWd())){//密码判断
代码如下:(会不会使数据库关闭不当导致的错误呢?)


用户登录类:
package   cn.com.jysky.news.manage;
import   java.sql.*;
import   org.apache.log4j.Logger;

import   cn.com.jysky.datasource.*;
import   cn.com.jysky.log4j.UseLog4j;
import   cn.com.jysky.common.CodeFilter;
import   cn.com.jysky.persistence.NEWSAdmin;
public   class   ISLogin   {
private   DBConnection   db=null;


private   static   Logger   logger=UseLog4j.getLogInstance( "ISLogin ");
//判断用户名。
public   boolean   isUsernameOk(String   userName){
boolean   isOk=false;
if(db==null)
db=DBConnection.getInstance();
        String   strSql   =   "select   *   from   newsadmin   where   userName= ' "+userName+ " '; ";
try{
//db.prepareStatement(strSql);
ResultSet   rs=   db.read(strSql);
try{
rs.last();
//getRow()检索当前行编号。第一行为   1   号,第二行为   2   号,依此类推。
if(rs!=null&&rs.next()){
isOk=true;
rs.close();
}
}catch(SQLException   e){
e.printStackTrace(System.out);
logger.info( "查询用户返回指针时出现异常! ");
}
}
catch(Exception   e){
e.printStackTrace(System.out);
logger.info( "查询用户时出现异常! ");
}
finally{
db.stop();
}
return   isOk;
}

//判断密码。
public   boolean   isPasswdOk(String   userName,String   passWd){
boolean   isOk=false;
if(db==null)
db=DBConnection.getInstance();
String   strSql=   "select   *   from   newsadmin   where   userName= ' "+userName+ " '   and   passWd= ' "+passWd+ " '; ";
try{
//db.prepareStatement(strSql);
//db.setString(1,   CodeFilter.toHtml(strSql));
//db.setString(2,   CodeFilter.toHtml(strSql));
ResultSet   rs=   db.read(strSql);
try{
rs.last();
if(rs!=null&&rs.next()){
isOk=true;
rs.close();
}
}catch(SQLException   e){
e.printStackTrace(System.out);
logger.info( "查询密码返回指针时出现异常! ");
}
}
catch(Exception   e){
e.printStackTrace(System.out);
logger.info( "查询用户密码时出现异常! ");//同时调用两个函数时捕获这个异常。单独调用该方法不会捕获该异常。
}
finally{
db.stop();
}
return   isOk;
}
}

数据库管理类:
package   cn.com.jysky.datasource;

import   java.sql.*;

import   org.apache.log4j.*;
import   cn.com.jysky.log4j.*;
/**
  *   @author   彭金艳   E-mail:   pongjy123@163.com
  *   @version   创建时间:2007-1-3   下午04:49:58
  *   连接数据库实例.
  */
public   class   DBConnection   {
//静态工厂模式的对象.
private   static   DBConnection   db=null;
//数据库连接对象.
private   static   Connection   conn=null;
private   Statement   stmt=null;

private   static   Logger   logger=UseLog4j.getLogInstance( "DBConnection ");


//构造函数.
private   DBConnection(){
try{
if(conn==null){
Class.forName( "com.mysql.jdbc.Driver ");
conn=DriverManager.getConnection( "jdbc:mysql://localhost:3306/jynews ", "root ", "111111 ");
//创建一个   Statement   对象来将   SQL   语句发送到数据库。
stmt=conn.createStatement();
}
}catch(Exception   e){
e.printStackTrace();
logger.info( "加载驱动的时候出错! ");
}
}


//取得DBConnection实例.
public   static   DBConnection   getInstance(){
if(db==null){
try{
db=new   DBConnection();
}catch(Exception   e){
//conn=null;
logger.info( "数据库连接出错! ");
return   null;
}
}
return   db;
}

//执行插入,删除和更新操作.
synchronized   public   void   execute(String   sql){
try{
sql=new   String(sql.getBytes( "GBK "), "ISO8859_1 ");
                Statement   stmt   =   conn.createStatement();
stmt.executeUpdate(sql);
}catch(Exception   e){
e.printStackTrace(System.out);
logger.info( "数据库插入数据时出错! ");
}

}

//执行查询操作.
synchronized   public   ResultSet   read(String   sql){
ResultSet   rs=null;
try{
                if(stmt!=null){
                sql=new   String(sql.getBytes( "ISO-8859-1 "), "GB2312 ");
                rs=stmt.executeQuery(sql);
                }else{
                rs=null;
                }
}catch(Exception   e){
e.printStackTrace(System.out);
logger.info( "编码或查询出错! ");
}
return   rs;
}

//终止数据库连接.
synchronized   public   void   stop(){
try{
if(conn!=null){
conn.close();
}
if(stmt!=null){
stmt.close();
}
}catch(Exception   e){
e.printStackTrace();
logger.info( "关闭数据库时出错! ");
}finally{
conn=null;
stmt=null;
}
}
}

前台用jsp调用通过表单提交后用如下代码验证:
<jsp:useBean   id= "syslogin "   scope= "page "   class= "cn.com.jysky.persistence.NEWSAdmin "/>
<jsp:setProperty   name= "syslogin "   property= "* "/>
<jsp:useBean   id= "isIn "   class= "cn.com.jysky.news.manage.ISLogin "/>
<jsp:useBean   id= "SessionManager "   class= "cn.com.jysky.servlet.SessionManager "/>
<body   bgcolor= "#799ae1 ">
<%
if(isIn.isUsernameOk(syslogin.getUserName())){//用户名判断
if(isIn.isPasswdOk(syslogin.getUserName(),syslogin.getPassWd())){//密码判断
SessionManager.setSession(session, "user ",syslogin.getUserName());
DOServlet.responseUrl(response, "default.jsp ");
}
else{
...
}
}
else{
...
}
%>




[解决办法]
把错误信息贴出来啊老大
------解决方案--------------------


楼主啊,是让你贴e.printStackTrace(System.out);打印出来的异常信息,不然怎么知道具体问什么问题啊

热点排行