動的なWebプロジェクトを作成するのは初めてです。すべてのことが正しく理解されているかどうかはわかりません。サーブレットからJSPファイルにresultSetを渡します。 ArrayList型の属性は常にnullです。
Books(id_book、title、author、isbn、description)という1つのテーブルのみを含むmySQLデータベースからブックをブラウズするための簡単なWebアプリケーションを作成しようとしています。
私はJSPファイルに作成されたリストを渡すことになっているBookSelectサーブレット、、、私はデータベースからデータを取得し、<の.bookをArrayListにするResultSetからそれを変換するために使用ドライバクラスを、>用意しました最終的にbookselectJSP私はウェブサイト上に結果を提示したいと思うファイル。
ドライバ:
public class Driver {
private ResultSet resultSet;
public ArrayList<Book> resultList;
private Connection myCon;
private Statement myStatement;
public Driver() {
try {
this.resultList = new ArrayList<Book>();
myCon = DriverManager.getConnection("jdbc:mysql://localhost:3306/firstbase","root","myPassword");
myStatement = myCon.createStatement();
resultSet = myStatement.executeQuery("select * from books");
while(resultSet.next()){
resultList.add(new Book(Integer.parseInt(resultSet.getString(1)),resultSet.getString(2),resultSet.getString(3),resultSet.getString(4),resultSet.getString(5)));
}
resultSet.close();
myStatement.close();
myCon.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
public ArrayList<Book> getResultList(){
resultList.forEach(e -> System.out.println("here->" + e + "<-"));
return resultList;
}
public ResultSet getResultSet(){
return this.resultSet;
}
BookSelect
protected void service(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
RequestDispatcher rd = getServletContext().getRequestDispatcher("/bookselectJSP.jsp");
Driver myDriver = new Driver();
//myDriver.getResultList().add(new Book(1, "aa", "aa", "aa", "aa"));
request.setAttribute("resultList", myDriver.getResultList());
rd.forward(request, response);
}
bookselectJSP:
<h1 id="titleBar">List of your books</h1>
<%
ArrayList<Book> rows = (ArrayList<Book>) request.getAttribute("resultList");
%>
<label><%=rows.get(0).toString()%></label>
(今私はちょうどラベルでも、1行を表示しようとしています)
Driverクラスのmainメソッドを追加して実行すると、すべてがうまく動作しているようです。データを取得してArrayListに変換し、そのリストから結果を出力することができます。 しかし、サーブレットクラスからアクセスしようとすると、常にnullになります。
エラーメッセージ: This is an error message
奇妙なことは、私は(サーブレットのserviceメソッド内のコードをコメント)サーブレットでリストに何かを追加するとき、それは渡されているということです。 私は今からどのように進めるのか全く分かりません。私は完全に迷っています。助けてください。
************************************解決しようと********* *****************************
問題は、tomcatが適切なドライバを見つけることができなかったことです、私はその奇妙なbeacause私はWEB-INF/libだけでなく、$ CATALINA_HOME/libにも入れました。すべてが正しく設定されています。 - それは:)
あるDriverManager.registerDriver(new com.mysql.jdbc.Driver());
私はそれは結局のところ、必要されるべきではないと言われましたが、あなたは何を知っていますかのよう:ちょうど接続を開始する前に次の行を追加して助けたものをとにかく 、
を持っている場合、問題はコード自体のドライバーに関連することが判明し、していないが、私は本当に、あなたの努力に感謝し、あなたの応答移行したピジョンいただきありがとうございます:) 私はしましたコメントをしてください編集した投稿に説明を残した。 – zjemCiChleb
問題はありませんが、データベースを使用してコンセンサスを作成するためにドライバクラスをロードする必要がある場合、DriverManager.registerDriver()を呼び出す必要はなく、class.forName(ドライバクラス)を呼び出してドライバを登録できます。 –