簡體   English   中英

使用 servlet 從 mysql 檢索數據的空指針異常

[英]Null pointer exception for Retrieving Data from mysql using servlet

我正在嘗試從名為 id 的數據庫中檢索數據,它有 2 列 uname 和 pass。 我相信我的 beans 類是學生完全沒問題,正如你所看到的 pol 類用於與 db 交互,類 dispach 將數據發送到 jsp,我的問題是當我在服務器上運行 dispach 時,我得到 NullPointerException

 public class pol { public List<student> getstudent() throws Exception { List<student> students = new ArrayList<>(); String connectionURL = "jdbc:mysql://localhost:3306/pooya"; Connection connection = null; Statement s = null; ResultSet rs = null; try { Class.forName("com.mysql.jdbc.Driver"); connection = DriverManager.getConnection(connectionURL, "root", ""); String sql = "select * from id"; s = connection.createStatement(); s.executeQuery(sql); rs = s.getResultSet(); while (rs.next()) { String uname = rs.getString("uname"); String pass = rs.getString("pass"); student tempstudent = new student(uname, pass); students.add(tempstudent); } return students; } finally { // close JDBC objects close(connection, s, rs); } } private void close(Connection connection, Statement s, ResultSet rs) { try { if (rs != null) { rs.close(); } if (s != null) { s.close(); } if (connection != null) { connection.close(); // doesn't really close it ... just puts back in connection pool } } catch (Exception exc) { exc.printStackTrace(); } } }

 public class dispach extends HttpServlet { private java java; private pol pol; @Resource(name = "jdbc/web_student_tracker") private DataSource dataSource; @Override public void init() throws ServletException { try { java = new java(dataSource); } catch (Exception exc) { throw new ServletException(exc); } } protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { try { listteacher(request, response); } catch (Exception e) { e.printStackTrace(); } } private void listteacher(HttpServletRequest request, HttpServletResponse response) throws Exception { List<student> student = pol.getstudent(); request.setAttribute("select", student); //fix RequestDispatcher dispatcher = request.getRequestDispatcher("/NewFile.jsp"); dispatcher.forward(request, response); } }

 <%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%> <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %> <!DOCTYPE html> <html> <head> <meta charset="ISO-8859-1"> <title>Insert title here</title> </head> <body> <table> <c:forEach var="tempstudent" items="${select}"> <tr> <td>${tempstudent.uname}</td> </tr> </c:forEach> </table> </body> </html>

您在這一行中使用了pol成員變量List<student> student = pol.getstudent(); dispatch#listteacher方法中,但尚未初始化。 您必須首先初始化它(在構造函數中,或以其他方式)才能對其調用方法,否則您確實會得到NullPointerException

還要考慮將您的類命名為 kebab-cased,例如Dispatch而不是dispatch 這就是 Java 類命名約定。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM