- PR -

servlet→db→jspの連携について

投稿者投稿内容
ティガー
会議室デビュー日: 2005/02/13
投稿数: 11
投稿日時: 2005-02-13 09:26
はじめまして。java初心者です。
windowsにてサーブレットでデータベースにアクセスして取得したデータをjspで表示、そこから情報を格納したり変更したりしたいのですが、サーブレットをどの様に作れば良いかで、自分なりに色々試しているのですがつまずいています。
下記は作成中のソースです。
package servletproject;

import javax.servlet.*;
import javax.servlet.http.*;
import java.sql.*;
import java.io.*;

public class Contrllerservlet
{

public void main(String[] args)
{

Connection con = null;
Statement stmt = null;

try
{
Class.forName("com.mysql.jdbc.Driver");
Stringurl= "jdbc:mysql:///kokyakuuseUnicode=true&characterEncoding=SJIS";
con = DriverManager.getConnection(url,"root","passwd");

stmt = con.createStatement();

String sql = "SELECT * FROM kokyaku";

ResultSet rs = stmt.executeQuery(sql);

while(rs.next())
{
int kokyaku_cd=rs.getInt("no");
String kokyaku_name=rs.getString("name");
String kokyaku_mail=rs.getString("mail");
}
}
catch(Exception ex)
{
}
public void doPost(httpServletRequestrequest,httpServletResponse response)
{

request.setCharacterEncoding("Shift_JIS");

request.setAttribute("KokyakuCD",kokyaku_cd);
request.setAttribute("KokyakuName",kokyaku_name);
request.setAttribute("KokyakuMail",kokyaku_mail);

ServletContext sc=getServletContext();
RequestDispatcher rd=sc.getRequestDispatcher("/jsp/kokyakuEXE.jsp");
rd.forward(request,response);
};
}
}
このソースでは、 public void doPos(httpServletRequestrequest,httpServletResponse response)
で式の開始が不正です。とコンパイルが出来ません。
ご教授宜しくお願い致します。
るぱん
ぬし
会議室デビュー日: 2003/08/01
投稿数: 1370
投稿日時: 2005-02-13 10:17
るぱんです。

Servletは
doPostもしくはdoGetではじめたらよいと思うのですが、
doPosなのでtが足りないと思います。

tを追加して試してみていただけますでしょうか?
パテ太
ベテラン
会議室デビュー日: 2004/08/16
投稿数: 64
お住まい・勤務地: 千葉・東京
投稿日時: 2005-02-13 10:50
パテ太と申します。
Servlet を作成されているのですよね?
doPost を使用したいようですから
ContrllerServlet を HttpServlet から派生させてください。
Servlet に main メソッドは必要ありません。

・・・というか main メソッドの中から
doPost のメソッド定義を出してください。
メソッド定義の中で別のメソッド定義はできません。
など・・・。
ティガー
会議室デビュー日: 2005/02/13
投稿数: 11
投稿日時: 2005-02-13 10:53
るぱん様
ご回答ありがとうございます。
私の誤字でした。すみません。
元のソースの方は、dopostなっています。
それで前記のようになっています。
アドバイスをお願いします。

ティガー
会議室デビュー日: 2005/02/13
投稿数: 11
投稿日時: 2005-02-13 11:09
パテ太様
ご回答ありがとうございます。
それでなのですが、派生?とはextends httpServletでしょうか?
それと、定義を出すとは?
まだ無知もので、宜しくお願いします。
るぱん
ぬし
会議室デビュー日: 2003/08/01
投稿数: 1370
投稿日時: 2005-02-13 11:31
public class Contrllerservlet extends HttpServlet{
にしたら動きますか?

[編集]
1.WEBServerに何を使用してますか?
2.(もし仮にTOMCATだとして)
  webappsの構成はserver.xmlやweb.xmlに記述していますか?
[/編集]


[ メッセージ編集済み 編集者: るぱん 編集日時 2005-02-13 11:41 ]
パテ太
ベテラン
会議室デビュー日: 2004/08/16
投稿数: 64
お住まい・勤務地: 千葉・東京
投稿日時: 2005-02-13 13:25
パテ太です。

モキチさんのクラスは
コード:
public class Contrllerservlet {
	public void main(String[] args) {	
  		 public void doPost(
			httpServletRequestrequest,
			httpServletResponse response
			) {
		};
	}
}


となっていますがこのように書くことはできません。
main の宣言の中に doPost の宣言が入っているため
エラーになります。

また、サーブレットはサーブレットコンテナに登録して
コンテナから呼び出されるという動作をするので
main メソッドは呼び出されることはありません。

Servletの初期化には init というメソッドを使用して
コード:
public class Contrllerservlet extends HttpServlet {
	public void init(ServletConfig config) {
		初期化処理
	}
	public void doPost(
			httpServletRequestrequest,
			httpServletResponse response
			) {
		HTMLのPOSTに応答するための処理
	}
}


っていう感じです。
YOU@IT
ぬし
会議室デビュー日: 2002/03/29
投稿数: 284
お住まい・勤務地: 大阪
投稿日時: 2005-02-13 16:17
うーむ、他の回答者の方が丁寧に回答されているところ話の腰を折るようで
恐縮ですが、モキチさんはSerlvetの前にもう少しJavaそのものを
学習されたほうが良いかと思います。

あと何を参考に作業されてますか?まともな書籍の1冊でもあれば
質問されているようなことはわかると思うのですが。。。

横槍ですみません。

--- 以下編集 ---

↑だけでは何の助けにもならないので、追記します。
現状のプログラムの修正方法は他の回答者の方々が示して下さっているので
その通りで良いと思いますが、まずは単純なServletだけのプログラムから
はじめてはどうでしょう?

たとえば、ブラウザに「Hello World」と表示するだけのものをServletで作ってみる。
それだけでも、Servletの意味やコンテナの使い方などはわかると思います。

それからJSP、さらにBeanを使ったいわゆるMVCモデルと順を追って発展
させていけば理解できると思いますです。


[ メッセージ編集済み 編集者: YOU@IT 編集日時 2005-02-13 16:28 ]

スキルアップ/キャリアアップ(JOB@IT)