ки, в которых находятся файлы, но и имена файлов с расширениями (например, C: \Program Files\Tomcat\lib\ servlet-api.j ar;C: \Program Files\Tomcat\lib\mysql-connector-java-xxx-bin.jar). Пути к файлам разделяются точкой с запятой.
Для возврата в окно Переменные среды нажмите кнопку OK.
3. Создайте переменную CATALINA_HOME. Для этого в блоке Системные переменные нажмите кнопку Создать. В появившемся окне Новая системная переменная
введите имя переменной – CATALINA_HOME и значение – путь к корневой папке Tomcat, например C: \Program Files\Tomcat.
Для возврата в окно Переменные среды нажмите кнопку OK.
• Аналогичным образом создайте переменную JAVA_HOME. В значении этой переменной укажите путь к корневой папке Java, например C: \Program Files\Java\jdk1.6.0_0 6.
Итак, вы завершили настройку среды разработки сервлетов. Теперь можно создать первый сервлет.
Создание и запуск сервлета
Создание сервлета включает три основных этапа:
• написание кода;
• компиляция сервлета;
• размещение и регистрация сервлета в контейнере.
После выполнения этих этапов можно запустить сервлет, введя его адрес в адресной строке браузера.
Рассмотрим порядок создания сервлета на примере простейшего сервлета.
1. Запустите стандартную программу Windows Блокнот (Пуск → Все программы → Стандартные → Блокнот).
2. В окне программы Блокнот введите код, представленный в листинге 4.14.
Листинг 4.14. Простейший сервлетimport java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
public class test extends HttpServlet {
public void service(HttpServletRequest request,
HttpServletResponse response) throws IOException, ServletException {
response.setContentType(«text/html;charset=windows-1251»);
PrintWriter out = response.getWriter();
out.println(«Мой первый сервлет»);
}
}Данный код создает класс с именем test, который расширяет существующий класс HttpServlet и переопределяет метод service(). Метод service() получает параметры запроса с помощью объекта request и передает ответ сервлета с помощью объекта response. Метод service() нашего класса test выполняет следующие действия:
• устанавливает тип выводимой информации с помощью метода setContentType() объекта response;
• получает ссылку на выходной поток сервлета с помощью метода getWriter() объекта response;
• выводит в этот поток текстовую информацию.
3. Для сохранения файла нажмите комбинацию клавиш Ctrl+S. В стандартном окне Windows Сохранить как откройте любую папку, например <Корневая папка Tomcat>\webapps\ROOT\WEB-INF\classes. Введите имя файла test.java (имя файла должно совпадать с именем класса) и нажмите кнопку Сохранить.
4. Откройте окно командной строки Windows. Для этого нажмите кнопку Пуск, в меню выберите пункт Выполнить, в появившемся окне Запуск программы в поле Открыть введите команду cmd и нажмите кнопку OK. На экране возникнет окно командной строки, в которой с помощью команды cd перейдите в папку, в которой находится файл test.java (рис. 4.32).
Рис. 4.32. Компиляция сервлета5. Скомпилируйте сервлет, выполнив в окне командной строки команду
javac test.java
В результате компиляции в папке, где находится файл test.java, будет создан файл test.class. Этот файл и есть созданный нами сервлет.
Внимание!
Далее вы узнаете, как разместить и зарегистрировать сервлет в контейнере сервлетов нашей среды разработки. Если для запуска сервлета вы используете хостинг с поддержкой сервлетов, то при подключении сервлета руководствуйтесь инструкциями провайдера хостинга.
6. Скопируйте файл test.class в папку <Корневая папка Tomcat>\webapps\ROOT\
WEB-INF\classes, например C: \Program Files\Tomcat\webapps\ROOT\WEB-INF\classes (если исходный файл test.java был создан в этой папке, то файл test.class уже находится в нужной папке и копирование не требуется).
Внимание!
Обратите внимание на регистр символов: важно, чтобы папка для размещения сервлетов называлась именно classes (не CLASSES и не Classes).
7. Откройте для редактирования (например, с помощью программы Блокнот) файл web.xml, находящийся в папке <Корневая папка Tomcat>\webapps\ROOT\WEB-INF.
В этом файле для каждого нового сервлета необходимо добавить в элемент web-app вложенные элементы servlet и servlet-mapping (листинг 4.15).
Листинг 4.15.
Файл web.xml
…
Элемент servlet должен содержать произвольное имя сервлета и имя класса, заданное в коде сервлета (см., например, листинг 4.14). Элемент servlet-mapping должен содержать то же самое имя сервлета и URL-адрес, по которому будет доступен этот сервлет.
Например, после добавления сервлета test файл web.xml примет следующий вид (листинг 4.16).
Листинг 4.16. Пример файла web.xml8. Запустите Tomcat. Для этого откройте корневую папку Tomcat, далее папку bin и дважды щелкните на значке файла startup.bat.
Чтобы убедиться, что Tomcat работает нормально, запустите Internet Explorer (Пуск → Все программы → Internet Explorer) или любой другой браузер. В адресной строке браузера введите следующий адрес: http://localhost:8080/ – в результате откроется стартовая страница Tomcat (рис. 4.33).
Рис. 4.33. Стартовая страница Tomcat9. Чтобы запустить сервлет, наберите в адресной строке браузера его адрес, который вы задали в файле web.xml: http://localhost:8080/servlet/test. Вы увидите результат выполнения сервлета: текст «Мой первый сервлет» (рис. 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”);