• 15 апреля стартует «Курс «SQL-injection Master» ©» от команды The Codeby

    За 3 месяца вы пройдете путь от начальных навыков работы с SQL-запросами к базам данных до продвинутых техник. Научитесь находить уязвимости связанные с базами данных, и внедрять произвольный SQL-код в уязвимые приложения.

    На последнюю неделю приходится экзамен, где нужно будет показать свои навыки, взломав ряд уязвимых учебных сайтов, и добыть флаги. Успешно сдавшие экзамен получат сертификат.

    Запись на курс до 25 апреля. Получить промодоступ ...

Netbeanse Tomcat From Servlet -> Mysql ( Linux )

  • Автор темы serg777
  • Дата начала
S

serg777

Не получается доступ к mysql.
Пробую все в NetBeans7.4 + jdk1.7.0_45( oracle ) + tomcat 7.0.41 в Linux.

Делаю на базе примера:

Проблема - не подключается из кода к mysql.
В NetBeans, в своем проекте, на вкладке "Services" | "Databases" нормально создал JDBC подключение как root без пароля к тестовой базе testbase.

При выполнении кода сервлета с трудом увидел такую ошибку:
"java.sql.SQLException: No suitable driver found for jdbc:mysql://localhost:3306/testbase"

Сам код сервлета такой:
=======Код сервлета НАЧАЛО=

import java.io.*;
import java.util.*;
import java.sql.*;
import javax.servlet.*;
import javax.servlet.http.*;
// import com.mysql.jdbc.*;

/**
*
* @author ksr
*/
public class DataServlet extends HttpServlet {
private ServletConfig config;
// Это наша JSP страница
String page = "DataPage.jsp";
public void init(ServletConfig config)
throws ServletException {
this.config = config;
}
// ---------------The Start
public void doGet(HttpServletRequest request, HttpServletResponse response)

throws ServletException, IOException {
PrintWriter out = response.getWriter();
// Устанавливаем соединение с БД
String connectionURL = "jdbc:mysql://localhost:3306/testbase";
Connection connection = null;
ResultSet rs;
response.setContentType("text/html");
List dataList = new ArrayList();
try {
// Загружаем драйвер БД
// Class.forName("com.mysql.jdbc.Driver");
// Подключаемся к БД
connection = DriverManager.getConnection(connectionURL,"root","");
// Выбираем данные из БД
String sql = "select * from message";
Statement s = connection.createStatement();
s.executeQuery(sql);
rs = s.getResultSet();
while (rs.next()) {
// Сохраняем всё в список
dataList.add(rs.getInt("id"));
dataList.add(rs.getString("message"));
}
rs.close();
s.close();
} catch (SQLException e) {
dataList.add("ERROR0");
dataList.add(e);
System.out.println("Exception is ;" + e);
}
// dataList.add("00000");
// dataList.add("message111113333333333311");
request.setAttribute("data", dataList);
// Переходим на JSP страницу
RequestDispatcher dispatcher = request.getRequestDispatcher(page);
if (dispatcher != null) {
dispatcher.forward(request, response);
}
// ---------------The End
}
}

=======Код сервлета КОНЕЦ==

+ Строку
Class.forName("com.mysql.jdbc.Driver");
закоментил - ругалось на нее. В форумах прочитал рекомендацию ее убрать ( для новых jdbc оно вроде как не надо )

Помогите, пожалуйста.
 
S

serg777

Помогла эта рекомендация:

,а именно это место:
"
What did you put exactly in lib, jre/lib or jre/lib/ext? Was it the jar mysql-connector-java-5.1.5-bin.jar or something else (like a directory)?

By the way, I wouldn't put it in lib, jre/lib or jre/lib/ext, there are other ways to add a jar to the classpath. You can do that by adding it explicitly the CLASSPATH environment variable. Or you can use the -cp option of java. But this is another story.

"
Мои действия:
1. скопировал
cp /home/ksr/bin/netbeans-7.4/ide/modules/ext/mysql-connector-java-5.1.23-bin.jar /usr/lib/jdk_Oracle/jre/lib/ext
2. закрыл NetBeans ( когда он закрывается - гасится tomcat )
3. запустил NetBeans
4. Для моего проекта сдала: "Clean and Buikd" и затем "Run"
После этого получил свой первый ответ на запрос от mysql, вызванный из servlet:
ID Сообщение
1 amit
2 kumar
3 singh
4 raghuwanshi
5 vineet
6 sandeep
7 suman
8 vineet

При "Clean and Build" по-прежнему получаю WARNING-и такие
========Начало Один из 4-х WARING-ов=======
/home/ksr/NetBeansProjects/JSPMultipleForms/src/java/DataServlet.java:60: warning: [unchecked] unchecked call to add(E) as a member of the raw type List
dataList.add(rs.getInt("id"));
where E is a type-variable:
E extends Object declared in interface List
============Конец. Один из 4-х WARNING-ов===

По всей видимости они относятся к этому куску кода
====== начало куска кода====
// Сохраняем всё в список
dataList.add(rs.getInt("id"));
dataList.add(rs.getString("message"));
====== конец куска кода=====

Может кто растолковать - что не так и на что изменить, что-бы неыбло warning ?
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!