您的位置:程序门 -> java -> web 开发



请教大家一个java web 登陆验证的问题!


[收藏此页] [打印本页]选择字色:背景色:字体:[][][]


请教大家一个java web 登陆验证的问题!
发表于:2007-07-27 23:37:01 楼主
请教大家一个登陆验证的问题:
            前台把参数传递给servlet,servlet把直给验证登陆的javabean
        这个bean   怎么编写   数据库连接我已经连上了   就是怎么从数据库把用户的资料
区出来   和前台传递的直进行判断?

以下是我写的部分代码   希望大家帮我看看:

        package   bookitem;

import   java.sql.*;

//继承父类,获得数据库连接
public   class   userdaobean   extends   dao{
        //用户验证
        public   boolean   checkuser(string   user,   string   password)   {
                try   {
                            string   compare_user   =   null;
                            string   compare_password   =   null;
                            pstmt   =   conn.preparestatement(
                                        "select   *   from   mydb   where   user=?   and   password=? ");
                            pstmt.setstring(1,   user);
                            pstmt.setstring(2,   password);
                            rs   =   pstmt.EXECutequery();
                            while   (rs.next())   {
                                compare_user   =(string)rs.next(1);         在这里我就不会写了
                                compare_password=rs.getstring();           jbuilder显示错误
                                closers();
                                pstmt.close();
                            }
                            if(compare_user==user   &&   compare_password==password){
                                    return   true;
                            }
                            else{
                                    return   false;
                            }
                }   catch   (sqlexception   ex)   {
                        ex.printstacktrace();
                        return   false;
                }
        }
}

发表于:2007-07-28 00:14:211楼 得分:0
声明一个boolean值,初始值为false
  while   (rs.next())   {
      boolean为真,
                              //   compare_user   =(string)rs.next(1);         在这里我就不会写了
                                //compare_password=rs.getstring();           jbuilder显示错误
                                //closers();
                                pstmt.close();
                            }
发表于:2007-07-28 08:49:352楼 得分:0
select   count(*)   as   bb...
rs.next(){
        得到bb的值,如果不是0那就是有数据
}
发表于:2007-07-28 10:20:033楼 得分:0
public   class   userdaobean   extends   dao{
        //用户验证
        public   boolean   checkuser(string   user,   string   password)   {
                        boolean   bool=false;
                        string   error= " ";
                try   {
                              pstmt   =   conn.preparestatement(
                                        "select   *   from   mydb   where   user=?   and   password=? ");
                            pstmt.setstring(1,   user);
                            pstmt.setstring(2,   password);
                            rs   =   pstmt.EXECutequery();
                            if   (rs.next())   {
                                      bool=true;
                                      pstmt.close();
                            }
                            return   bool;
                  }   catch   (sqlexception   ex)   {
                        error=ex.getmessage();
                        throw   new   exception(error);
                        return   false;
                }
        }
}
这样写就可以了,没必要写那么多^_^
发表于:2007-07-28 10:27:484楼 得分:0
//继承父类,获得数据库连接
public   class   userdaobean   extends   dao{
        //用户验证
        public   boolean   checkuser(string   user,   string   password)   {
                try   {
                            string   compare_user   =   null;
                            string   compare_password   =   null;
                            pstmt   =   conn.preparestatement(
                                        "select   *   from   mydb   where   user=?   and   password=? ");
                            pstmt.setstring(1,   user);
                            pstmt.setstring(2,   password);
                            rs   =   pstmt.EXECutequery();
                            while   (rs.next())   {
                                compare_user   =(string)rs.next(1);
                                compare_password=rs.getstring();
                                /*不要在这里关闭resultset,prestatement,connection类的对象
                                    关闭的话应该在catch后边的finally{
  if   }
                                closers();
                                pstmt.close();*/
                            }
                            if(compare_user==user   &&   compare_password==password){
                                    return   true;
                            }
                            else{
                                    return   false;
                            }
                }   catch   (sqlexception   ex)   {
                        ex.printstacktrace();
                        return   false;
                }
        }
}
发表于:2007-07-28 10:35:425楼 得分:0
public   class   userdaobean   extends   dao{
       
