0

I create a Java Web Application on Netbeans following Java with Ant > Java Web > Web Application

I am using Tomcat 9. I have tried to create a *.jsp file and it run smoothly, but I do the same task on *.java file, it caused an error:

Exception in thread "main" java.lang.RuntimeException

Here my code:

newjsp.jsp

<%@page import="java.sql.ResultSetMetaData"%>
<%@page import="java.sql.ResultSet"%>
<%@page import="java.sql.Statement"%>
<%@page import="java.sql.DriverManager"%>
<%@page import="java.sql.Connection"%>
<%@page contentType="text/html" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title>JSP Page</title>
    </head>
    <body>
        <h1>Hello World!</h1>
        <% 
            Class.forName("com.mysql.jdbc.Driver"); 
            String url = "jdbc:mysql://localhost:3306/testdb";
            String user = "root";
            String password = "sonha";
            Connection conn = DriverManager.getConnection(url, user, password);
            Statement stmt = conn.createStatement();
            String sql = "select * from student";
            ResultSet rs = stmt.executeQuery(sql);
            ResultSetMetaData resMetaData = rs.getMetaData();
            int nCols = resMetaData.getColumnCount();
            
            for (int kCol=1; kCol<=nCols; kCol++) {
                out.println(resMetaData.getColumnName(kCol) + "&nbsp;");
                
            }
            out.println("<br>");
            while(rs.next()) {
                for (int kCol = 1; kCol<=nCols; kCol++) {
                    out.println(rs.getString(kCol) + "&nbsp;");
                }
                out.println("<br>");
            }
        
        %>
    </body>
</html>

newjsp.jsp file run perfectly!

contextDB.java

package context;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;

public class contextDB {
    private final String user = "root";
    private final String password = "sonha";
    private final String url = "jdbc:mysql://localhost:3306/testdb";
    
    public Connection getConnection() throws Exception {
        Class.forName("com.mysql.jdbc.Driver"); 
        Connection conn = DriverManager.getConnection(url, user, password);
        return conn;
    }
    
    public static void main(String[] args) {
        try {
            System.out.println(new contextDB().getConnection());
        } catch (Exception e) {
            System.err.println(e);
        }
    }
}

contextDB.java caused an error:

Exception in thread "main" java.lang.RuntimeException: 
    at context.contextDB.main(contextDB.java:1)
Java Result: 1

I have no idea what happen. Any suggestions for that?

  • 2
    Change `System.err.println(e);` to `e.printStackTrace();` and it will tell you what is wrong. – Scary Wombat Jun 03 '21 at 08:00
  • Just a note that using JSP scriptlets (`<% %>`) is not a best practice. Please see https://stackoverflow.com/questions/3177733/how-can-i-avoid-java-code-in-jsp-files-using-jsp-2 – Heng Ye Jun 03 '21 at 14:36
  • @HengYe I know the bad side of jsp, I have try in java file but it not work. I am looking for some suggestions to fix it. Thank you! – Son Ha Nguyen Jun 03 '21 at 15:39
  • @SonHaNguyen Are you sure your servlet should have a main method? Main methods are for desktop applications – Heng Ye Jun 03 '21 at 15:40

0 Answers0