关键代码:<%@ page contentType="text/html; charset=gb2312" language="java" import="java.sql.*"  %>
<%@page import="stu.*"%><jsp:useBean id="db" scope="page" class="javabean.sqlBean"/>
<%
if(request.getParameter("Sno")!=null&&request.getParameter("pwd")!=null){
String sql="select Sno from Ani where Sno='"+request.getParameter("Sno")+"'and pwd='"+request.getParameter("pwd")+"'"; 
ResultSet rs=db.executeQuery(sql); 
if(rs.next()){
String Sno=new String(request.getParameter("Sno").toString().getBytes("ISO-8859-1"),"GB2312"); session.setAttribute("Sno",Sno);response.sendRedirect("denglu.jsp");
}else
 response.sendRedirect("error.jsp");
}
%>javaBean代码:
package javabean;
import java.sql.*;
import java.io.*;
public class sqlBean {
public Connection conn=null;
public ResultSet rs=null;
        public String user="sa";
        public String password="123";
private String DatabaseDriver="com.mrcrosoft.JDBC.aqlserver.SQLServerDriver";
private String DatabaseConnStr="JDBC:microsoft:sqlserver//localhost;1433;DatabaseName=TRSS";
public void setDatabaseDriver(String Driver){this.DatabaseDriver=Driver;}
public String getDatabaseDriver(){return(this.DatabaseDriver);}
    public  void setDatabaseConnStr(String ConnStr){this.DatabaseConnStr=ConnStr;}
public String getDatabaseConnStr(){return(this.DatabaseConnStr);}
public sqlBean(){
try{
Class.forName(DatabaseDriver);
}
catch(java.lang.ClassNotFoundException e){
System.err.println("加载驱动器有错误:"+e.getMessage());
System.out.print("执行插入有错误:"+e.getMessage());
}
}
public String getString(String name)throws SQLException{
if(rs==null)throw new SQLException("ResultSet is null");
return String.valueOf(rs.getString(name));
} public ResultSet executeQuery(String sql){
ResultSet rs=null;
try{
Connection conn=DriverManager.getConnection("JDBC:microsoft:sqlserver//localhost;1433;DatabaseName=TRSS","sa","123");
Statement stmt=conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);
  rs=stmt.executeQuery(sql);
return rs;
}
catch(SQLException ex){
System.err.println("执行查询有错误:"+ex.getMessage());
System.out.print("执行查询有错误:"+ex.getMessage());
}
return rs;
}

public void CloseDataBase(){
try{
conn.close();
}
catch(Exception end){
System.err.println("执行关闭Connection对象有错误:"+end.getMessage());
System.out.print("执行关闭Connection对象有错误:"+end.getMessage());
}
}
}
出错信息
异 常 org.apache.jasper.JasperException: Exception in JSP: /login.jsp:96: if(request.getParameter("Sno")!=null&&request.getParameter("pwd")!=null){
7: String sql="select Sno from Ani "; 
8: ResultSet rs=db.executeQuery(sql); 
9: if(rs.next()){
10: String Sno=new String(request.getParameter("Sno").toString().getBytes("ISO-8859-1"),"GB2312"); 
11: 
12: session.setAttribute("Sno",Sno);
Stacktrace:
org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:506)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:395)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:314)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:264)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
起 因 java.lang.NullPointerException
org.apache.jsp.login_jsp._jspService(login_jsp.java:61)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:97)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:334)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:314)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:264)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
注 意 完整的起因在Apache Tomcat/5.5.20里。大家帮帮小弟