        private   connection   conn;
        private   preparedstatement   pstmt;
        private   resultset   rs;
       
       
        private   void   connection(){
        try{
        class.forname( "diriver_class ");
        }catch(classnotfoundexception   msg){
        //处理
        }
       
        try{
        this.conn   =   drivermanager.getconnection( "url ", "用户名 ", "密码 ");
        }catch(classnotfoundexception   msg){
        //处理
        }
        }
       
       
        //用户验证
        public   boolean   checkuser(string   user,   string   password)   {
       
        this.connection();
       
                try   {
                            string   compare_user   =   null;
                            string   compare_password   =   null;
                            pstmt   =   conn.preparestatement(
                                        "select   *   from   mydb   where   user=?   and   password=? ");
                            pstmt.setstring(1,   user);
                            pstmt.setstring(2,   password);
                            rs   =   pstmt.EXECutequery();
                            while   (rs.next())   {
                                compare_user   =   rs.getstring(1);        
                                compare_password   =   rs.getstring(2);
                            }
                            if(compare_user.equalsignorecase(user)   &&   compare_password.equalsignorecase(password)){
                                    return   true;
                            }else{
                                    return   false;
                            }
                }   catch   (sqlexception   ex)   {
                        ex.printstacktrace();
                        return   false;
                }finally{
                //return   也会执行
                if(rs   !=   null){
                rs.close();
                }
                if(pstmt   !=   null){
                pstmt.close();
                }if(conn   !=   null){
                conn.close();
                }
                }
        }
}
发表于:2007-07-28 15:39:466楼 得分:0
compare_user   =rs.getstring(user);   //在这里我就不会写了
compare_password=rs.getstring(password);   //jbuilder显示错误

这样可行?
这样可行?
这样可行?
发表于:2007-07-28 15:46:207楼 得分:0
atgrid报表控件/web插件,支持asp   .net   jsp   java   php

atgrid报表控件/web插件[专业版],对etcell进行了进行了全面的改革,将会彻彻底底的解决你的报表问题,让你开发达到从未有过的轻松和喜悦......    
是专业的报表工具,提供了丰富的报表分析方法,具有可视化的报表设计器wintable,更好的支持web报表打印,连续打印、报表套打,对aspx.net、asp、java报表、jsp、pphp提供了专门的类库,方便web报表开发人员进行快速开发.
网址:http://www.etcell.com/
下载地址:http://www.etcell.com/download.asp?id=51
支持的报表功能如下:  
1、支持主从报表  
2、交叉报表  
3、支持分组报表:小计、汇总自由设置  
4、支持的套打报表,让套打简单灵活  
5、支持分组报表的每组打印控制  
6、支持连续打印,解决了票据打印的难题  
7、支持自定义报表  
8、支持mis开发的各种开发工具:如vc、vb、delphi、c   bulider、interdev  
9、支持web开发,frontpage、interdev、asp.net、c#  
10、etcell内置支持vbscript脚本包括事件  
11、在web上支持vbscript、javascript脚本  
12、支持url连接  
13、支持的web服务器:nt的web服务器、linux、unix、weblogic、tomcat、iis;  
14、在mis开发中直接支持数据库,让程序开发更方便快捷
15、web插件和浏览器紧密融合,完全成为浏览器的一个分子!
16、一个页面安放多个atgrid报表插件,再也不会出现其他控件的闪烁变动的效果!
17、完全支持xml,后台程序可以通过xml控制报表的每一部分!
18、让web开发变的更加简单,在web页[html]可以不用写一行代码.......
19、报表的单元格类型多大几十种,如:text,num,button,radio,checkbox,combox.....
20、不但实现报表展示功能,更重要突破了报表在线编辑功能........
21、和后端服务器程序的交互更加简单...............
22、可以把多个atgrid控件的数据打印到一起,在也不用担心页眉和页脚问题......
功能多多,肯定会让你满意,不必再为选择报表控件发愁!!!

发表于:2007-07-28 16:25:188楼 得分:0
都可以
发表于:2007-07-28 16:48:149楼 得分:0
楼上说的基本上都对.用next()判断就可以了.finally里面关闭rs等就可以了
发表于:2007-07-28 17:40:1610楼 得分:0
compare_user   =(string)rs.next(1);         在这里我就不会写了
compare_password=rs.getstring();           jbuilder显示错误

改为
compare_user   =rs.getstring( "字段名 ");        
compare_password=rs.getstring( "字段名 ");          
发表于:2007-07-28 17:52:3511楼 得分:0

try{

```
````
while(rs.next()){
  user_name=rs.getstring( "user ");
  user_password=rs.getstring( "password ");
 
下面判断user_name和user_password是否与传递过来的参数相同
  不写了 上面都有
}
}catch(exception   e){
    rs.close();
}
发表于:2007-07-28 18:10:5712楼 得分:0
compare_user   =rs.getstring(user);  
compare_password=rs.getstring(password);  
取到后用.euqls进行比较
==是比较的地址的   值


快速检索

最新资讯
热门点击