- PR -

ブラウザからサーブレットを実行すると何も表示されない

投稿者投稿内容
マイナーリーグ
会議室デビュー日: 2007/05/23
投稿数: 9
投稿日時: 2007-05-25 07:25
現在、Webとデータベース(mysql)を連携する学習をしております。内容は

@Beanからデータベースに接続する。(CarDBBean.java)
Aサーブレットでリクエストを受け付る。(Sample5.java)
BJSPで結果を表示する。(Sample5.jsp)

それぞれのファイルにコードを記述し、@・Aをコンパイル後、
WebブラウザのURLに
http://localhost:8080/YJKSample08/servlet/Sample5
と入力したところ、目的の物(ここではデータベースのデータ)が表示されません。
特にエラーが表示されるわけでもなく、真っ白の画面になります。
web.xmlの記述が悪いのでしょうか??

web.xmlのコード内容は、

<?xml version="1.0" encoding="ISO-8859-1"?>

<web-app xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"
version="2.4">

<display-name>YasaJava</display-name>
<description>YasaJava</description>

<servlet>
<servlet-name>Sample1</servlet-name>
<servlet-class>Sample1</servlet-class>
</servlet>

<servlet-mapping>
<servlet-name>Sample1</servlet-name>
<url-pattern>/servlet/Sample1</url-pattern>
</servlet-mapping>

<servlet>
<servlet-name>Sample2</servlet-name>
<servlet-class>Sample2</servlet-class>
</servlet>

<servlet-mapping>
<servlet-name>Sample2</servlet-name>
<url-pattern>/servlet/Sample2</url-pattern>
</servlet-mapping>

<servlet>
<servlet-name>Sample3</servlet-name>
<servlet-class>Sample3</servlet-class>
</servlet>

<servlet-mapping>
<servlet-name>Sample3</servlet-name>
<url-pattern>/servlet/Sample3</url-pattern>
</servlet-mapping>

<servlet>
<servlet-name>Sample4</servlet-name>
<servlet-class>Sample4</servlet-class>
</servlet>

<servlet-mapping>
<servlet-name>Sample4</servlet-name>
<url-pattern>/servlet/Sample4</url-pattern>
</servlet-mapping>

<servlet>
<servlet-name>Sample5</servlet-name>
<servlet-class>Sample5</servlet-class>
</servlet>

<servlet-mapping>
<servlet-name>Sample5</servlet-name>
<url-pattern>/servlet/Sample5</url-pattern>
</servlet-mapping>

<servlet>
<servlet-name>Sample6</servlet-name>
<servlet-class>Sample6</servlet-class>
</servlet>

<servlet-mapping>
<servlet-name>Sample6</servlet-name>
<url-pattern>/servlet/Sample6</url-pattern>
</servlet-mapping>

<servlet>
<servlet-name>SampleP1</servlet-name>
<servlet-class>SampleP1</servlet-class>
</servlet>

<servlet-mapping>
<servlet-name>SampleP1</servlet-name>
<url-pattern>/servlet/SampleP1</url-pattern>
</servlet-mapping>

<servlet>
<servlet-name>SampleP2</servlet-name>
<servlet-class>SampleP2</servlet-class>
</servlet>

<servlet-mapping>
<servlet-name>SampleP2</servlet-name>
<url-pattern>/servlet/SampleP2</url-pattern>
</servlet-mapping>

</web-app>

となっております。

また、ファイルの配置は、
C:\Program Files\Apache Software Foundation\Tomcat 5.5\webapps\YJKSample08\WEB-INF\classes\mybeans

@の(CarDBBean.class)ファイルをmybeansのフォルダ内に配置
Aの(Sample5.class)ファイルをclassesのフォルダ内に配置
Bの(Sample5.jsp)ファイルをYJKSample08のフォルダ内に配置

助言等、宜しくお願いします。

あしゅ
ぬし
会議室デビュー日: 2005/08/05
投稿数: 613
投稿日時: 2007-05-25 07:50
空の表示ならばサーブレットとしては動いているのでしょう。

サーブレットの中で例外を握りつぶしていませんか?

コード:
public void doGet(省略) {
  try {
  } catch (Exception e) {
    // 何もしていないのなら握りつぶしている
    // このように再送出すればTomcatのエラー画面が出る
    throw new ServletException(e);
  }
}


