Моя проблема в том, что мне нужно установить переменную в операторе try, иначе я получаю ошибку компиляции.
Позже мне нужно использовать эту переменную, но теперь она выходит за рамки, или я так полагаю. Я инициализирую переменную вне оператора try и устанавливаю ее на нуль, я думал, что тогда она может быть доступна снаружи, но я все равно получаю NullPointerException
.
Код приведен ниже, и многие из них сделаны для облегчения чтения - я знаю, что это плохой код, но я новичок в сервлетах и просто хотел, чтобы он работал со всеми движущимися частями, делающими то, что они должны.
Я создал еще один класс, который вызывает createDocs (...) и передает необходимые параметры, и он работает нормально. Так что меня интересует, почему, когда я вызываю rs.getString("name")
, я получаю NullPointerException
, поскольку это именно то, что я делаю из другого класса (для удобства запускаю из основного метода), и все работает как положено.
Рассматриваемой переменной является переменная ResultSet "rs" -
public class AgReportServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
public AgReportServlet() {
super();
}
public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
ResultSet rs = null;
try {
rs = docs.getDocs(con, start, end, zone, locality);
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (InstantiationException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IllegalAccessException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
response.setContentType("text/xml");
PrintWriter out = response.getWriter();
out.println("<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n" +
out.println(
"<table border=\"0\" cellspacing=\"0\" cellpadding=\"6\">\n");
// I have a resultset object need to iterate through it to display the file names
try {
while (rs.next()) { // page through the result set
out.println(
" <tr>\n" +
" <td>: " + rs.getString("name") + "</td>\n" +
" </tr>\n"
);
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
out.println(
"</table></body>\n" +
"</html>"
);
out.flush();
out.close();
}
}