通过servlet执行数据库操作代码如下:package com.ssit.DB;import java.sql.Connection;import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;import javax.naming.Context;//这是命名服务执行查询的入口
import javax.naming.InitialContext;
import javax.sql.DataSource;/**
 * 
 * 外层包:com.ssit
 * @author 
 */
public class DB_Handle { private Connection con = null; private ResultSet rs = null; private Statement stmt = null; public DB_Handle() { } public Connection connectionDatabase() {  try {
    Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver").newInstance();
      String url="jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=MyFirst_system";
      String user="sa";
      String password="sa";
      Connection con= DriverManager.getConnection(url,user,password); 
   return con;
  } catch (Exception e) {
   try {
    if (con != null)
     con.close();
    System.out.println("连接失败:" + e.getMessage());
    return null;
   } catch (Exception e1) {
    System.out.println("释放资源失败:" + e1.getMessage());
    return null;
   }
  }
 } public void freeConnection() {
  try {
   if (rs != null)
    rs.close();
   if (stmt != null)
    stmt.close();
   if (con != null)
    con.close();
  } catch (Exception e) {
   System.out.println(e.getMessage());
  }
 } public ResultSet execQuerySQL(String SQLString) {
  try {
   if (con != null) {
    stmt = con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_UPDATABLE);
    rs = stmt.executeQuery(SQLString);
   } else {
    return null;
   }
  } catch (SQLException e) {
   System.out.println(e.getMessage());
   return null;
  }
  return rs;
 } public boolean execUpdateSQL(String SQLString) {
  try {
   stmt = con.createStatement();
   stmt.executeUpdate(SQLString);
  } catch (SQLException e) {
   System.out.println(e.getMessage());
   return false;
  }
  return true;
 }}
jsp页面调用这个java类代码如下:<?xml version="1.0" encoding="GBK" ?>
<%@ page language="java" contentType="text/html; charset=GBK"
    pageEncoding="GBK"%>
<%@ page import="com.ssit.DB.*,java.sql.*" %> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head><title>Insert title here</title>
</head>
<body>
<%
    
      
    DB_Handle dbHandle1 = new DB_Handle(); 
    Connection con = dbHandle1.connectionDatabase(); 
    out.print(con);
    
    ResultSet rs1 = null;
    
    String sql = "select * from U_UserInfo";
   
    rs1 = dbHandle1.execQuerySQL(sql);
    
    
 %>
 <table width="70%" height="68" border="1" cellpadding="0" cellspacing="0" bordercolor="#FFFFFF" bordercolorlight="#0066FF">
    <tr>
      <td width="7%" align="center" bgcolor="#CCCCCC">用户id</td>
      <td width="36%" align="center" bgcolor="#CCCCCC">登陆名</td>
      <td width="31%" align="center" bgcolor="#CCCCCC">用户名</td>
      <td width="26%" align="center" bgcolor="#CCCCCC">密码</td>
    </tr>
<%
         while(rs1.next()){
 %>    
    <tr>
      <td><%=rs1.getString("U_UserId")%></td>
      <td><%=rs1.getString("U_LoginName")%></td>
      <td><%=rs1.getString("U_UserName")%></td>
      <td><%= rs1.getString("U_PassWord")%></td>
    </tr>
 <%
  }
    if(rs1!=null){rs1.close();}
    dbHandle1.freeConnection();
 %>
 
  </table>
</body>
</html>谢谢大虾们帮忙指点!!!!!

解决方案 »

  1.   

    还不如发一个100分的帖子呢错误信息也不贴出来。你看看你的root cause吧,基本就在那里,然后调试一下
    nullpointerexception还是比较好找的
      

  2.   

    严重: Servlet.service() for servlet jsp threw exception
    java.lang.NullPointerException
    at org.apache.jsp.SystemManage.property.p_005findex_jsp._jspService(p_005findex_jsp.java:90)
    at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
    at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:384)
    at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:320)
    at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:266)
    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:228)
    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:104)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:216)
    at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844)
    at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:634)
    at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:445)
    at java.lang.Thread.run(Thread.java:619)就提示这个东西
      

  3.   

    问题很清楚啊,你只要改一行代码
    Connection con= DriverManager.getConnection(url,user,password); 
    改成
    con= DriverManager.getConnection(url,user,password); 
      

  4.   

    用struts不好吗?你这个是很古老的jsp方式,jsp应该尽量少写java代码,逻辑要封装!
      

  5.   

    我也觉得struts好,但是刚学J2EE的时候,写写JSP挺好的嘛:)
      

  6.   

    public Connection connectionDatabase() {   try { 
        Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver").newInstance(); 
          String url="jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=MyFirst_system"; 
          String user="sa"; 
          String password="sa"; 
          Connection con= DriverManager.getConnection(url,user,password); 
      return con; 
      } catch (Exception e) { 
      try { 
        if (con != null) 
        con.close(); 
        System.out.println("连接失败:" + e.getMessage()); 
        return null; 
      } catch (Exception e1) { 
        System.out.println("释放资源失败:" + e1.getMessage()); 
        return null; 
      } 
      } 
    } Connection con= DriverManager.getConnection(url,user,password); 
    改成 
    con= DriverManager.getConnection(url,user,password); 
      

  7.   

    难道问题出在???应该是吧???
    private Connection con = null; 与Connection con= DriverManager.getConnection(url,user,password); 
      

  8.   


    你上面已经定义了private Connection con = null; 
    你想要返回的是Connection con= DriverManager.getConnection(url,user,password); 这个con,
    而下面return con; 中的con是你上面定义的private Connection con = null;所有就报null
      

  9.   

    因为你的私有变量con一直都是null
    导致了后面调用execQuerySQL之后返回了一个null的rs
    再对rs进行操作,当然抛例外
      

  10.   

    是rs1,不是rs,说错了,不好意思
      

  11.   

    不用客气,慢慢来,先把Java语法学好了,一步一步进步。