Доступ к базам данных из Javaпрограмм и проблемы русификации


Рисунок 3. Возможные процессы на Web-сервере.



Рисунок 3. Возможные процессы на Web-сервере.

Несмотря на то, что сервлеты используют HTTP-протокол, им нет необходимости перезагружать процесс при каждом новом запросе и это также повышает их быстродействие. К сожалению, когда вы используете сервлеты, опять-таки, возникает проблема использования кириллических символов. Дело в том, что стандартный путь прохождения данных тут не действует, потому что Web-сервер при старте запускает так называемый Java-handler, которому передает на выполнение все Java-сервлеты и обменивается вводом-выводом именно с ним через специальную библиотеку классов. Поэтому, если вы хотите получать в браузере от вашего Web-сервера, который исполняет сервлеты, кириллические строки, вам надо использовать вместо стандартных примитивов ввода/вывода некоторые специальные методы для работы со строками, например:

// Определение необходимого кодификатора // в зависимости от используемого типа кодировки String dos = new String(ыCp866«); String win = new String(ыCp1251«); String iso = new String(ы8859_5«); String im = new String(ыКириллический текст«); ....................................................... out.println(ы<body>«); //out.write(im.getBytes(dos)); out.write(im1.getBytes(win)); //out.write(im2.getBytes(iso)); out.println(ы</body></html>«);

Но и весьма эффективная функция Java - getBytes() не действует, когда вы извлекаете данные при помощи сервлетов из баз данных. Здесь необходимо применить метод, который мы уже использовали при работе с базами данных при помощи интерфейса JDBC. Кроме того, файл font.properties в каталоге $JDK_HOME/lib или в специальном каталоге вашего браузера должен быть соответствущим образом настроен. Во многих пакетах Java имеются образцы файла font.properties.ru, который можно взять в качестве основы. Если вы работаете с уже русифицированным Web-сервером, например, русской версией Apache, то он позаботится за вас и сам перекодирует данные, поступающие из базы данных от сервлета. Каким образом программируются операции с базой данных в сервере? Сервлет не накладывает никаких ограничений на использование интерфейсов с базой данных. Можно использовать обыкновенный JDBC-ODBC, или специфические драйвера ориентированные на конкретные SQL-сервера и базы данных. Рассмотрим типичный DBServlet.java, который с успехом будет выполняться как на Java Web Server, так и Web сервере Apache.

/* * @(#)DBServlet.java 1.6 97/06/13 */ import javax.servlet.*; import javax.servlet.http.*; import java.io.*; import java.net.*; import java.sql.*; /** * DBServlet * * Этот сервлет демонстрирует как использовать JDBC стек * и получать доступ к базам данных при помощи сервлетов. Для того, чтобы выполнить этот * сервлет, переменные CLASSPATH, LD_LIBRARY_PATH, ODBCINI * должны быть соответствующим образом установлены. */




Начало  Назад  Вперед



Книжный магазин