解决方案 »

  1.   

    com.mrcrosoft.JDBC.aqlserver.SQLServerDriver  JDBC后面应该是sqlserver
      

  2.   

    if(rs.next())
    ----------->>>>>>>>>通常要先判断rs是否为null
    if(rs!=null && rs.next())
      

  3.   

    db.executeQuery(sql);这句话错误db为NULL的原因 请你处理
      

  4.   

    com.mrcrosoft.JDBC.aqlserver.SQLServerDriver 
      

  5.   

    可能是那边没NEW 或者是为null
      

  6.   

    ...谢谢大家,我是有点粗心;改了com.microsoft.JDBC.sqlserver.SQLServerDriver JDBC后面应该是sqlserver这句,但还是空指针
      

  7.   

    String sql="select Sno from Ani where Sno='"+request.getParameter("Sno")+"' and pwd='"+request.getParameter("pwd")+"'"; and与前面的'要有空格分开
      

  8.   


    1.ResultSet rs=db.executeQuery(sql);  这个db你要判断不为空..
    2.rs最好是要判断不为空..
      

  9.   

    ResultSet rs=db.executeQuery(sql); 这个db你要判断不为空..
    2.rs最好是要判断不为空..
      

  10.   

    你可以做个断点看下 一般这种情况都是 request.getParameter() 或者 session.getAttribute()有问题 你可以可以加上try catch看一下
      

  11.   

    rs为null,所以null.next()抛空指针了,你试着把sql语句扔到plsql里面执行下,看有没有数据
      

  12.   

    我刚刚看了一下,由于我没用sqlServer数据库,所以把你的数据改装成mysql数据库的。运行 没问题。所以应该是你连接数据库出的问题。下面是我改装成mysql数据库的代码,你可以参考一下index.jsp
    <%@ page language="java" import="java.util.*" pageEncoding="gb2312"%>
    <%@ page import="java.sql.*" %>
    <%@ page import="javabean.*" %><%
    String path = request.getContextPath();
    String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
    %><jsp:useBean id="db" scope="page" class="javabean.sqlBean"/>
    <%
    if(request.getParameter("Sno")!=null&&request.getParameter("pwd")!=null){
    String sql="select Sno from Ani where Sno='"+request.getParameter("Sno")+"'and pwd='"+request.getParameter("pwd")+"'";  
    ResultSet rs=db.executeQuery(sql);  

    if(rs.next()){
    String Sno=new String(request.getParameter("Sno").toString().getBytes("ISO-8859-1"),"GB2312");  

    session.setAttribute("Sno",Sno);

    response.sendRedirect("denglu.jsp");
    }else
     response.sendRedirect("error.jsp");
    }
    %>
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    <html>
      <head>
        <base href="<%=basePath%>">
        
        <title>My JSP 'index.jsp' starting page</title>
    <meta http-equiv="pragma" content="no-cache">
    <meta http-equiv="cache-control" content="no-cache">
    <meta http-equiv="expires" content="0">    
    <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
    <meta http-equiv="description" content="This is my page">
    <!--
    <link rel="stylesheet" type="text/css" href="styles.css">
    -->
      </head>
      
      <body>
        This is my JSP page. <br>
        <form action="index.jsp">
         <input type="text" name="Sno" />
         <input type="text" name="pwd" />
         <input type="submit" value="subme"/>
        </form>
      </body>
    </html>sqlBean.javapackage javabean;import java.sql.*;
    import java.io.*;public class sqlBean {
    public Connection conn = null;
    public ResultSet rs = null;
    public String user = "root";
    public String password = "123";
    private String DatabaseDriver = "com.mysql.jdbc.Driver";
    private String DatabaseConnStr = "jdbc:mysql://localhost/mydata"; public void setDatabaseDriver(String Driver) {
    this.DatabaseDriver = Driver;
    } public String getDatabaseDriver() {
    return (this.DatabaseDriver);
    } public void setDatabaseConnStr(String ConnStr) {
    this.DatabaseConnStr = ConnStr;
    } public String getDatabaseConnStr() {
    return (this.DatabaseConnStr);
    } public sqlBean() {
    try {
    Class.forName(DatabaseDriver);
    } catch (java.lang.ClassNotFoundException e) {
    System.err.println("加载驱动器有错误:" + e.getMessage());
    System.out.print("执行插入有错误:" + e.getMessage());
    }
    } public String getString(String name) throws SQLException {
    if (rs == null)
    throw new SQLException("ResultSet is null");
    return String.valueOf(rs.getString(name));
    } public ResultSet executeQuery(String sql) {
    ResultSet rs = null;
    try {
    Connection conn = DriverManager
    .getConnection(
    "jdbc:mysql://localhost/mydata",
    "root", "123");
    Statement stmt = conn
    .createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,
    ResultSet.CONCUR_UPDATABLE);
    rs = stmt.executeQuery(sql);
    return rs;
    } catch (SQLException ex) {
    System.err.println("执行查询有错误:" + ex.getMessage());
    System.out.print("执行查询有错误:" + ex.getMessage());
    }
    return rs;
    } public void CloseDataBase() {
    try {
    conn.close();
    } catch (Exception end) {
    System.err.println("执行关闭Connection对象有错误:" + end.getMessage());
    System.out.print("执行关闭Connection对象有错误:" + end.getMessage());
    }
    }
    }对数据库,我建立一张 Ani表,表有两个字段Sno(主键) 和pwd 加入了一些数据。表:Ani
    属性
    属性类型
    是否为主键Sno varchar(50) Yes
    Pwd varchar(50) No加入的数据:
    Sno pwd
    root root
    root2 root2建议你检查你检查一下你连接数据库的方法,和你的数据库是否可以访问。
      

  13.   

    1.你可以到tomcat 的work 目录下面查看你这个工程。这个login.jsp 生成相应的servlet 文件login.java 定位到org.apache.jsp.login_jsp._jspService(login_jsp.java:61)
    ) 第61行看看是哪一行报的错。
    2.一般结果集返回后都是while(rs.hasNext()){ rs.next()}这样处理的。结果集不为空但是里面没有记录
      

  14.   

    我估计是我JAVABEAN里面那个SQLBEAN的类里面在哪错了,但不知道错在哪,大家帮帮忙找下错误。谢谢