- - PR -
JSPエラー
1
| 投稿者 | 投稿内容 | ||||
|---|---|---|---|---|---|
|
投稿日時: 2004-06-09 21:48
初めての投稿です。早速質問なのですが、
JSPを実行したらこんなエラーが出ました。 org.apache.jasper.JasperException org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:358) org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:301) org.apache.jasper.servlet.JspServlet.service(JspServlet.java:248) javax.servlet.http.HttpServlet.service(HttpServlet.java:856) org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:305) と java.lang.NullPointerException org.apache.jsp.flash_jsp._jspService(flash_jsp.java:101) org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:133) javax.servlet.http.HttpServlet.service(HttpServlet.java:856) org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:311) org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:301) org.apache.jasper.servlet.JspServlet.service(JspServlet.java:248) javax.servlet.http.HttpServlet.service(HttpServlet.java:856) org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:305) です。どうしてエラーが出るのか調べてみたんですが、分かりませんでした。ソースは下です。 flash.jsp------------------------------------------------ <%@ page language="java" contentType="text/html; charset=shift_jis"%> <%@ page import="java.util.Vector, java.util.Hashtable" %> <jsp:useBean id="bean" scope="session" class="flashlink.FlashDBBean"> <% bean.doSelect();%> </jsp:useBean> <% Vector result = bean.getResult(); int setboolean = bean.getboolean(); int nowclassmun; int nextclassmun; int setmun; String setcode = request.getParameter("action"); String classname[] = new String[10]; classname[0] = "タイトル0"; classname[1] = "タイトル1"; classname[2] = "タイトル2"; classname[3] = "タイトル3"; classname[4] = "タイトル4"; classname[5] = "タイトル5"; classname[6] = "タイトル6"; classname[7] = "タイトル7"; classname[8] = "タイトル8"; classname[9] = "タイトル9"; %> <HTML> <HEAD> <TITLE></TITLE> <LINK rel="stylesheet" href="link.css" type="text/css"> </HEAD> <BODY background="image/topbg.gif" TOPMARGIN="0"> <%-- -------------------------------------------------- --%> <% if(setboolean == 1){ nowclassmun=0; nextclassmun=1; %> <CENTER> <TABLE border="0" cellpadding="2" cellspacing="2" width="100%" class="none"> <TBODY> <TR> <TD colspan="3" class="menua" align="center">■ <%=classname[0] %> ■</TD> </TR> <% for(int i = 0; i < result.size(); i++){ Hashtable hash = (Hashtable)result.get(i); nowclassmun = ((Integer)hash.get("class")).intValue(); if(nowclassmun < nextclassmun){ %> <TR> <TD class="menub" width="230"><A href="<%=hash.get("url") %>"><%=hash.get("title") %></A></TD> <TD class="menuc"><%=hash.get("comment") %></TD> <TD class="menuc" width="200"><%=hash.get("producer") %></TD> </TR> <% }else if(nowclassmun >= nextclassmun){ %> </TBODY> </TABLE> <BR> <BR> <BR> <TABLE border="0" cellpadding="2" cellspacing="2" width="100%" class="none"> <TBODY> <TR> <TD colspan="3" class="menua" align="center">■ <%=classname[nowclassmun] %> ■</TD> </TR> <TR> <TD class="menub" width="230"><A href="<%=hash.get("url") %>"><%=hash.get("title") %></A></TD> <TD class="menuc"><%=hash.get("comment") %></TD> <TD class="menuc" width="200"><%=hash.get("producer") %></TD> </TR> <% nextclassmun = nowclassmun+1;} }; %> </TBODY> </TABLE> <BR> </CENTER> <% } %> <%-- -------------------------------------------------- --%> <% if(setboolean == 2){ setmun = Integer.parseInt(setcode); %> <CENTER> <TABLE border="0" cellpadding="2" cellspacing="2" width="100%" class="none"> <TBODY> <TR> <TD colspan="3" class="menua" align="center">■ <%=classname[setmun] %> ■</TD> </TR> <% for(int i = 0; i < result.size(); i++){ Hashtable hash = (Hashtable)result.get(i); %> <TR> <TD class="menub" width="230"><A href="<%=hash.get("url") %>"><%=hash.get("title") %></A></TD> <TD class="menuc"><%=hash.get("comment") %></TD> <TD class="menuc" width="200"><%=hash.get("producer") %></TD> </TR> <% } %> </TBODY> </TABLE> <BR> </CENTER> <% } %> </BODY> </HTML> FlashDBBean.java------------------------------------------------- package flashlink; import java.sql.*; import java.util.*; import java.util.Vector; import java.util.Hashtable; public class FlashDBBean { private Connection con = null; private Statement stmt = null; private DBinterface pool; private int setboolean; private String setcode = null; private String query; private Vector result; public FlashDBBean() throws Exception{ result = null; con = null; pool = DBinterface.getInstance(); if(setcode==null){setcode="all";} if(setcode!=null && setcode.equals("all")){ setboolean = 1; query = "select * from flash order by class asc"; }else{ setboolean = 2; query = "select * from flash where class = '"+setcode+"' order by class asc"; } } public Vector doSelect() throws Exception { try { con = pool.getConnection(); stmt = con.createStatement(); ResultSet rs = stmt.executeQuery(query); stmt.close(); pool.freeConnection(con); return resultSetToVector( rs ); } catch( SQLException e ) { ; } return null; } // Vector挿入 private Vector resultSetToVector(ResultSet rs) { Vector v = new Vector(); try { ResultSetMetaData meta = rs.getMetaData(); int cols = meta.getColumnCount(); while( rs.next() ) { Hashtable h = new Hashtable(); for (int i=1; i <= cols; i++) { h.put( meta.getColumnName(i), rs.getObject(i) ); } v.add(h); } } catch ( Exception e ) {;} return v; } public Vector getResult() { return result; } public int getboolean() { return setboolean; } } DBinterface.java------------------------------------------------- package flashlink; import java.sql.*; import java.util.*; public class DBinterface { private String driver; private String url; private String user; private String password; private int maxConnection; private int checkedOut; private Vector connectionPool = new Vector(); private static DBinterface instance; // インスタンスを取得 public static synchronized DBinterface getInstance() { if (instance == null) { instance = new DBinterface(); } return instance; } //コンストラクタ private DBinterface() { this.driver = "org.gjt.mm.mysql.Driver"; this.url = "jdbc:mysql://localhost:3036/flashkink?useUnicode=true&characterEncoding=SJIS"; this.user = ""; this.password = ""; this.maxConnection = 10; } // コネクションを取得 public synchronized Connection getConnection() throws Exception { Connection con = null; if (connectionPool.size() > 0) { con = (Connection) connectionPool.firstElement(); connectionPool.removeElementAt(0); try { if (con.isClosed()) { con = getConnection(); } } catch (SQLException e) { con = getConnection(); } } else if (maxConnection == 0 || checkedOut < maxConnection) { con = newConnection(); } if (con != null) { checkedOut++; } return con; } // 新規にコネクションを作成 private Connection newConnection() throws Exception { Class.forName(driver); return DriverManager.getConnection(url, user, password); } // コネクションを返却 public synchronized void freeConnection(Connection con) { connectionPool.addElement(con); checkedOut--; notifyAll(); } // すべてのコネクションを開放 public synchronized void release() { Enumeration enumConnections = connectionPool.elements(); while (enumConnections.hasMoreElements()) { Connection con = (Connection)enumConnections.nextElement(); try { con.close(); } catch (SQLException e) { } } connectionPool.removeAllElements(); } } 長ったらしくなってすみません。 よろしくお願い致します。 | ||||
|
投稿日時: 2004-06-09 22:04
あんまりアドバイスはできませんが下の方のエラーは
> java.lang.NullPointerException > org.apache.jsp.flash_jsp._jspService(flash_jsp.java:101) と出ているのでソースを見てみた方が早いと思います。 上の方はわかりません(爆 あと、実行環境やエラーの起きるときの条件などを書く方がいいです。 | ||||
|
投稿日時: 2004-06-09 22:07
Tomcat4とMySQL4です。
| ||||
|
投稿日時: 2004-06-10 08:54
スタック・トレースを知り、うまく利用して下さい。 workDir その他諸々が標準のままなら、 $CATALINA_BASE/work/Standalone/localhost/"コンテキスト名"/flash_jsp.java の 101 行で NullPointerException という意味です。 flash_jsp.java は、Tomcat が flash.jsp を java ソースに変換したものです。 101 行付近で原因を調べ、実際のファイル flash.jsp での対応するであろう 箇所を修正して下さい。 | ||||
|
投稿日時: 2004-06-12 12:31
なんだかポート番号が間違っていました。
直したら問題なく動きました。 ぼんじぃ様、はしもと様、ありがとうございました。 | ||||
1
