我正试图通过JSP通过Web应用程序从我的数据库中获取某些值。 但由于NullpointerException,它总是给我一个内部服务器失败。 这些是我的文件:
文件:
<%@ page import="java.sql.*" %>
<%@ page contentType="text/html" pageEncoding="UTF-8"%>
<% Class.forName("com.mysql.jdbc.Driver"); %>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Webformular</title>
</head>
<body>
<h1>Webformular</h1>
<%!
public class Actor {
String url = "jdbc:mysql://localhost:3306/sakila";
String Benutzername = "root";
String Passwort = "";
Connection con = null;
PreparedStatement selectActors = null;
ResultSet resultSet = null;
public Actor(){
try {
con = DriverManager.getConnection(url, Benutzername, Passwort);
selectActors = con.prepareStatement("Select a.first_name,a.last_name, c.title"
+ "FROM actor a, film_actor b, film c"
+"WHERE a.first_name= ?"
+"AND a.last_name = ?"
+ "AND a.actor_id = b.actor_id"
+"AND b.film_id = c.film_id");
} catch (SQLException e){
e.printStackTrace();
}
}
public ResultSet getActors(String first, String last){
try {
selectActors.setString(1,first);
selectActors.setString(2,last);
resultSet = selectActors.executeQuery();
} catch (SQLException e){
e.printStackTrace();
}
return resultSet;
}}
%>
<%
String firstName = new String();
String lastName = new String();
if (request.getParameter("first") !=null) {
firstName = request.getParameter("first");
}
if (request.getParameter("last") !=null) {
lastName = request.getParameter("last");
}
Actor actor = new Actor();
ResultSet actors = actor.getActors(firstName, lastName);
%>
<table border="1">
<tbody>
<tr>
<td>First Name</td>
<td>Last Name</td>
<td>Title</td>
</tr>
<%while(actors.next()) { %>
<tr>
<td><%= actors.getString("first_name") %></td>
<td><%= actors.getString("last_name") %></td>
<td><%= actors.getString("title") %></td>
</tr>
<% } %>
</tbody>
</table>
</body>
</html>
文件:
<%@page contentType="text/html" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Spezifische Daten auswerten</title>
</head>
<body>
<h1>Spezifische Daten auswerten</h1>
<form name="Formular" action="anzeige.jsp" method="POST">
<table border="1">
<tbody>
<tr>
<td>First Name:</td>
<td><input type="text" name="first" value="" size="50" /></td>
</tr>
<tr>
<td>Last Name:</td>
<td><input type="text" name="last" value="" size="50" /></td>
</tr>
</tbody>
</table>
<input type="submit" value="Weiter" name="weiter" />
<input type="reset" value="Löschen" name="löschen" />
</form>
</body>
</html>
之前是否有人遇到过这个问题并可能对我有所帮助? 我已经做了一些研究并修复了某些错误,但部署中没有任何改变。我的第一个文件总是部署,但每当我想要检索数据时,就会出现NullpointerException。
答案 0 :(得分:0)
您的SQL在
之前连接没有空格的AND运算符+"WHERE a.first_name= ?"+"AND a.last_name = ?"+"AND a.actor_id = b.actor_id"
这可能会导致prepareStatement()或executeQuery()失败,但是您的JSP将继续执行,因为您正在捕获异常并将堆栈跟踪打印到Web服务器日志。
之后,selectActors或resultset将为null,并且只要您尝试使用它们就会得到NullPointerException。
所以:添加尝试在SQL中的问号后添加空格。