- PR -

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

投稿者投稿内容
マイナーリーグ
会議室デビュー日: 2007/05/23
投稿数: 9
投稿日時: 2007-05-25 20:25
こんばんわ。
あすかさん、小僧さん、主婦さん返答ありがとうございます。

http://www.javaroad.jp/opensource/js_tomcat2.htm
を参考に、基本的なファイルの配置・プログラム実行を試してみました。
すると、Webブラウザに正しく表示されました。
それに従い、初回投稿時のプログラムの実行をhttp://localhost:8080/YJKSample08/servlet/Sample5Jsp.jsp
で行ってみると、

type 例外レポート

メッセージ

説明 The server encountered an internal error () that prevented it from fulfilling this request.

例外

org.apache.jasper.JasperException: JSPのクラスをコンパイルできません

JSPファイル: /servlet/Sample5Jsp.jsp の中の4行目でエラーが発生しました
生成されたサーブレットのエラーです:
Vector cannot be resolved (or is not a valid type) for the field Sample5Jsp_jsp.colname

JSPファイル: /servlet/Sample5Jsp.jsp の中の4行目でエラーが発生しました
生成されたサーブレットのエラーです:
Vector cannot be resolved (or is not a valid type) for the field Sample5Jsp_jsp.data

JSPファイル: /servlet/Sample5Jsp.jsp の中の8行目でエラーが発生しました
生成されたサーブレットのエラーです:
colname cannot be resolved

JSPファイル: /servlet/Sample5Jsp.jsp の中の8行目でエラーが発生しました
生成されたサーブレットのエラーです:
The method getColname() is undefined for the type CarDBBean

JSPファイル: /servlet/Sample5Jsp.jsp の中の8行目でエラーが発生しました
生成されたサーブレットのエラーです:
data cannot be resolved

JSPファイル: /servlet/Sample5Jsp.jsp の中の25行目でエラーが発生しました
生成されたサーブレットのエラーです:
colname cannot be resolved

JSPファイル: /servlet/Sample5Jsp.jsp の中の29行目でエラーが発生しました
生成されたサーブレットのエラーです:
colname cannot be resolved

JSPファイル: /servlet/Sample5Jsp.jsp の中の36行目でエラーが発生しました
生成されたサーブレットのエラーです:
data cannot be resolved

JSPファイル: /servlet/Sample5Jsp.jsp の中の40行目でエラーが発生しました
生成されたサーブレットのエラーです:
Vector cannot be resolved or is not a type

JSPファイル: /servlet/Sample5Jsp.jsp の中の40行目でエラーが発生しました
生成されたサーブレットのエラーです:
Vector cannot be resolved or is not a type

JSPファイル: /servlet/Sample5Jsp.jsp の中の40行目でエラーが発生しました
生成されたサーブレットのエラーです:
data cannot be resolved


org.apache.jasper.compiler.DefaultErrorHandler.javacError(DefaultErrorHandler.java:84)
org.apache.jasper.compiler.ErrorDispatcher.javacError(ErrorDispatcher.java:328)
org.apache.jasper.compiler.JDTCompiler.generateClass(JDTCompiler.java:397)
org.apache.jasper.compiler.Compiler.compile(Compiler.java:288)
org.apache.jasper.compiler.Compiler.compile(Compiler.java:267)
org.apache.jasper.compiler.Compiler.compile(Compiler.java:255)
org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:556)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:293)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:291)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:241)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)


注意 原因のすべてのスタックトレースは、Apache Tomcat/5.5.9のログに記録されています

というエラーが表示されました。Sample5Jsp.jspについては参考書を何度も見直しても
誤りはないと思います。

(Sample5Jsp.jsp)コード内容

<%@ page contentType="text/html; charset=Shift_JIS" %>
<jsp:useBean id="cb" class="mybeans.CarDBBean"
scope="request"/>
<%!
Vector colname;
Vector data;
%>
<%
colname = cb.getColname();
data = cb.getData();
%>

<html>
<head>
<title>サンプル</title>
</head>
<body>
<center>
<h2>ようこそ</h2>
<hr />
お選びください。<br />
<br />
<table border="1">
<tr bgcolor="#E0C76F">
<%
for(int column=0; column<colname.size(); column++){
%>
<th>
<%= (String) colname.elementAt(column) %>
</th>
<%
}
%>
</tr>

<%
for(int row=0; row<data.size(); row++){
%>
<tr>
<%
Vector rowdata = (Vector) (data.elementAt(row));
for(int column=0; column<rowdata.size(); column++){
%>
<td>
<%= rowdata.elementAt(column) %>
</td>
<%
}
%>
</tr>
<%
}
%>
</table>
</center>
</body>
</html>

また非常に初歩的で事で申し訳ありませんが、主婦さんに質問で、
通信ログを確認する場合にはどのようにすればよいのでしょうか?

