2016-03-29 11 views
0

データベースから取得したブラウザ情報を表示する簡単なJSPを作成しました。データベースへの接続jspを呼び出すシンプルなクラスを作成しました。 JasperExceptionとNullPointerExceptionの2つの例外が発生します。 どこが間違っていたのか分かりません。私はあなたの助けを求める。データベースに接続した単純なjsp

PS:私の英語のため申し訳ありません:) これはこれは、クラスConnessione

package connessione; 

import java.sql.*; 

public class Connessione 
{ 
    protected String driver = "com.mysql.jdbc.Driver", url = "jdbc:mysql//localhost:3306/world "; 
    protected String user = "root", psw = "informatica"; 

    public Connection connetti() 
    { 
     Connection dbConn = null; 

     try 
     { 
      Class.forName(driver); 
      dbConn = DriverManager.getConnection(url, user, psw); 
     } 
     catch(ClassNotFoundException ex) 
     { 
      ex.printStackTrace(); 
     } 
     catch(SQLException ex) 
     { 
      ex.getMessage(); 
     } 

     return dbConn; 
    } 

} 

と、これはエラーページであるindex.jspを

<%@ page language="java" contentType="text/html; charset=ISO-8859-1" 
pageEncoding="ISO-8859-1"%> 
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> 
<html> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> 
<title>WORLD</title> 
</head> 
<body> 
<%@ page language="java" import="java.sql.*" %> 
<%@ page language="java" import="connessione.*" %> 

<% 

Connessione con = new Connessione();   
Connection cnn = con.connetti(); 
Statement st = null; 
ResultSet rs = null; 
try 
{  

    st = cnn.createStatement(); 
    rs = st.executeQuery("SELECT code,name,continent FROM country"); 

    int code=0; 
    String name=""; 
    String continent=""; 


    out.println("<h1>ELENCO STATI:</h1>"); 

    while(rs.next()) 
    { 
     code = rs.getInt(1); 
     name = rs.getString(2); 
     continent = rs.getString(3);     
     out.println("<br><br><b>ID:</b> "+ code + " <br> " + "<b>COUNTRY:</b> "+name+" <br> " + "<b>CONTINENT</b> "+continent+" <br> "); 
    }  
} 
catch (SQLException e) 
{ 
    // TODO Auto-generated catch block 
    e.printStackTrace(); 
} 
finally 
{ 
    try 
    {   
     rs.close();   
     st.close(); 
     cnn.close(); 
    } 
    catch(SQLException e) 
    { 
      out.println(e.getMessage()); 
     }  
    } 

%> 

</body> 
</html> 

です

type Exception report 

message An exception occurred processing JSP page /index.jsp at line 47 

description The server encountered an internal error that prevented it from  fulfilling this request. 

exception 
org.apache.jasper.JasperException: An exception occurred processing JSP page /index.jsp at line 47 

44:  } 
45:  finally 
46:  {    
47:   rs.close();   
48:   st.close(); 
49:   cnn.close();  
50:  } 


Stacktrace: 
org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWra pper.java:574) 
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:4 76) 
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:396) 
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:340) 
javax.servlet.http.HttpServlet.service(HttpServlet.java:729) 
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52) 


root cause 
java.lang.NullPointerException 
org.apache.jsp.index_jsp._jspService(index_jsp.java:158) 
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70) 
javax.servlet.http.HttpServlet.service(HttpServlet.java:729) 
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:4 38) 
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:396) 
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:340) 
javax.servlet.http.HttpServlet.service(HttpServlet.java:729) 
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52) 


note The full stack trace of the root cause is available in the Apache Tomcat/8.0.33 logs. 

私はeclipse jee mars、tomcat v8.0 .33、およびmySQLを使用します。私はサーバー上で実行を使用して日食から。 私はwarファイルのエクスポートをtomcatのwebappsフォルダに保存します。私はmysqlコネクタがTomcatのlibフォルダにあり、両方の外部jarが私のプロジェクトのeclipseであると付け加えました。あなたは、彼らが最初のNULLでないかどうかを確認するために「近い」彼ら(おそらくRS)

チェックしようとすると、それはどちらかRSのように見える

+0

私は、jspがより明確になるようにすべてのコードを削除することをお勧めします。 – meyquel

+0

ログから完全なスタックトレースを取得します。 – nitind

答えて

1

彼は@Lawrenceティアニーが私のSQLはOKだった場合、私がチェック言ったように私は、単純なJavaアプリケーションを作っ...、解決していますコンソールに表示されたクエリの結果...まだNullPointerExceptionが発生しています...私は私の目を信じることができませんでした....そして、同じDBMS上の他のJavaアプリケーションが働いたので、DBとも言いました。しかし、私はそれが正しいとは限りませんでしたと思った私は理由を見ることができませんでした...その後、私はConnessioneクラスを削除し、私のクラスのコンストラクタでDBに接続しようとしました.... etそれはうまくいく!!!!!私は私のWebプロジェクトに戻ります。私はConnessioneクラスを削除し、JSPで直接接続します。私はなぜjspとクラスConnessioneを伝えていないのか分からないけど助けてくれてありがとう!!!

new jsp code it it !!!

<%@ page language="java" contentType="text/html; charset=ISO-8859-1" 
pageEncoding="ISO-8859-1"%> 
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"  "http://www.w3.org/TR/html4/loose.dtd"> 
<html> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> 
<title>WORLD</title> 
</head> 
<body> 
<%@ page language="java" import="java.sql.*" %> 

<% 
String JDBC_DRIVER = "com.mysql.jdbc.Driver"; 
String DB_URL = "jdbc:mysql://localhost:3306/world"; 
String USER = "root"; 
String pass = "informatica"; 
Connection dbConn = null; 
Statement st = null; 
ResultSet rs = null; 
try 
{  
    //Registro il driver del database 
    Class.forName(JDBC_DRIVER); 
    // Connessione al db tramite il driver 
    dbConn = DriverManager.getConnection(DB_URL, USER, pass); 
    if(!dbConn.isClosed()) 
    { 
     out.println("Connessione avvenuta con successo a mysql server. . ."); 
    } 
    st = dbConn.createStatement(); 
    rs = st.executeQuery("SELECT Code,name,continent from country where name like 'i%';"); 

    String code=""; 
    String name=""; 
    String continent=""; 


    out.println("<h1>ELENCO STATI CON LA I:</h1>"); 

    while(rs.next()) 
    { 
     code = rs.getString(1); 
     name = rs.getString(2); 
     continent = rs.getString(3);     
     out.println("<br><br><b>ID:</b> "+ code + " <br> " + "<b>COUNTRY: </b> "+name+" <br> " + "<b>CONTINENT</b> "+continent+" <br> "); 
    }  
} 
catch (SQLException e) 
{ 
    // TODO Auto-generated catch block 
    e.printStackTrace(); 
} 
finally 
{ 
    try 
    {   
     rs.close();   
     st.close(); 
     dbConn.close(); 
    } 
    catch(SQLException e) 
    { 
     out.println(e.getMessage()); 
    }  
} 

%> 

</body> 
</html> 
0

、STやCNNがnullの?

編集:ResultSetのドキュメントを読み込んだ場合、executeQueryはnullを返すことができないように見えます。したがって、あなたのSQLが問題ないのだろうか?

人は完全なログがいいだろう、上記の言ったように...

関連する問題