Чтение онлайн

ЖАНРЫ

MySQL 5.0. Библиотека программиста

Гольцман Виктор

Шрифт:

8. Запустите Tomcat. Для этого откройте корневую папку Tomcat, далее папку bin и дважды щелкните на значке файла startup.bat.

Чтобы убедиться, что Tomcat работает нормально, запустите Internet Explorer (Пуск → Все программы → Internet Explorer) или любой другой браузер. В адресной строке браузера введите следующий адрес:– в результате откроется стартовая страница Tomcat (рис. 4.33).

Рис. 4.33. Стартовая страница Tomcat

9. Чтобы запустить сервлет, наберите в адресной строке браузера его адрес, который вы задали в файле web.xml:Вы увидите результат

выполнения сервлета: текст «Мой первый сервлет» (рис. 4.34).

Рис. 4.34. Результат выполнения сервлета

Итак, вы научились создавать собственные сервлеты и запускать их. Отмечу, что при изменении ранее созданного сервлета его необходимо перекомпилировать (см. пп. 5–6), а затем перезапустить Tomcat, используя файлы shutdown.bat и startup.bat в папке bin корневой папки Tomcat.

Перейдем теперь к разработке сервлета, взаимодействующего с базой данных MySQL.

Подключение к базе данных

В данном разделе мы рассмотрим простой сервлет, который подключается к базе данных и выводит диагностическое сообщение. Чтобы создать такой сервлет, необходимо импортировать пакеты java.sql.*.

Соединение с базой данных описывается объектом класса Connection. Для создания такого объекта предназначен метод

public static Connection getConnection(“jdbc:mysql://<Имя

хоста>[:<Имя порта>]/<Имя базы данных>[<Параметры>]”)

throws SQLException

класса DriverManager. Параметры соединения задаются в формате

?<Имя параметра>=<Значение>&<Имя параметра>=<Значение>…

Важнейшими параметрами соединения являются user (имя пользователя), password (пароль) и characterEncoding (кодировка).

Если при подключении к базе данных произошла ошибка, метод getConnection сгенерирует исключение SQLException, о котором подробно будет рассказано в подразделе «Обработка ошибок».

Например, вызов метода

Connection dbh =

DriverManager.getConnection(«jdbc:mysql://localhost/SalesDept»

+ «?user=username»

+ «&password=userpassword»

+ «&characterEncoding=cp1251»);

осуществляет подключение к серверу MySQL, работающему на локальном компьютере, используя имя пользователя username и пароль userpassword, устанавливает для взаимодействия с сервером кодировку CP-1251 и выбирает базу данных SalesDept (Отдел продаж) в качестве текущей. Созданному соединению соответствует объект dbh класса Connection.

...

Совет

В целях защиты от несанкционированного доступа рекомендуется подключаться к базе данных не от имени пользователя root, а от имени специально созданного пользователя с минимально необходимыми правами доступа. О регистрации пользователей и настройке прав читайте в главе 4.

Создайте теперь сервлет Connect с исходным кодом, представленным в листинге 4.17.

Листинг 4.17.

Подключение к базе данных

import java.io.*;

import javax.servlet.*;

import javax.servlet.http.*;

import java.sql.*;

public class Connect extends HttpServlet {

public void service(HttpServletRequest request,

HttpServletResponse response) throws IOException, ServletException {

response.setContentType(“text/html;charset=windows-1251”);

PrintWriter out = response.getWriter;

try {

//Подсоединяемся

к базе данных

Connection dbh =

DriverManager.getConnection(«jdbc:mysql://localhost/SalesDept»

+»?user=username&password=userpassword&characterEncoding=cp1251»);

//Обрабатываем испключение

} catch (SQLException ex) {

out.println(“Ошибка доступа к базе данных. Приносим свои извинения”);

return;

}

out.println(«Подключение выполнено успешно»);

}

}

После размещения и регистрации сервлета в контейнере наберем его адрес в адресной строке браузера. При успешном подключении к базе данных на вебстранице появится соответствующее сообщение (рис. 4.35).

Рис. 4.35. Результат подключения к базе данных

После подключения к серверу MySQL можно переходить к работе с данными. В следующем подразделе мы рассмотрим выполнение простых SQL-команд.

Выполнение простых SQL-команд. Обработка результатов запроса

Для выполнения SQL-команд, не имеющих подстановочных параметров, предназначен класс Statement. Объект класса Statement создается с помощью метода

Statement createStatement throws SQLException

класса Connection. Например, вызов метода

Statement query = dbh.createStatement;

создает объект query, соответствующий SQL-команде. Если SQL-команда не предполагает получение данных из базы (такими командами являются, например, команды INSERT, UPDATE, DELETE), то для ее выполнения используется метод

int executeUpdate(«<Текст команды>») throws SQLException

класса Statement. Метод executeUpdate возвращает количество строк, с которыми была выполнена операция. Для выполнения SQL-запроса используется метод

ResultSet executeQuery(«<Текст запроса>») throws SQLException

класса Statement. Метод executeQuery возвращает объект класса ResultSet, содержащий набор полученных запросом данных. Важным элементом результирующего набора является курсор – указатель на текущую строку.

Для извлечения данных из результирующего набора нам потребуются следующие методы класса ResultSet.

• boolean next throws SQLException

Переводит курсор на следующую строку. При первом вызове устанавливает курсор на первую строку. Если строки результирующего набора исчерпаны, возвращает значение FALSE.

• Методы вида get^rn данных>(<Имя или номер столбца>) возвращают значение, находящееся в текущей строке в указанном столбце. В зависимости от типа данных столбца вы можете использовать следующие функции:

• для числовых столбцов:

Поделиться с друзьями: