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

数据库里面的账号和密码却不能登录的有关问题?

2012-03-01 
数据库里面的账号和密码却不能登录的问题??我在做留言板,登录页面是logon.jsp,然后把它提交给logon.java的

数据库里面的账号和密码却不能登录的问题??
我在做留言板,登录页面是logon.jsp,然后把它提交给logon.java的servlet处理,这个logon.java如下:

Java code
//用户登录处理方法,登录servlet的实现package ch;import java.io.*;import javax.servlet.*;import javax.servlet.http.*;import java.util.Collection;import utils.*;public class Logon extends HttpServlet{    public void doPost(HttpServletRequest request,HttpServletResponse response)    throws ServletException,IOException    {        //取得用户提交的用户名和密码        String username=request.getParameter("username");        String password=request.getParameter("password");                //进行用户合法性验证        UserInfo user=UserBean.logon(username, password);..........................................(1)                //对登录结果进行处理        RequestDispatcher dispatcher=null;        if(user!=null)        {            //验证通过            HttpSession session=request.getSession();            session.setAttribute("session_userinfo",user);                        //跳转到留言列表servlet            dispatcher=request.getRequestDispatcher("/ch/ArticleList");        }        else        {            //设置错误提示信息            request.setAttribute("msg","登录失败!可能是用户名密码输入错误或者账号被锁定!");                        //跳转到用户登录页面            dispatcher=request.getRequestDispatcher("/logon.jsp");        }        dispatcher.forward(request,response);    }}        

我的UserBean.java如下:
Java code
//用户注册方法package ch;import java.sql.*;import utils.*;public class UserBean{       //用户登录    public static UserInfo logon(String username,String password)    {        Connection conn=null;        Statement st=null;        ResultSet rs=null;        try        {            //得到数据库的连接            conn=DatabaseBean.getConnection();            st=conn.createStatement();                        //生成查询用户信息的语句            String sql="SELECT userid,username,password,email,type,status"+"FROM userinfo WHERE username='"                       +username+"' AND password='"+password+"' AND status="+UserInfo.STATUS_NORMAL;                        //执行查询语句            rs=st.executeQuery(sql);....................................................(2)            while(rs.next())            {                //得到查询结果                UserInfo user=new UserInfo();                user.setUserID(rs.getInt(1));                user.setUsername(rs.getString(2));                user.setPassword(rs.getString(3));                user.setEmail(rs.getString(4));                user.setType(rs.getInt(5));                user.setStatus(rs.getInt(6));                                return user;            }        }        catch(SQLException ex)        {            ex.printStackTrace(System.err);        }        finally        {            //关闭数据库的连接            DatabaseBean.close(rs,st,conn);        }        return null;    }}

这两个java文件都能编译,控制台显示是(1)(2)有问题。同时我用(2)的这个sql语句也能够在数据库里面查询出想要的结果,sql语句应该也没错,但就是不能登录。我把数据库中显示的以前的账号和密码拿来登录,结果也不行。
  总之,问题就是数据库中的帐户密码不能登录,从来就没有登录成功过。
备注:若登陆成功,则会跳转到articlelist.jsp页面,但若单独访问这个页面,则报出500错误;于是我猜测,会不会是我的logon.java和UserBean.java都没有问题,而是我的articlelist.jsp有问题呢?望高手多多指教!

[解决办法]
在跳转的语句后面加一个return;语句就行了。

比如在:
dispatcher=request.getRequestDispatcher("/ch/ArticleList");
return;

[解决办法]
,status"+"FROM userinfo
这里直接写,status FROM userinfo就可以了
如果用+ from前面应该有个空格啊
[解决办法]
看看你的UserBean的logon方法最后总是会返回return null;的,可以试着删除后在catch和finally块中加return null


[解决办法]
只看问题 没看代码
只是给个提示
用户名密码都正确 为什么不行?
原因一:代码有问题
原因二:数据库中字段类型为char (10)吧 但是你的名字或密码就只有6位 
其他的4位就为空格了
所以你比较就不会一样了
解决办法 使用varchar
[解决办法]

Java code
主要看你的登陆失败的异常是什么
[解决办法]
那你打印rs.next()看是不是true,如果是,那这个UserInfo 方法应该有问题。

热点排行