2012-01-12 3 views
0

Я создал простой класс Java, который доступ к базе данных SQL, которая работает отлично Вот код:Таинственный доступ SQL поведение

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

public class Query2 { 

public static void main (String[] args) { 
    try { 
     Connection conn = DriverManager.getConnection("jdbc:mysql://localhost/riconoscimento?" 
         + "user=root&password=root"); 
     Statement stmt = conn.createStatement(); 
     ResultSet rs; 
     rs = stmt.executeQuery("SELECT * FROM utenti; "); 
     while (rs.next()) { 
      String passwordToRead = rs.getString("password"); 
      String usernameToRead = rs.getString("username"); 
      System.out.println(passwordToRead); 
      System.out.println(usernameToRead); 
     } 
     conn.close(); 
    } catch (Exception e) { 
     System.err.println("Database Access Error"); 
     System.err.println(e.getMessage()); 
    } 
} 
} 

Тот же самый код на странице JSP не работает, проблема что блок примерочных улов не выполняется, и я не знаю, как это возможно Вот код:

<%@ page language ="java" import="java.sql.*" %> 
<!DOCTYPE html> 
<html> 
<head> 
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> 
    <title>I dati inseriti per l'autenticazione sono:</title> 
</head> 
<body> 
    <h1> 
<% 
try { 
     Connection conn = DriverManager.getConnection("jdbc:mysql://localhost/riconoscimento?" 
         + "user=root&password=root"); 
     Statement stmt = conn.createStatement(); 
     ResultSet rs; 
     rs = stmt.executeQuery("SELECT * FROM utenti; "); 
     while (rs.next()) { 
      String passwordToRead = rs.getString("password"); 
      String usernameToRead = rs.getString("username"); 
      out.println(passwordToRead); 
      out.println(usernameToRead); 
     } 
     conn.close(); 
    } catch (Exception e) { 
     System.err.println("Database Access Error"); 
     System.err.println(e.getMessage()); 
    } 
%> 
    </h1> 
</body> 
</html> 
+0

у вас закрыты все ur html открытые теги ?? как у ур jsp сам не закрыт. И компиляция jsp, какой результат вы видите? –

+0

забыл скопировать здесь, но присутствует в .jsp странице .. действительно не могу понять – Franky

+0

Поэтапно развертывается Http: // Localhost: 8080/WebApplication1 Завершено последовательное распределение HTTP: // локальный: 8080/WebApplication1 выполнения развертывания: просмотр: HTTP: // локальный: 8080/WebApplication1/index.jsp вводного дисплей-браузер: пробег: BUILD УСПЕШНОГО (общее время: 4 секунды) – Franky

ответ

0
  1. Попробуйте использовать метод Flush() из вне объекта
  2. Чтобы отладить приложение, вы можете поместить свой результат sql в журнал или в System.out
  3. Проверьте, обрабатывается ли ваш файл jsp с помощью веб-сервера приложения (например, если вы используете расширение .html, проверьте, что ваш веб-сервер обрабатывает .html-страницы как JSP, а не только как HTML-файлы). Для этого вы можете добавить протоколирование в начале фрагмента кода
  4. Также вы можете проверить получившийся класс HttpJspPage (но это, кажется, что проблема в конфигурации)
+0

Первый шаг необходим, если isAutoFlush() возвращает false. На самом деле я не знаю, является ли эта опция заранее предопределенной для всех веб-серверов, и кажется, что эта опция может быть настроена извне (в jsp). –

+0

Я попытался выложить из out catch.println ("test") и отобразить на экране только то, что происходит в try catch, не выполняется – Franky

+0

Вы искали источник страницы или только рендеринг браузера? Также поместите некоторый журнал отладки сразу после 'if (rs.next())' statement –

0

Вы ожидали заявления в улов для вывода на страницу JSP? Если это так, вам нужно будет использовать out.println. System.err.println будет записывать в журнал ошибок сервера.

Смежные вопросы