宜しくお願いします。
朝日奈ありす
大ベテラン
会議室デビュー日: 2007/05/02
投稿数: 189
お住まい・勤務地: 最北の地
投稿日時: 2007-05-25 21:13
import 宣言はどこにいったのでしょうか?
マイナーリーグ
会議室デビュー日: 2007/05/23
投稿数: 9
投稿日時: 2007-05-25 22:00
import宣言は、jspファイルにも記述するのでしょうか?

import宣言については
(Sample5Servlet.java)に記述しております。

import mybeans.*;
import javax.servlet.*;
import javax.servlet.http.*;

public class Sample5Servlet extends HttpServlet
{
public void doGet(HttpServletRequest request,
HttpServletResponse response)
throws ServletException
{
try{
//サーブレットコンテキストの取得
ServletContext sc = getServletContext();

//Beanの作成
CarDBBean cb = new CarDBBean();

//リクエストに設定
request.setAttribute("cb", cb);

//リクエストの転送
sc.getRequestDispatcher("/Sample5Jsp.jsp")
.forward(request, response);
}
catch(Exception e){
e.printStackTrace();
}
}
}

また、CarDBBeanの記述は

package mybeans;
import java.util.*;
import java.io.*;
import java.sql.*;

public class CarDBBean implements Serializable
{
private Vector<String> colname;
private Vector<Vector> data;

public CarDBBean()
{
try{
//接続の準備
String drv = "com.mysql.jdbc.Driver";
String url = "jdbc:mysql:///cardb";
String usr = "root";
String pw = "";

//データベースへの接続
Class.forName(drv);
Connection cn
= DriverManager.getConnection(url, usr, pw);

//問い合わせの準備
Statement st = cn.createStatement();
String qry = "SELECT * FROM car_table";

//問い合わせ
ResultSet rs = st.executeQuery(qry);

//列数の取得
ResultSetMetaData rm = rs.getMetaData();
int cnum = rm.getColumnCount();
colname = new Vector<String>(cnum);

//列名の取得
for(int i=1; i<=cnum; i++){
colname.addElement(rm.getColumnName(i).toString());
}

//行の取得
data = new Vector<Vector>();
while(rs.next()){
Vector<String> rowdata = new Vector<String>();
for(int i=1; i<=cnum; i++){
rowdata.addElement(rs.getObject(i).toString());
}
data.addElement(rowdata);
}

//接続のクローズ
rs.close();
st.close();
cn.close();
}
catch(Exception e){
e.printStackTrace();
}
}
public Vector getData()
{
return data;
}
public Vector getColname()
{
return colname;
}
}

です。

SUK2
ベテラン
会議室デビュー日: 2005/12/27
投稿数: 69
投稿日時: 2007-05-25 22:28
引用:
import宣言は、jspファイルにも記述するのでしょうか?

import宣言については
(Sample5Servlet.java)に記述しております。


記述するのです。
JSPもソースに変換され、コンパイルされる普通のクラスです。
Sample5Servlet.javaに書いても、JSPから生成されたクラスはそんな事知らないんですね。

引用:
JSPファイル: /servlet/Sample5Jsp.jsp の中の4行目でエラーが発生しました
生成されたサーブレットのエラーです:
Vector cannot be resolved (or is not a valid type) for the field Sample5Jsp_jsp.colname


メッセージの通りVectorなんて型(クラス)なんてしらねーぞと怒ってますね。
朝日奈ありす
大ベテラン
会議室デビュー日: 2007/05/02
投稿数: 189
お住まい・勤務地: 最北の地
投稿日時: 2007-05-25 22:44
Sample5Servlet.class から org.apache.jsp.servlet.Sample5Jsp_jsp.class に
どうやって import 宣言わたしてるとおもったのだろうか・・
聞いてみたい。
マイナーリーグ
会議室デビュー日: 2007/05/23
投稿数: 9
投稿日時: 2007-05-26 21:26
まだ解決しておりませんが、BeanのVector型をJSPでもらえていないために、
Webブラウザで表示できていないみたいですね。ということはJSPの記述ミスが
原因ということは解かりましたが、
ただ参考書をなぞってやってる私には、参考書以外の事はまだ考えられるレベルに
達していません。
なので、アプリケーションサーバ・クラス・JSP・サーブレットの事をもう少し詳しく学び、また質問したいと思います。

杏さん、SUK2さん、主婦さん、小僧さん、あすかさん、あしゅさん返答ありがとうございました。
主婦
会議室デビュー日: 2006/08/29
投稿数: 15
投稿日時: 2007-05-28 08:55
>また非常に初歩的で事で申し訳ありませんが、主婦さんに質問で、
>通信ログを確認する場合にはどのようにすればよいのでしょうか?

IEだと
http://sonic64.com/2005-04-27.html

窓の杜にも
WinPcapなどあります。


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