- - PR -
JavaBeansについて教えてください。
投稿者 | 投稿内容 | ||||||||
---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2004-10-24 19:08
fuuです。
JavaBeansについて勉強しています。 それで、 jspからJavaBeansを呼び出そうとしたのですが、 下記のようなエラーが出てしまい、困っています。 -------------ここから---------------------------------------------------------- HTTP Status 500 - ------------------------------------------------------------------------------- type Exception report message description The server encountered an internal error () that prevented it from fulfilling this request. exception org.apache.jasper.JasperException: /jsp/jsp02.jsp(2,0) The value for the useBean class attribute db.bean_dbSearch02 is invalid. org.apache.jasper.compiler.DefaultErrorHandler.jspError(DefaultErrorHandler.java:39) org.apache.jasper.compiler.ErrorDispatcher.dispatch(ErrorDispatcher.java:407) org.apache.jasper.compiler.ErrorDispatcher.jspError(ErrorDispatcher.java:150) org.apache.jasper.compiler.Generator$GenerateVisitor.visit(Generator.java:1225) org.apache.jasper.compiler.Node$UseBean.accept(Node.java:1116) org.apache.jasper.compiler.Node$Nodes.visit(Node.java:2163) org.apache.jasper.compiler.Node$Visitor.visitBody(Node.java:2213) org.apache.jasper.compiler.Node$Visitor.visit(Node.java:2219) org.apache.jasper.compiler.Node$Root.accept(Node.java:456) org.apache.jasper.compiler.Node$Nodes.visit(Node.java:2163) org.apache.jasper.compiler.Generator.generate(Generator.java:3269) org.apache.jasper.compiler.Compiler.generateJava(Compiler.java:244) org.apache.jasper.compiler.Compiler.compile(Compiler.java:470) org.apache.jasper.compiler.Compiler.compile(Compiler.java:451) org.apache.jasper.compiler.Compiler.compile(Compiler.java:439) org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:511) org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:295) org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:292) org.apache.jasper.servlet.JspServlet.service(JspServlet.java:236) javax.servlet.http.HttpServlet.service(HttpServlet.java:802) note The full stack trace of the root cause is available in the Apache Tomcat/5.0.27 logs. -------ここまでです。---------------------------------------------------------- ファイルbean_dbSearch02.javaは、 [Tomcatのフォルダ]\webapps\jsp\WEB-INF\dbにあります。 bean_dbSearch02.javaをコンパイルしてもエラーは出ませんでした。 内容は、 ------------ここから---------------------------------------------------- package db; import java.io.*; import java.util.*; import java.sql.*; public class bean_dbSearch implements Serializable { private ArrayList result; private class Software { public String id; public String nam; public String gdate; public String grade; } public bean_dbSearch(){} public void execute(){ try{ Class.forName("org.gjt.mm.mysql.Driver"); Connection db=DriverManager.getConnection("jdbc:mysql://localhost/db02?user=****&password=****&useUnicode=true&characterEncoding=Shift_JIS"); Statement sttSql=db.createStatement(); ResultSet rs=sttSql.executeQuery("SELECT * FROM softlist"); result=new ArrayList(); while(rs.next()){ Software soft=new Software(); soft.id =rs.getString("id"); soft.nam =rs.getString("nam"); soft.gdate =rs.getString("gdate"); soft.grade =rs.getString("grade"); result.add(soft); } sttSql.close(); db.close(); }catch(Exception e){ e.printStackTrace(); } } public int getResultCount(){ return result.size(); } public String getId(int index){ Software soft=(Software)result.get(index); return soft.id; } public String getNam(int index){ Software soft=(Software)result.get(index); return soft.nam; } public String getGdate(int index){ Software soft=(Software)result.get(index); return soft.gdate; } public String getGrade(int index){ Software soft=(Software)result.get(index); return soft.grade; } } ------ここまでです。------------------------------------------------------- エラーをみて、JavaBeansに問題があるのでは・・・と思っているのですが。 環境は、 OS:WinXP java:j2sdk1.4.2_05 TomcatはTomcat 5.0.27にある5.0.27 exeをインストールしました。 どうかご教授お願いいたします。 | ||||||||
|
投稿日時: 2004-10-24 20:12
WEB-INF/classesの下にdbディレクトリをおかないとだめなような・・・ | ||||||||
|
投稿日時: 2004-10-25 02:35
Odakaz様、返信ありがとうございます。
bean_dbSearch02.javaのファイルがあるフォルダごとWEB-INF/classesの下においてみたのですが、 下記のようなエラーが出て、調べてみたのですが、解決できません。 試しに、bean_dbSearch02.javaのファイルを本についているプログラムにして、接続の部分などを 変更して試みたのですが、結果は同じでした。 どうかご教授お願いします。 -----ここから--------------------------------------------- HTTP Status 500 - -------------------------------------------------------------------------------- type Exception report message description The server encountered an internal error () that prevented it from fulfilling this request. exception org.apache.jasper.JasperException org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:372) org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:292) org.apache.jasper.servlet.JspServlet.service(JspServlet.java:236) javax.servlet.http.HttpServlet.service(HttpServlet.java:802) root cause java.lang.NullPointerException db.bean_dbSearch02.getResultCount(bean_dbSearch02.java:43) org.apache.jsp.jsp.jsp02_jsp._jspService(jsp02_jsp.java:70) org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:94) javax.servlet.http.HttpServlet.service(HttpServlet.java:802) org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:324) org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:292) org.apache.jasper.servlet.JspServlet.service(JspServlet.java:236) javax.servlet.http.HttpServlet.service(HttpServlet.java:802) note The full stack trace of the root cause is available in the Apache Tomcat/5.0.27 logs. ---------------ここまでです。----------------------------------------------------- | ||||||||
|
投稿日時: 2004-10-25 07:27
fuuさん、こんにちは。
execute()が呼び出される前に、getNam()等が呼び出されている ということはないでしょうか? | ||||||||
|
投稿日時: 2004-10-25 11:37
もともとの問題は解決して、別の問題が出てきたってトコでしょうか。
このスタックトレースからすると、メンバ変数のresultがNullなのかなぁと いうことくらいですね。 JSPをコンパイルした.javaファイルの該当箇所もスタックトレースに載っていますから、 そこから解決の糸口を探られてはいかがでしょうか。 | ||||||||
|
投稿日時: 2004-10-28 01:25
返信ありがとうございます。
もう一度、ファイルを見直し、ファイルの置き場所を変更して、初めから試みたのですが、 前回と同様に下記のエラーが解決できませんでした。 エラーが出ているところも検討してみたのですが、どう修正したら良いのか解りません。どうか、ご教授お願いいたします。 =========エラーは、ここから============================================== HTTP Status 500 - -------------------------------------------------------------------------------- type Exception report message description The server encountered an internal error () that prevented it from fulfilling this request. exception org.apache.jasper.JasperException: /jsp2/dbMvc.jsp(2,0) The value for the useBean class attribute bean_dbSearch03 is invalid. org.apache.jasper.compiler.DefaultErrorHandler.jspError(DefaultErrorHandler.java:39) org.apache.jasper.compiler.ErrorDispatcher.dispatch(ErrorDispatcher.java:407) org.apache.jasper.compiler.ErrorDispatcher.jspError(ErrorDispatcher.java:150) org.apache.jasper.compiler.Generator$GenerateVisitor.visit(Generator.java:1225) org.apache.jasper.compiler.Node$UseBean.accept(Node.java:1116) org.apache.jasper.compiler.Node$Nodes.visit(Node.java:2163) org.apache.jasper.compiler.Node$Visitor.visitBody(Node.java:2213) org.apache.jasper.compiler.Node$Visitor.visit(Node.java:2219) org.apache.jasper.compiler.Node$Root.accept(Node.java:456) org.apache.jasper.compiler.Node$Nodes.visit(Node.java:2163) org.apache.jasper.compiler.Generator.generate(Generator.java:3269) org.apache.jasper.compiler.Compiler.generateJava(Compiler.java:244) org.apache.jasper.compiler.Compiler.compile(Compiler.java:470) org.apache.jasper.compiler.Compiler.compile(Compiler.java:451) org.apache.jasper.compiler.Compiler.compile(Compiler.java:439) org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:511) org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:295) org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:292) org.apache.jasper.servlet.JspServlet.service(JspServlet.java:236) javax.servlet.http.HttpServlet.service(HttpServlet.java:802) note The full stack trace of the root cause is available in the Apache Tomcat/5.0.27 logs. ===========ここまでです。================================================= bean_dbSearch03.java とdbMvc.jsp の置き場所は、 C:\Program Files\Apache Software Foundation\Tomcat 5.0\webapps\jsp-examples\jsp2 です。 ===========bean_dbSearch03.javaは、======================================================== import java.io.*; import java.util.*; import java.sql.*; public class bean_dbSearch03 implements Serializable { private ArrayList result; private class Kii { public String kcal; public String solt; public String cho; } public void bean_dbSearch03(){} /* コンストラクタ */ public void execute(){ /* データベースに接続 */ try{ Class.forName("org.gjt.mm.mysql.Driver"); Connection db=DriverManager.getConnection("jdbc:mysql:///KII?user=****&password=****&useUnicode=true&characterEncoding=SJIS"); Statement sttSql=db.createStatement(); ResultSet rs=sttSql.executeQuery("SELECT * FROM EIYOU_TABLE"); result=new ArrayList(); while(rs.next()){ Kii ta=new Kii(); ta.kcal = rs.getString("KCAL"); ta.solt = rs.getString("SOLT"); ta.cho = rs.getString("CHO"); result.add(ta); } sttSql.close(); db.close(); }catch(Exception e){ e.printStackTrace(); } } public int getResultCount(){ return result.size(); } public String getKcal(int index){ Kii ta=(Kii)result.get(index); return ta.kcal; } public String getSolt(int index){ Kii ta=(Kii)result.get(index); return ta.solt; } public String getCho(int index){ Kii ta=(Kii)result.get(index); return ta.cho; } } ========ここまでです。=========================================================== ========dbMvc.jspは、======================================== <%@ page contentType="text/html; charset=Shift_JIS" %> <jsp:useBean id="dbb" class="bean_dbSearch03" scope="page" /> <html> <head> <title>ソフトウェア情報一覧</title> </head> <body> <h1 style="background:#cccccc">ソフトウェア情報登録</h1> <table border="0"> <tr style="background:#00ccff"> <th>No.</th><th>名前</th><th>入手日</th> </tr> <% dbb.execute(); for(int i=0;i<dbb.getResultCount();i++){ %> <tr style="background:#ffffcc"> <td><%=dbb.getKcal(i)%></td> <td><%=dbb.getSolt(i)%></td> <td><%=dbb.getCho(i)%></td> <% } %> </table> </body> </html> ========ここまでです。======================================== どうかお気づきのてんがございましたら、ご教授お願いいたします。 | ||||||||
|
投稿日時: 2004-10-28 12:01
これがすべてを物語っていると思います・・・。 useBeanで指定しているクラスが無効と言ってますね。
その場所って、あんまりBeanを置かない場所だと思うのですが。すくなくとも、デフォルトの状態だと、そこにクラスを置いても読み込まれないような・・・? あと、置いてあるのは.javaじゃなくて.classですよね? | ||||||||
|
投稿日時: 2004-10-30 00:31
Odakaz様、返信ありがとうございます。
すみません、javaじゃなくて.classです。 両方ともC:Program Files\Apache Software Foundation\Tomcat 5.0\webapps\jsp-examples\jsp2 においてあります。 「その場所って、あんまりBeanを置かない場所だと思うのですが。 すくなくとも、デフォルトの状態だと、そこにクラスを置いても読み込まれないような・・・? 」 とは、javabeansは、置く場所に何か、指定があるのでしょうか? 参考にしていた本に書いてあるように、 C:\Program Files\Apache Software Foundation\Tomcat 5.0\webappsにjspというフォルダをつくり、 その中に、WEB-INF\classes とし、javaとclassファイルを置いていたのですが、 つながらなく、表示されなかったため、「bean の配置は、サーバマシンの CLASSPATH が通っているところからアクセスできれば、 どこに配置しても構いません。」と書いてあるWebを見て、以前にjspファイルを置いていたところに、 移動したのですが・・・。これは、間違いなのでしょうか? どうか、ご教授お願いします。 |