是这样的·小弟最近刚学习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把问题可以百度一下,你要相信你绝不是遇到的此类问题的第一个人,类似问题肯定别人也遇到过,如果你运气好的话,可以顺利的找到解决办法,即使没有找到,你也可以在这过程中,学到一些知识以及与问题相关的解决思路,然后结合自己的具体情况,没准你就能自己解决了。
------解决方案--------------------
乱码。