- - PR -
ブラウザからサーブレットを実行すると何も表示されない
投稿者 | 投稿内容 | ||||||||
---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 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-25 21:13
import 宣言はどこにいったのでしょうか?
| ||||||||
|
投稿日時: 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; } } です。 | ||||||||
|
投稿日時: 2007-05-25 22:28
記述するのです。 JSPもソースに変換され、コンパイルされる普通のクラスです。 Sample5Servlet.javaに書いても、JSPから生成されたクラスはそんな事知らないんですね。
メッセージの通りVectorなんて型(クラス)なんてしらねーぞと怒ってますね。 | ||||||||
|
投稿日時: 2007-05-25 22:44
Sample5Servlet.class から org.apache.jsp.servlet.Sample5Jsp_jsp.class に
どうやって import 宣言わたしてるとおもったのだろうか・・ 聞いてみたい。 | ||||||||
|
投稿日時: 2007-05-26 21:26
まだ解決しておりませんが、BeanのVector型をJSPでもらえていないために、
Webブラウザで表示できていないみたいですね。ということはJSPの記述ミスが 原因ということは解かりましたが、 ただ参考書をなぞってやってる私には、参考書以外の事はまだ考えられるレベルに 達していません。 なので、アプリケーションサーバ・クラス・JSP・サーブレットの事をもう少し詳しく学び、また質問したいと思います。 杏さん、SUK2さん、主婦さん、小僧さん、あすかさん、あしゅさん返答ありがとうございました。 | ||||||||
|
投稿日時: 2007-05-28 08:55
>また非常に初歩的で事で申し訳ありませんが、主婦さんに質問で、
>通信ログを確認する場合にはどのようにすればよいのでしょうか? IEだと http://sonic64.com/2005-04-27.html 窓の杜にも WinPcapなどあります。 |