日期:2014-05-18  浏览次数:20613 次

Servlet与javabean难道有仇吗?
是这样的·小弟最近刚学习MVC模式,想自己做一个简单的登录界面,用于逻辑运算的JavaBean在被Servlet调用的时候总是报错,注意·不是异常,而是debug··各位帮我看看··小弟不胜感激!
servlet代码:
Java code

 public class Servlet01 extends HttpServlet {
    
    protected void service(HttpServletRequest req,HttpServletResponse resp)throws ServletException,java.io.IOException{
        String name= req.getParameter("name");
        GetJdbc gj=new GetJdbc();
        boolean flag=gj.getIn(name);
        if(flag==true){
            RequestDispatcher rd=req.getRequestDispatcher("Yes.jsp");//。forward方式只能跳转到本web应用中的页面上。
            req.setAttribute(name, "name");
            System.out.print(name);
            rd.forward(req, resp);//跳转
        }
        
    }
}


javabean代码:
Java code

package com.cme.cen;

import java.sql.*;

public class GetJdbc {
    String driverName = "com.microsoft.sqlserver.jdbc.SQLServerDriver";// 将驱动器的包名和类名存储到字符串中
    String dbURL = "jdbc:sqlserver://localhost:1433;DatabaseName=Sales"; // 将数据库StuInfo的路径存储到字符串中
    String userName = "sa"; // 默认用户名
    String userPwd = "19881212"; // 安装sql server 2005时的密码
    Statement sm = null;
    public static Connection dbConn = null;// 定义打开了的接口对象
    ResultSet rs = null;

    // 构造方法
    public GetJdbc() {
        try {
            Class.forName(driverName);
            dbConn = DriverManager.getConnection(dbURL, userName, userPwd);
            sm = dbConn.createStatement();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    public boolean getIn(String name){
        String sql="select * from Employees";
        boolean flag=false;
        try {
            rs = sm.executeQuery(sql);
            while(rs.next()){
                if(rs.getString("姓名").trim().equals(name)){
                    flag=true;
                }
            }
        } catch (SQLException e) {
            e.printStackTrace();
        }
        return flag;
    }
}


从登录页面内输入名字,然后由JavaBean来链接数据库,并且返回其用户名是否包含在数据库中。但是老是出错,错误如下:


Daemon System Thread [Finalizer] (Suspended (exception NullPointerException))
JdbcOdbcDriver.finalize() line: 96
Finalizer.invokeFinalizeMethod(Object) line: not available [native method]
Finalizer.runFinalizer() line: 83
Finalizer.access$100(Finalizer) line: 14
Finalizer$FinalizerThread.run() line: 160
跪求高人指点··能解释为什么以及解决办法的话更是不胜感激!

------解决方案--------------------
首先,我建议在写servlet的时候,不要覆盖service方法,而是覆盖doget和dopost方法。
其次,lz的GetJDBC不能称之为javabean,充其量可以成为dbutil,即数据库操作辅助类。除此之外,建议lz在进行数据库操作时,要显示的调用数据库的关闭,即在进行操作之后,显示关闭相应的statment,connection。
最后,建议lz把问题可以百度一下,你要相信你绝不是遇到的此类问题的第一个人,类似问题肯定别人也遇到过,如果你运气好的话,可以顺利的找到解决办法,即使没有找到,你也可以在这过程中,学到一些知识以及与问题相关的解决思路,然后结合自己的具体情况,没准你就能自己解决了。


------解决方案--------------------
乱码。