#java #html #sql #jsp
#java #HTML #sql #jsp
Вопрос:
я пытаюсь распечатать таблицу в браузере с извлечением данных из базы данных. Код находится в jsp-файле.
Мой вывод выглядит следующим образом:
В таблице по-прежнему отсутствуют значения. Теперь мне интересно, почему данные из таблицы не извлекаются. Я проверил данные, и таблица заполнена значениями.
Вот мой вывод командной строки с данными (размытый):
На данный момент это мой код в jsp-файле:
<%@page contentType="text/html" pageEncoding="UTF-8"%>
<%@page import="java.sql.DriverManager"%>
<%@page import="java.sql.ResultSet"%>
<%@page import="java.sql.Statement"%>
<%@page import="java.sql.Connection"%>
<%
String id = request.getParameter("userid");
String driver = "com.mysql.jdbc.Driver";
String connectionUrl = "jdbc:mysql://localhost:3306/";
String database = "store";
String userid = "root";
String password = "";
try {
Class.forName(driver);
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
Connection connection = null;
Statement statement = null;
ResultSet resultSet = null;
%>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>JSP Page</title>
</head>
<body>
<h1>Retrieve data from database in jsp</h1>
<table border="1">
<tr>
<th>Name</th>
<th>Strasse</th>
<th>PLZ</th>
<th>Ort</th>
</tr>
<%
try{
connection = DriverManager.getConnection(connectionUrl database, userid, password);
statement=connection.createStatement();
String sql ="select * from kunde";
resultSet = statement.executeQuery(sql);
while(resultSet.next()){
%>
<tr>
<td><%=resultSet.getString("name") %></td>
<td><%=resultSet.getString("strasse") %></td>
<td><%=resultSet.getString("plz") %></td>
<td><%=resultSet.getString("ort") %></td>
</tr>
<%
}
connection.close();
}
catch (Exception e) {
e.printStackTrace();
}
%>
</table>
</body>
</html>
В файлах журнала я обнаружил два из следующих сообщений об ошибках:
An error occurred at line: [41] in the jsp file: [/index.jsp]
userid cannot be resolved to a variable
38:
39: <%
40: try{
41: connection = DriverManager.getConnection(connectionUrl database, userid, password);
42: statement=connection.createStatement();
43: String sql ="select * from kunde";
44: resultSet = statement.executeQuery(sql);
Stacktrace:] with root cause
org.apache.jasper.JasperException: Unable to compile class for JSP:
An error occurred at line: [41] in the jsp file: [/index.jsp]
userid cannot be resolved to a variable
38:
39: <%
40: try{
41: connection = DriverManager.getConnection(connectionUrl database, userid, password);
42: statement=connection.createStatement();
43: String sql ="select * from kunde";
44: resultSet = statement.executeQuery(sql);
И
[Warning] Access denied for user 'XY'@'localhost' (using password: NO)
Комментарии:
1. Вы уверены, что имя таблицы указано правильно? И у него есть данные?
2. Просто напоминаю, что скриплеты больше не рекомендуются.
3. @Swati да, я трижды проверил и добавил картинку, на которой вы можете увидеть данные в таблице.
4. проверьте журнал вашего сервера, есть ли какие-либо ошибки?
5. Я проверил журнал, я не получаю разрешения на содержимое базы данных: [Предупреждение] Доступ запрещен для пользователя ‘XY’ @’localhost’ (используя пароль: НЕТ) Обычно он должен подключаться к root, а не к XY. Вы знаете, как это изменить?
Ответ №1:
Я решил проблему. Мне нужно было добавить mysql-connector-java-5.1.25-bin.jar
файл в библиотеку моего tomcat.
Комментарии:
1. Поздравляем!