ただし、何も考えずにExceptionでまとめて捉えるのは良い方法とは
言えないので、SQLException等の単位で処理するようにしましょう。
マイナーリーグ
会議室デビュー日: 2007/05/23
投稿数: 9
投稿日時: 2007-05-25 08:16
あしゅさんおはようございます。
朝一番の返信ありがとうございます。

コード:
--------------------------------------------------------------------------------

public void doGet(省略) {
try {
} catch (Exception e) {
// 何もしていないのなら握りつぶしている
// このように再送出すればTomcatのエラー画面が出る
throw new ServletException(e);
}
}

上記のようにサーブレット書き換えて、再コンパイル後
再度ブラウザで実行してもまだ何も表示されませんでした。

コードの誤り等がないかもう一度探ってみます。


マイナーリーグ
会議室デビュー日: 2007/05/23
投稿数: 9
投稿日時: 2007-05-25 08:17
あしゅさんおはようございます。
朝一番の返信ありがとうございます。

コード:
--------------------------------------------------------------------------------

public void doGet(省略) {
try {
} catch (Exception e) {
// 何もしていないのなら握りつぶしている
// このように再送出すればTomcatのエラー画面が出る
throw new ServletException(e);
}
}

上記のようにサーブレット書き換えて、再コンパイル後
再度ブラウザで実行してもまだ何も表示されませんでした。

コードの誤り等がないかもう一度探ってみます。


あすか
ぬし
会議室デビュー日: 2006/07/12
投稿数: 309
投稿日時: 2007-05-25 10:02
Sample5.javaまでは到達しているんでしょうか?
到達しているのであればデバッグしてどこで止まっているのかを確認するべきです。

到達していないのであればweb.xmlに原因があるかもしれません。

<servlet-class>に記述されているクラス名は正しいですか?
パッケージが書かれていないのでデフォルトパッケージなのでしょうか。

書かれていませんが、表示されないのはSample5.javaだけですか?
他にもいろいろあるサーブレットはきちんと表示されているのでしょうか。

まずはSample5.javaまで到達しているのかどうかが気になります
小僧
ぬし
会議室デビュー日: 2002/08/14
投稿数: 526
投稿日時: 2007-05-25 12:58
仕事中に、サーブレットなどを使い始めた方から同様のトラブルの
相談を受けます。必ず試してもらう手順があります。

※APサーバがTomcatと仮定して

1. Tomcatのサンプルアプリケーションを動作させる
 意図:
   Tomcatのインストールと動作が正しく出来ているか確認

2. サンプル内の一番単純なサーブレットファイルのソースをいじって、
画面に何か文字を表示させる
 意図:
   どのファイルをいじれば良いか確認させる

3. 2のサンプルサーブレットクラスを別名コピーし、別の表示文字列を出力させる
 意図:
   web.xmlのどこに設定を加えれば良いか確認させる

4. 3のサーブレットクラスに、実際やりたいコードを書かせる
 意図:
   元々の問題が、設定なのかプログラムの問題なのかを判断させる


マイナーリーグさんの問題が設定ファイルなのかはわかりませんが、
初心者がweb.xmlの記述ミスでハマっている時間というのは、とても
勿体無いと思います、大昔の自分がそうでしたから。サーブレット
の基本的な作り方をだいだい覚えてから、設定ファイルの色々を勉強
した方がいいですよ。

急がば回れです。

主婦
会議室デビュー日: 2006/08/29
投稿数: 15
投稿日時: 2007-05-25 16:22
同様の現象が発生した際の対処方法です。

1.表示されたページのHTMLソースは終わりまできちんと吐き出されていますか?吐き出されていた(</HTML>までが吐き出されていた)場合はSQLコードが原因です。

2.すべて吐き出されていない場合の通信ログが取れますか?
  通信データを確認すれば、クライアント側か、サーバー側どちらに原因があるのかがわかります。

とりあえずは上記回答により、その先が見えます。
朝日奈ありす
大ベテラン
会議室デビュー日: 2007/05/02
投稿数: 189
お住まい・勤務地: 最北の地
投稿日時: 2007-05-25 20:19
doXxxx メソッドの一番頭に 一行出力するメソッドを追加してみてください。
それで web.xml の設定が間違えて無いか確認できます。

Tomcatのログをみてみるのもいいですよん。

一気につくってから試すのもいいですが、

画面表示>機能追加>確認>機能追加という方法もいいです。
後者のほうがお勧めはしますが、時間との相談です。

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