Я действительно новичок в концепциях сервлетов. просто искал некоторые теории, учился, и теперь я хочу практического опыта. все, что я хочу сделать, это создать сервлет, который может получить доступ к базе данных mysql. простую страницу JSP, которая принимает «имя» и «отметки», а затем попадает в сервлет, который в свою очередь обращается к базе данных и вводит имя и метки в базу данных.с использованием JDBC в сервлетах
Я создал базу данных и страницу JSP. Я тоже создал сервлет. У меня есть соединитель mysql в моей библиотеке, и я имею в виду его с концепцией Class.forname(). но когда я запускаю это на своем сервере (Tomcat v6.0), он дает исключение класса, не найденное для «com.mysql.jdbc.Driver». Но когда я запускаю эту часть mysql в другом проекте, который не является сервлетом (его просто простой Java-проект), он выполняется правильно и база данных также обновляется.
проблема только в том случае, если я использую этот фрагмент кода на сервере с сервлетом. я попробовал googling, и он сказал, что должен включить соединитель mysql в WEB-INF/lib из tomcat. Но я не мог найти этот путь. любые советы по этому поводу окажутся полезными для меня. заранее спасибо. :) это мой MySQL часть кода, защищен недействительным doGet (HttpServletRequest запрос, HttpServletResponse ответ) бросает ServletException, IOException {
PrintWriter out = response.getWriter();
String name = request.getParameter("name");
int marks = Integer.parseInt(request.getParameter("marks"));
try {
System.out.println("0");
Class.forName("com.mysql.jdbc.Driver");
Connection conn = DriverManager.getConnection("jdbc:mysql://localhost/testdb123","root","root");
String qr= "INSERT INTO stuinfo " +
"VALUES ('"+name+"',10)";
System.out.println(qr);
System.out.println("1");
Statement stmt = conn.createStatement();
System.out.println("2");
stmt.executeUpdate(qr);
System.out.println("3");
} catch (Exception e) {
e.printStackTrace();
}
}
большое спасибо Nikos !!!!! это сработало!!! вы сказали, что как только я буду уверен в этом, я должен взглянуть на javax.sql.DataSource для некоторого эффективного метода доступа к базе данных. могу я, пожалуйста, знать, что все я должен знать, чтобы заставить себя сделать следующий шаг? На данный момент у меня есть простая страница jsp с двумя полями - именем и метками. Отсюда, когда пользователь вводит данные, я попадаю в сервлет, который вводит эти данные в БД. теперь я пытаюсь использовать различные ограничения для структуры таблиц, таких как первичный ключ и т. д., действительно будет полезно, если мне повезет получить от вас некоторые рекомендации. –
Вам следует следовать [этому примеру] (http://tomcat.apache.org/tomcat-6.0-doc/jndi-datasource-examples-howto.html). Затем вместо использования 'DriverManager.getConnection' используйте код из [this] (http://wiki.apache.org/tomcat/UsingDataSources) (материал InitialContext). Короче говоря, «DataSource» - это пул соединений. Поскольку получение соединений с БД происходит медленно, это позволяет получить несколько соединений и использовать их, сохраняя время для повторного подключения. –
«В папке вашего приложения вы должны создать папку WEB-INF, внутри нее папку lib и поместить туда mysql-connector-XXX.jar. Это позволит решить проблемы с классом. Контейнер сервлета не создает автоматически папку структура. "- nikos, этот метод не работает, на самом деле я не могу добавить этот соединитель mysql в папку в моем проекте, почему это так? –