本帖最后由 xiaotang_hb 于 2010-01-12 12:36:52 编辑

解决方案 »

  1.   

    怎么都在Servlet中做,不觉得拥挤呢。
    String username = request.getParameter("username");
    String password = request.getParameter("password");
    System.out.println("username = " + username + ", password = " + password);打印看看有没有值?
      

  2.   

    恩··刚学jsp,就用servlet来练习练习··
    打印出来了,没有错!····我去Google里找找了,也许是缺小什么架包什么的···2010-1-12 12:53:00 org.apache.catalina.startup.HostConfig checkResources
    信息: Reloading context [/blog]
    sa
    sa
    org.apache.tomcat.dbcp.dbcp.SQLNestedException: Cannot load JDBC driver class 'com.mysql.jdbc.Driver'
    at org.apache.tomcat.dbcp.dbcp.BasicDataSource.createDataSource(BasicDataSource.java:1136)
    at org.apache.tomcat.dbcp.dbcp.BasicDataSource.getConnection(BasicDataSource.java:880)
    at org.apache.commons.dbutils.QueryRunner.prepareConnection(QueryRunner.java:195)
    at org.apache.commons.dbutils.QueryRunner.query(QueryRunner.java:306)
    at cn.com.jobedu.blog.UserServlet.login(UserServlet.java:51)
    at cn.com.jobedu.blog.UserServlet.doPost(UserServlet.java:31)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:710)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:263)
    at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844)
    at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:584)
    at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
    at java.lang.Thread.run(Thread.java:619)
    Caused by: java.lang.ClassNotFoundException: com.mysql.jdbc.Driver
    at java.net.URLClassLoader$1.run(URLClassLoader.java:200)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(URLClassLoader.java:188)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:307)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:252)
    at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:320)
    at java.lang.Class.forName0(Native Method)
    at java.lang.Class.forName(Class.java:169)
    at org.apache.tomcat.dbcp.dbcp.BasicDataSource.createDataSource(BasicDataSource.java:1130)
    ... 19 more
    2010-1-12 12:53:05 org.apache.catalina.core.StandardWrapperValve invoke
    严重: Servlet.service() for servlet UserServlet threw exception
    java.lang.NullPointerException
    at cn.com.jobedu.blog.UserServlet.login(UserServlet.java:55)
    at cn.com.jobedu.blog.UserServlet.doPost(UserServlet.java:31)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:710)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:263)
    at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844)
    at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:584)
    at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
    at java.lang.Thread.run(Thread.java:619)
      

  3.   

    提示信息都那么清楚了,UserServlet.java第55行空指针。
      

  4.   

    org.apache.tomcat.dbcp.dbcp.SQLNestedException: Cannot load JDBC driver class 'com.mysql.jdbc.Driver' 
    把你的数据库驱动加进去
      

  5.   

    在数据库端执行下sql,是否能得到数据?
      

  6.   

    错误的行数都有了,还找不到 吗?login方法。都给出来了55行,同志,看你这个代码不是qr是空,就是list是空,调试一下吧
      

  7.   

    cn.com.jobedu.blog.UserServlet.login(UserServlet.java:55) 找找UserServlet 第55行 是不是有空引用
      

  8.   


    楼主第二次提供的错误信息表明没有MySQL的JDBC驱动。到下面的网站上下载一个吧。http://dev.mysql.com/downloads/connector/j/5.1.html
      

  9.   

    mysql的驱动找不到哦!是放在lib文件夹下吗
      

  10.   

    看看楼主下面的代码:         List list = null;
            try {
                list = (List) qr.query(sql, params,new BeanListHandler(User.class));
            } catch (SQLException e) {
                e.printStackTrace();
            }
            // 此时list可能为null,所以导致下面的语句(list.size())抛出NullPointsException。
            if (list.size() > 0) {
                user = (User) list.get(0);
                HttpSession session = request.getSession();
                session.setAttribute("user", user);
                request.getRequestDispatcher("/admin/admin.jsp").forward(request,
                        response);
            } else {
                request.setAttribute("message", "用户名或者密码不正确!");
                request.getRequestDispatcher("/admin/login.jsp").forward(request,
                        response);
            }有两点需要改进:
    第1:QueryRunner的query(String sql, Object[] params, ResultSetHandler<T> rsh)方法已经被Deprecated。应该使用
    query(String sql, ResultSetHandler<T> rsh, Object... params)因此楼主的代码(上例第三行)应改为:
    list = (List) qr.query(sql, new BeanListHandler(User.class), params);第2:对结果集应做空为判断,如:
    if (list != null && list.size() > 0) {
       ...
    }else {
       ...
    }
      

  11.   

    我加了包··怎么还是报错哦··我就想不明白了··
     我把包拷在lib文件夹下了···
      

  12.   

    问题我搞定了···我总结下··
       首先,我用的连接池来连接数据库的,所以,mysql架包放到项目的lib目录下,也是报错的,
     所以,要想不报错,就得把驱动架包放到tomcat的lib目录下··但是,为什么呢?这个我也想不清楚,望各位指点···
      

  13.   


    数据库连接池是tomcat来管理的,所以需要,你可以自己写jdbc连接测试一下,不用连接池,就不需要把包放到tomcat目录下了。