私の問題は、tryステートメントで変数を設定する必要があります。それ以外の場合は、コンパイルエラーが発生します。tryステートメントで変数を設定するのを避ける方法
後でその変数を使用する必要がありますが、現在は範囲外です。私はtry文の外で変数を初期化し、それをヌルに設定しましたが、外部にアクセスできるかもしれないと思っていましたが、まだNullPointerException
があります。
コードは以下のとおりです。読みやすくするためにコードを取り入れています。悪いコードだとわかっていますが、私はサーブレットを初めて使っています。 。
私はcreateDocs(...)を呼び出し、必要なパラメータを渡す別のクラスを作成しました。これは正常に動作します。だから私がrs.getString("name")
と呼んだときに私がNullPointerException
を得るのは、これがまさに私が他のクラス(便宜上mainメソッドから実行したもの)であり、期待どおりに動作するからです。
問題の変数は、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();
}
}
コードには、XSSの脆弱性が存在するように見えますか? –
私は本当の問題は、例外が発生した後も何も起こらないかのように続行することだと思います。例外をスローした場合やエラーを返す場合は、rsを設定する必要はありません。注:スタックトレースはどこに行きますか?ユーザーはスタックトレースを見ません。エラーが発生したことをユーザーに知らせるのがよりフレンドリーかもしれません。 –