(求大神)JSP连接数据库时一直报空指针错误,用bean时就会,一个网页时就不会,郁闷

时间:2022-02-18 20:26:52
错误

exception 

org.apache.jasper.JasperException: java.lang.NullPointerException
org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:500)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:428)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:313)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:260)
javax.servlet.http.HttpServlet.service(HttpServlet.java:717)


root cause 

java.lang.NullPointerException
org.apache.jsp.student_jsp._jspService(student_jsp.java:108)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:386)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:313)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:260)
javax.servlet.http.HttpServlet.service(HttpServlet.java:717)


note The full stack trace of the root cause is available in the Apache Tomcat/6.0.30 logs.




/////////////////////////////////////////////////////////////////////////////////////////////
以下是代码

package com.style.lin;

import java.sql.*;

public class student{
Connection conn;
Statement stmt;
ResultSet rs;
public student()  {
// TODO Auto-generated constructor stub
try {
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
System.out.println("sql类找不到<br>");
}
}
public ResultSet executeQuery(String sql) {
try {

String DATABASE_URL ="jdbc:sqlserver://localhost:1433;databaseName=student3";
conn=DriverManager.getConnection(DATABASE_URL,"","");
stmt = conn.createStatement();
rs=stmt.executeQuery(sql);
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
System.out.print("错误");
}


return rs;
}

}


/////////////////////////////////////////////////////////////////////////////////////////////////////



<%@ page language="java" contentType="text/html; charset=GBK"
    pageEncoding="GBK"%>
<%@page import="java.sql.*" %>

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Insert title here</title>
</head>
<body>
<jsp:useBean id="student" class="com.style.lin.student" scope="page">
</jsp:useBean>



<h1  align="center">学生信息</h1>
<strong>
<table border="1"  align="center"> 
<tr align="center"> 

<td  width="100"> 
学号
</td> 
<td  width="100"> 
姓名
</td> 
<td  width="100"> 
身份证号码
</td> 
<td  width="100"> 
班级
</td> 
<td  width="100"> 
性别 
</td> 
<td  width="100"> 
出身年月
</td>
<td  width="100"> 
医疗卡号
</td>  
<tr> 
</table>
</strong> 
<% 
ResultSet rs=student.executeQuery("select * from student");
while(rs.next()){
%> 
<table border="1"  align="center"> 
<tr> 
<td  width="100"> 
<%=rs.getString("学号")%> 
</td> 
<td  width="100"> 
<%=rs.getString( "姓名")%> 
</td> 
<td  width="100"> 
<%=rs.getString( "身份证号码")%> 
</td> 
<td  width="100"> 
<%=rs.getString( "班级")%> 
</td> 
<td  width="100"> 
<%=rs.getString( "性别")%> 
</td> 
<td  width="100"> 
<%=rs.getString( "出身年月")%> 
</td> 
<td  width="100"> 
<%=rs.getString( "医疗卡号")%>
</td> 
<tr> 
</table> 
<% 



rs.close(); 


%>
</body>
</html>

8 个解决方案

#1


打个断点看看吧。

#2


引用 1 楼  的回复:
打个断点看看吧。


不太会...

#3


你数据库里的名字都是中文啊·?

#4


查出来的明显是个List。rs.next 貌似是true or false吧,你这个rs结果集是List形式的,所以获取数据要用List遍历    不是像你这样的   

#5


引用 3 楼  的回复:
你数据库里的名字都是中文啊·?

对啊,中文··*.*

#6


如果你确定只有一条数据,那就rs.get(0).getString("学号"),这样就好了。
有多个,那就要用for循环或者<c:if/><c:forEach/>标签了

#7


引用 4 楼  的回复:
查出来的明显是个List。rs.next 貌似是true or false吧,你这个rs结果集是List形式的,所以获取数据要用List遍历    不是像你这样的

啊啊啊?
那是怎样?

#8


已解答,呵呵,select*from的,不管你几条数据,都是List形式返回的,除非你是用id查或者count(*),这样才不是List

#1


打个断点看看吧。

#2


引用 1 楼  的回复:
打个断点看看吧。


不太会...

#3


你数据库里的名字都是中文啊·?

#4


查出来的明显是个List。rs.next 貌似是true or false吧,你这个rs结果集是List形式的,所以获取数据要用List遍历    不是像你这样的   

#5


引用 3 楼  的回复:
你数据库里的名字都是中文啊·?

对啊,中文··*.*

#6


如果你确定只有一条数据,那就rs.get(0).getString("学号"),这样就好了。
有多个,那就要用for循环或者<c:if/><c:forEach/>标签了

#7


引用 4 楼  的回复:
查出来的明显是个List。rs.next 貌似是true or false吧,你这个rs结果集是List形式的,所以获取数据要用List遍历    不是像你这样的

啊啊啊?
那是怎样?

#8


已解答,呵呵,select*from的,不管你几条数据,都是List形式返回的,除非你是用id查或者count(*),这样才不是List