[pgsql-jp: 28236] ServletとPostgreSQLの接続エラー
Takeuchi
takeu-al @ tf6.so-net.ne.jp
2002年 12月 10日 (火) 01:21:20 JST
takeuchi と申します。
「ServletとPostgreSQLの接続エラー」について質問させて下さい。
環境は以下の通りです。
OS:Vine Linux 2.5
Webサーバ:Apache1.3.26
サーブレット:Tomcat4.0
JDK:JDK1.4
/usr/local/jakarta-tomcat-4.0.5/webapps/examples/WEB-INF/classes/HelloWorldE
xample.java
は問題なく動きました。よって
tomcat とapacheの連携は問題ないと思われます。
PostgreSQL起動後
http://localhost/examples/servlets/showform2.html
のフォームからBookmark2.java
のサーブレットを呼び出すと以下のようなエラーがでました。
NullPointerExceptionという事で、オブジェクトが空である可能性が
高いです。可能性的には以下の部分が問題であるようですが。
DriverManager.getConnection("jdbc:postgresql://localhost/bookmark");
どうも、データベースへの接続の構文を見てみますと、
DriverManager.getConnection(url,user.pwd);
と書いてあります。私自身、perl のプログラムでPostgreSQLと
接続する際に、パスワードとか設定しなくてもつなげるのですが。
やはりuser ID とpasswordは必要なのでしょうか。
私自身、見落としている点があると思いますので
どなたか気づいた点が御座いましたらご教授お願い致します。
java.lang.NullPointerException
at Bookmark2.doPost(Bookmark2.java:57)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:760)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(Application
FilterChain.java:247)
at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterCh
ain.java:193)
at filters.ExampleFilter.doFilter(ExampleFilter.java:149)
at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(Application
FilterChain.java:213)
at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterCh
ain.java:193)
at
org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.ja
va:243)
......
......
......
--------------Showform2.html-----------------------------
<!doctype html public "-//w3c//dtd html 4.0 transitional//en">
<html>
<head>
<meta http-equiv="Content-type" content="text/html"; charset=EUC-JP">
<title>HTLM Form</title>
</head>
<body>
<form name="setform" action="/examples/servlet/Bookmark2" method="POST">
member ID:<br>
<input type="text" name="memberid" size="20" MAXLENGTH="10"><br>
password :<br>
<input type="password" name="password" size="20" MAXLENGTH="10"><br>
searchkeyword:<br>
<input type="text" name="searchword" size="20" MAXLENGTH="20"><br>
<center>
<input type="submit" value="submit">
</center>
</form>
</body>
</html>
-----------------Bookmark2.java----------------------------
import javax.servlet.*;
import javax.servlet.http.*;
import java.io.*;
import java.util.*;
import java.sql.*;
public class Bookmark2 extends HttpServlet {
Connection con = null;
String html_header = "<!doctype html public \"-//w3c//dtd html 4.0
transitional//en\">\n"
+ "<html>\n<head>\n"
+ "<title>Interest Servlet</title>\n"
+ "</head>\n"
+ "<body>\n";
String html_footer = "</body>\n</html>\n";
public void doPost(HttpServletRequest req, HttpServletResponse resp) throws
ServletException,IOException {
String memberid = req.getParameter("memberid");
String password = req.getParameter("password");
try {
// ドライバクラスをロード
Class.forName("com.postgresql.jdbc.Driver"); // PostgreSQLの場合
// データベースへ接続
con =
DriverManager.getConnection("jdbc:postgresql://localhost/bookmark"); //
}catch ( ClassNotFoundException e) {
e.printStackTrace();
} // end of catch
catch ( SQLException e) {
e.printStackTrace();
} // end of catch
resp.setContentType("text/html; charset=EUC-JP");
PrintWriter pw = resp.getWriter();
file://ヘッダーの出力
pw.println(html_header);
String searchword = req.getParameter("searchword");
System.out.println(searchword);
pw.println("<table>");
// ステートメントオブジェクトを生成
try {
Statement stmt = con.createStatement();
String sql = "SELECT * FROM bookmark4 " + "WHERE keyword = " + "'" +
searchword + "'" + ";";
System.out.println(sql);
// クエリーを実行して結果セットを取得
ResultSet rs = stmt.executeQuery(sql);
// 検索された行数分ループ
while(rs.next()){
// directoryを取得
String directory = rs.getString("directory");
// URLを取得
String url = rs.getString("URL");
// キーワードを取得
String keyword = rs.getString("keyword");
// 表示
pw.println("<tr>");
pw.println("<td>" + directory + "</td>");
pw.println("<td>" + url + "</td>");
pw.println("<td>" + keyword + "</td>");
pw.println("</tr>");
}
// データベースから切断
stmt.close();
con.close();
pgsql-jp メーリングリストの案内