Web браузер как средство доступа к БД


Оглавление (нажмите, чтобы открыть):

Современные технологии разработки web-приложений. Принципы использования СУБД в web-приложениях.

Веб-приложения — вспомогательные программные средства, предназначенные для автоматизированного выполнения действий на Web-серверах. Они используют в качестве пользовательских интерфейсов Web-браузеры. С помощью приложений можно, например, создавать документы, редактировать фотографии и слушать музыку, не устанавливая при этом сложное программное обеспечение. В настоящее время многие веб-сайты обладают динамическими функциями, которые ранее были доступны только в настольных приложениях, установленных на компьютере. Такие сайты называются веб-приложениями. Работая с такими службами, как Gmail и Карты Google, вы уже используете приложения.

Веб-приложение состоит из клиентской и серверной частей, тем самым реализуя технологию «клиент-сервер».

Клиентская часть реализует пользовательский интерфейс, формирует запросы к серверу и обрабатывает ответы от него. Клиентская часть — это то, что вы видите на странице. Графический интерфейс отображается в браузере. Пользователь взаимодействует с веб-приложением именно через браузер, кликая по ссылкам и кнопкам.

Серверная часть веб-приложения — это программа или скрипт на сервере, обрабатывающая запросы пользователя (точнее, запросы браузера). Чаще всего серверная часть веб-приложения программируется на PHP. При каждом переходе пользователя по ссылке браузер отправляет запрос к серверу. Сервер обрабатывает этот запрос, вызывая некоторый PHP-скрипт, который формирует веб-страничку, описанную языком HTML, и отсылает клиенту по сети. Браузер тут же отображает полученный результат в виде очередной веб-страницы.

Само веб-приложение может выступать в качестве клиента других служб, например, базы данных или другого веб-приложения, расположенного на другом сервере.

База данных — программное обеспечение на сервере, занимающееся хранением данных и их выдачей в нужный момент. В случае форума или блога, хранимые в БД данные — это посты, комментарии, новости и т. д. База данных располагается на сервере. Серверная часть веб-приложения (то есть, PHP скрипт) обращается к базе данных, извлекая данные, которые необходимы для формирования страницы, запрошенной пользователем.

Ярким примером веб-приложения является система управления содержимым статей Википедии: множество её участников могут принимать участие в создании сетевой энциклопедии, используя для этого браузеры своих операционных систем и не загружая дополнительных исполняемых модулей для работы с базой данных статей.

Основной язык, которым описывается графический интерфейс веб-приложения — это HTML. Этот язык описывает структуру веб-страницы. Художественное оформление веб страниц описывается таблицами стилей — CSS.

Для «оживления» графического интерфейса используются дополнительные технологии: скрипты JavaScript, а также встроенные в веб-страницу компоненты, созданные на Flash, Java или Silverlight. Все эти элементы веб-страницы могут взаимодействовать между собой: программа, написанная на JavaScript и выполняющаяся на веб-странице, может управлять встроенными в страницу компонентами, тем самым реализуя пользовательский интерфейс с богатыми возможностями.

С появлением технологии баз данных было накоплено больше информации, чем за всю предыдущую историю. Однако, доступ пользователя к базам данных ограничен по целому ряду причин:

— для получения информации необходим физический доступ к соответствующей СУБД;

— пользователь должен быть в курсе модели данных, знать схему базы данных;

— требуется умение пользоваться языком запросов к БД.

Возникает естественное желание скрестить эти две технологии и обеспечить доступ к базам данных в интерфейсе Web. Посредником, реализующим доступ от клиента к БД, выступает специальная программа — Web-сервер, обеспечивающая функционирование пользовательского приложения, выполняющего непосредственный запрос к данным и возврат ответа в виде HTML-документа.

Механизм доступа к БД на стороне сервера реализуется за счет наличия стандартизованных средств:

— поддержки диалоговых форм на уровне гипертекстового документа (язык HTML);

— возможности запуска серверных программ, взаимодействие которых происходит через стандартный интерфейс CGI или прикладные интерфейсы Web-сервера.

При реализации на основе CGI общая схема реализации доступа к БД на стороне Web-сервера выглядит следующим образом:

— при просмотре документа пользователь встречает ссылку на страницу, содержащую одну или несколько форм, предназначенных для запроса данных из базы данных;

— если пользователя интересует информация из БД, которую можно получить на основе предложенных форм, то он заполняет одну из форм и отправляет заполненную форму на сервер;

— получив заполненную форму, сервер запускает соответствующую внешнюю программу, передавая ей параметры и получая результаты на основе протокола CGI;

— внешняя программа преобразует запрос, выраженный с помощью заполненной формы, в запрос на языке, понятном серверу баз данных (обычно это язык SQL).

При использовании CGI вся интерпретация пользовательского запроса производится серверной программой. Она может быть предельно жесткой, ориентированной на выполнение запроса к фиксированной таблице фиксированной базы данных, или относительно гибкой, способной выполнить произвольный запрос к одной или нескольким таблицам базы данных, идентифицируемой в параметрах клиента.

Настройка сервера базы данных для публикации веб-развертывания Configuring a Database Server for Web Deploy Publishing

В этом разделе описывается настройка сервера базы данных SQL Server 2008 R2 для поддержки веб-развертывания и публикации. This topic describes how to configure a SQL Server 2008 R2 database server to support web deployment and publishing.

Задачи, описанные в этом разделе являются общими для всех сценариев развертывания—неважно веб-серверы настроены для использования удаленной службы агента средство веб-развертывания IIS (веб-развертывания), веб-обработчик развертывания или развертывания в автономном режиме или в приложение выполняется на одном веб-сервере или ферме серверов. The tasks described in this topic are common to every deployment scenario—it doesn’t matter whether your web servers are configured to use the IIS Web Deployment Tool (Web Deploy) Remote Agent Service, the Web Deploy Handler, or offline deployment or your application is running on a single web server or a server farm. Способ развертывания базы данных могут быть изменены в соответствии с требованиями безопасности и другие вопросы. The way you deploy the database may change according to security requirements and other considerations. К примеру вы можете развернуть базы данных с или без образец данных и может развернуть сопоставлений ролей пользователей или настроить их вручную после развертывания. For example, you might deploy the database with or without sample data, and you might deploy user role mappings or configure them manually after deployment. Однако способ настройки сервера базы данных остается неизменным. However, the way you configure the database server remains the same.

Установите все дополнительные продукты и средства для настройки сервера базы данных для поддержки веб-развертывания не нужно. You don’t have to install any additional products or tools to configuring a database server to support web deployment. Предположим, что серверу базы данных и веб-сервер работают на разных компьютерах, нужно просто: Assuming that your database server and your web server run on different machines, you simply need to:

  • Разрешить SQL Server обмениваться данными по протоколу TCP/IP. Permit SQL Server to communicate using TCP/IP.
  • Разрешает трафик SQL Server через все брандмауэры. Allow SQL Server traffic through any firewalls.
  • Предоставьте учетную запись компьютера сервера web имени входа SQL Server. Give the web server machine account a SQL Server login.
  • Сопоставьте имя входа учетной записи компьютера в любые роли базы данных. Map the machine account login to any required database roles.
  • Предоставьте учетной записи, которая будет выполняться развертывание разрешения создатель имя входа и базы данных SQL Server. Give the account that will run the deployment a SQL Server login and database creator permissions.
  • Для поддержки повторных развертываний, сопоставить имя входа учетной записи развертывания для db_владельца роли базы данных. To support repeat deployments, map the deployment account login to the db_owner database role.

В этом разделе показано, как выполнить каждую из этих процедур. This topic will show you how to perform each of these procedures. Задачи и пошаговые руководства в этом разделе предполагается, что вы начинаете с экземпляром по умолчанию SQL Server 2008 R2 для систем под управлением Windows Server 2008 R2. The tasks and walkthroughs in this topic assume that you’re starting with a default instance of SQL Server 2008 R2 running on Windows Server 2008 R2. Прежде чем продолжить, убедитесь, что: Before you continue, ensure that:

  • Пакет обновления 1 для Windows Server 2008 R2 и все доступные обновления будут установлены. Windows Server 2008 R2 Service Pack 1 and all available updates are installed.
  • Сервер присоединен к домену. The server is domain-joined.
  • Сервер имеет статический IP-адрес. The server has a static IP address.
  • SQL Server 2008 R2 с пакетом обновления 1 и все доступные обновления будут установлены. SQL Server 2008 R2 Service Pack 1 and all available updates are installed.

Экземпляр SQL Server требуется только включить службы компонента Database Engine роли, которая автоматически включается в любой установке SQL Server. The SQL Server instance only needs to include the Database Engine Services role, which is included automatically in any SQL Server installation. Однако для простоты настройки и обслуживания, мы рекомендуем добавить основные средства управления и средства управления — полный ролей сервера. However, for ease of configuration and maintenance, we recommend that you include the Management Tools – Basic and Management Tools – Complete server roles.

Дополнительные сведения о присоединении к домену компьютеров, см. в разделе присоединение к домену и вход. For more information on joining computers to a domain, see Joining Computers to the Domain and Logging On. Дополнительные сведения о настройке статического IP-адресов, см. в разделе настроить статический IP-адрес. For more information on configuring static IP addresses, see Configure a Static IP Address. Дополнительные сведения об установке SQL Server см. в разделе Установка SQL Server 2008 R2. For more information on installing SQL Server, see Installing SQL Server 2008 R2.

Включить удаленный доступ к SQL Server Enable Remote Access to SQL Server

SQL Server использует TCP/IP для взаимодействия с удаленными компьютерами. SQL Server uses TCP/IP to communicate with remote computers. Если серверу базы данных и веб-сервер находятся на разных компьютерах, необходимо: If your database server and your web server are on different machines, you need to:

  • Настройка сетевых параметров SQL Server, чтобы обеспечить обмен данными по протоколу TCP/IP. Configure SQL Server networking settings to allow communication over TCP/IP.
  • Настройте все брандмауэры оборудования или программного обеспечения, чтобы разрешить TCP-трафик (и в некоторых случаях протокола UDP (User Datagram) трафик) через порты, которые использует экземпляр SQL Server. Configure any hardware or software firewalls to allow TCP traffic (and in some cases User Datagram Protocol (UDP) traffic) on the ports that the SQL Server instance uses.

Чтобы включить SQL Server обмениваться данными по протоколу TCP/IP, используйте диспетчер конфигурации SQL Server для изменения конфигурации сети для экземпляра SQL Server. To enable SQL Server to communicate over TCP/IP, use SQL Server Configuration Manager to change the network configuration for your SQL Server instance.

Чтобы включить SQL Server обмениваться данными по протоколу TCP/IP To enable SQL Server to communicate using TCP/IP

На запустить последовательно выберите пункты все программы, нажмите кнопку Microsoft SQL Server 2008 R2, нажмите кнопку средства настройки, а затем нажмите кнопку Диспетчер конфигурации SQL Server. On the Start menu, point to All Programs, click Microsoft SQL Server 2008 R2, click Configuration Tools, and then click SQL Server Configuration Manager.

В области представления дерева разверните сетевая конфигурация SQL Server, а затем нажмите кнопку протоколы для MSSQLSERVER. In the tree view pane, expand SQL Server Network Configuration, and then click Protocols for MSSQLSERVER.

Если вы установили несколько экземпляров SQL Server, вы увидите протоколы для[имя_экземпляра] элемента для каждого экземпляра. If you have installed multiple instances of SQL Server, you’ll see a Protocols for[instance name] item for each instance. Необходимо настроить параметры сети на основе экземпляра, экземпляр. You need to configure network settings on an instance-by-instance basis.

В области сведений щелкните правой кнопкой мыши TCP/IP строк, а затем нажмите кнопку включить. In the details pane, right-click the TCP/IP row, and then click Enable.

В предупреждение диалоговом окне щелкните ОК. In the Warning dialog box, click OK.

Необходимо перезапустить службы MSSQLSERVER, прежде чем конфигурацию сети вступят в силу. You need to restart the MSSQLSERVER service before your new network configuration will take effect. Это выполняется в командной строке, из консоли «службы» или из SQL Server Management Studio. You can do that at a command prompt, from the Services console, or from SQL Server Management Studio. В этой процедуре вы используете SQL Server Management Studio. In this procedure, you’ll use SQL Server Management Studio.

Закройте диспетчер конфигурации SQL Server. Close SQL Server Configuration Manager.

На запустить последовательно выберите пункты все программы, нажмите кнопку Microsoft SQL Server 2008 R2, а затем нажмите кнопку SQL Server Management Studio. On the Start menu, point to All Programs, click Microsoft SQL Server 2008 R2, and then click SQL Server Management Studio.

В соединение с сервером отображаемое в диалоговом окне имя_сервера введите имя сервера базы данных и нажмите кнопку Connect. In the Connect to Server dialog box, in the Server name box, type the name of the database server, and then click Connect.

В обозревателя объектов панели, щелкните правой кнопкой мыши родительский узел сервера (например, TESTDB1) и нажмите кнопку перезапустите. In the Object Explorer pane, right-click the parent server node (for example, TESTDB1), and then click Restart.

В Microsoft SQL Server Management Studio диалоговом окне щелкните Да. In the Microsoft SQL Server Management Studio dialog box, click Yes.

После перезапуска службы, закройте SQL Server Management Studio. When the service has restarted, close SQL Server Management Studio.

Чтобы разрешить трафик SQL Server через брандмауэр, сначала необходимо знать, какие порты использует экземпляр SQL Server. To allow SQL Server traffic through a firewall, you first need to know which ports your SQL Server instance is using. Это будет зависеть как экземпляр SQL Server был создан и настроен: This will depend on how the SQL Server instance was created and configured:

  • Объект экземпляр по умолчанию из SQL Server прослушивает (и реагирует на) запросы через порт TCP 1433. A default instance of SQL Server listens for (and responds to) requests on TCP port 1433.
  • Объект именованный экземпляр из SQL Server прослушивает (и реагирует на) запросов динамически назначаемый порт TCP. A named instance of SQL Server listens for (and responds to) requests on a dynamically assigned TCP port.
  • Если служба обозревателя SQL Server включена, клиенты могут запрашивать службы через порт UDP 1434, чтобы узнать, какие TCP-порт, используемый для конкретного экземпляра SQL Server. If the SQL Server Browser service is enabled, clients can query the service on UDP port 1434 to find out which TCP port to use for a particular SQL Server instance. Тем не менее эта служба отключена часто по соображениям безопасности. However, this service is often disabled for security reasons.

При условии, что вы используете экземпляр SQL Server по умолчанию, необходимо настроить брандмауэр для разрешения трафика. Assuming that you’re using a default instance of SQL Server, you need to configure your firewall to allow traffic.

Направление Direction Из порта From Port К порту To Port Тип порта Port Type
Входящих подключений Inbound Любой Any 1433 1433 TCP TCP
Исходящие Outbound 1433 1433 Любой Any TCP TCP

С технической точки зрения клиентский компьютер будет использовать назначенный случайным образом TCP-порт от 1024 до 5000 для взаимодействия с SQL Server, и правила брандмауэра можно ограничить соответствующим образом. Technically, a client computer will use a randomly assigned TCP port between 1024 and 5000 to communicate with SQL Server, and you can restrict your firewall rules accordingly. Дополнительные сведения о SQL Server порты и брандмауэры, см. в разделе номерами портов TCP/IP, необходимые для взаимодействия с SQL через брандмауэр и как: Настройка сервера для прослушивания определенного TCP-порта (диспетчер конфигурации SQL Server). For more information on SQL Server ports and firewalls, see TCP/IP port numbers required to communicate to SQL over a firewall and How to: Configure a Server to Listen on a Specific TCP Port (SQL Server Configuration Manager).

В большинстве сред Windows Server скорее всего появится для настройки брандмауэра Windows на сервере базы данных. In most Windows Server environments, you’ll likely have to configure Windows Firewall on the database server. По умолчанию брандмауэр Windows разрешает весь исходящий трафик, если правило специально запрещает его. By default, Windows Firewall allows all outbound traffic unless a rule specifically prohibits it. Чтобы включить веб-сервера для доступа к базе данных, необходимо настроить правило входящего трафика, разрешающее трафик TCP на номер порта, используемый экземпляром SQL Server. To enable your web server to reach your database, you need to configure an inbound rule that allows TCP traffic on the port number that the SQL Server instance uses. Если вы используете экземпляр SQL Server по умолчанию, можно использовать следующую процедуру для настройки этого правила. If you’re using a default instance of SQL Server, you can use the next procedure to configure this rule.

Чтобы настроить брандмауэр Windows для разрешения взаимодействия с экземпляром SQL Server по умолчанию To configure Windows Firewall to allow communication with a default SQL Server instance

На сервере базы данных на запустить последовательно выберите пункты Администрирование, а затем нажмите кнопку брандмауэр Windows в режиме повышенной безопасности. On the database server, on the Start menu, point to Administrative Tools, and then click Windows Firewall with Advanced Security.

В области представления дерева щелкните правила для входящих подключений. In the tree view pane, click Inbound Rules.

В действия панели в разделе правила для входящих подключений, нажмите кнопку новое правило. In the Actions pane, under Inbound Rules, click New Rule.

В мастера на тип правила выберите порт, а затем нажмите кнопку Далее. In the New Inbound Rule Wizard, on the Rule Type page, select Port, and then click Next.

На протокол и порты странице, убедитесь, что TCP выбран и в определенные локальные порты введите 1433, а затем нажмите кнопку Далее. On the Protocol and Ports page, ensure that TCP is selected, and in the Specific local ports box, type 1433, and then click Next.

На действие странице, оставьте разрешить подключение и нажмите кнопку Далее. On the Action page, leave Allow the connection selected and click Next.

На профиль странице, оставьте домена выбран, снимите частного и открытый флажки и нажмите кнопку Далее. On the Profile page, leave Domain selected, clear the Private and Public check boxes, and then click Next.

На имя странице, введите подходящим образом описательное имя правила (например, экземпляр SQL Server по умолчанию — доступ к сети) и нажмите кнопку Готово. On the Name page, give the rule a suitably descriptive name (for example, SQL Server default instance – network access), and then click Finish.

Дополнительные сведения о настройке брандмауэра Windows для SQL Server, особенно в том случае, если вам нужно обмениваться данными с SQL Server через нестандартные или динамических портов, см. в разделе как: Настройка брандмауэра Windows для доступа к ядру СУБД. For more information on configuring Windows Firewall for SQL Server, particularly if you need to communicate with SQL Server over non-standard or dynamic ports, see How to: Configure a Windows Firewall for Database Engine Access.

Настройка имен входа и разрешения базы данных Configure Logins and Database Permissions

При развертывании веб-приложения для Internet Information Services (IIS), приложение выполняется с помощью удостоверения пула приложений. When you deploy a web application to Internet Information Services (IIS), the application runs using the identity of the application pool. В среде домена удостоверения пула приложений используйте учетную запись компьютера сервера, на котором они выполняются для доступа к сетевым ресурсам. In a domain environment, application pool identities use the machine account of the server on which they run to access network resources. Учетные записи компьютера имеют вид [домен] [имя_компьютера]$—к примеру, FABRIKAM\TESTWEB1$. Machine accounts take the form [domain name] [machine name]$—for example, FABRIKAM\TESTWEB1$. Чтобы разрешить веб-приложения для доступа к базе данных по сети, вам потребуется: To allow your web application to access a database across the network, you need to:

  • Добавьте имя входа для учетной записи компьютера web server к экземпляру SQL Server. Add a login for the web server machine account to the SQL Server instance.
  • Сопоставить имя входа учетной записи компьютера в любые роли базы данных (обычно db_datareader и db_datawriter). Map the machine account login to any required database roles (typically db_datareader and db_datawriter).

Если веб-приложение работает на ферме серверов, а не один сервер, необходимо повторить эти действия для каждого веб-сервера в ферме серверов. If your web application is running on a server farm, rather than a single server, you’ll need to repeat these procedures for every web server in the server farm.


Дополнительные сведения о удостоверения пула приложений, доступ к ресурсам, см. в разделе удостоверения пула приложений. For more information on application pool identities and accessing network resources, see Application Pool Identities.

Можно использовать эти задачи по-разному. You can approach these tasks in various ways. Чтобы создать имя входа, вы можете сделать следующее. To create the login, you can either:

  • Вручную создайте имя входа на сервере базы данных, с помощью Transact-SQL или SQL Server Management Studio. Create the login manually on the database server, using Transact-SQL or SQL Server Management Studio.
  • Использование проекта сервера SQL Server 2008 в Visual Studio для создания и развертывания имени входа. Use a SQL Server 2008 Server Project in Visual Studio to create and deploy the login.

Имени входа SQL Server является объектом уровня сервера, а не объект уровня базы данных, поэтому он не зависит от базы данных, которую вы хотите развернуть. A SQL Server login is a server-level object, rather than a database-level object, so it’s not dependent on the database you want to deploy. Таким образом в любой момент можно создать имя входа и самый простой подход часто применяются для создания имени входа вручную на сервере базы данных, прежде чем приступать к развертыванию баз данных. As such, you can create the login at any point, and the easiest approach is often to create the login manually on the database server before you start deploying databases. Создание имени входа в SQL Server Management Studio можно использовать следующую процедуру. You can use the next procedure to create a login in SQL Server Management Studio.

Создание имени входа SQL Server для учетной записи компьютера сервера web To create a SQL Server login for the web server machine account

На сервере базы данных на запустить последовательно выберите пункты все программы, нажмите кнопку Microsoft SQL Server 2008 R2, а затем нажмите кнопку SQL Server Management Studio . On the database server, on the Start menu, point to All Programs, click Microsoft SQL Server 2008 R2, and then click SQL Server Management Studio.

В соединение с сервером отображаемое в диалоговом окне имя_сервера введите имя сервера базы данных и нажмите кнопку Connect. In the Connect to Server dialog box, in the Server name box, type the name of the database server, and then click Connect.

В обозревателя объектов области щелкните правой кнопкой мыши безопасности, пункты New, а затем нажмите кнопку входа. In the Object Explorer pane, right-click Security, point to New, and then click Login.

В Создание имени входа отображаемое в диалоговом окне имя входа введите имя учетной записи компьютера сервера веб (например, FABRIKAM\TESTWEB1$). In the Login – New dialog box, in the Login name box, type the name of your web server machine account (for example, FABRIKAM\TESTWEB1$).

Нажмите кнопку ОК. Click OK.

На этом этапе сервер базы данных будет готов для публикации веб-развертывания. At this point, your database server is ready for Web Deploy publishing. Тем не менее все решения, развертываемого не будет работать, пока сопоставить имя входа учетной записи компьютера в роли базы данных требуется. However, any solutions you deploy won’t work until you map the machine account login to the required database roles. Сопоставление имени входа к роли базы данных требует много более рассматривать, как вы не карты роли до, после того как вы развернули базы данных. Mapping the login to database roles requires a lot more thought, as you can’t map roles until after you’ve deployed the database. Чтобы сопоставить имя входа учетной записи компьютера в роли базы данных требуется, вы можете сделать следующее. To map the machine account login to the required database roles, you can either:

  • Назначение ролей базы данных с именем входа вручную, после развертывания базы данных в первый раз. Assign the database roles to the login manually, after you’ve deployed the database for the first time.
  • Используйте сценарий после развертывания для назначения ролей базы данных с именем входа. Use a post-deployment script to assign the database roles to the login.

Дополнительные сведения об автоматизации создания имен входа и сопоставления роли базы данных см. в разделе развертывание членства роли базы данных для сред тестирования. For more information on automating the creation of logins and database role mappings, see Deploying Database Role Memberships to Test Environments. В качестве альтернативы можно использовать следующую процедуру для сопоставления имени входа учетной записи компьютера в роли базы данных требуется вручную. Alternatively, you can use the next procedure to map the machine account login to the required database roles manually. Помните, что нельзя выполнить эту процедуру до после развертывания базы данных. Remember that you can’t perform this procedure until after you’ve deployed the database.

Чтобы сопоставить базу данных ролей для веб-сервере, учетной записи входа To map database roles to the web server machine account login

Откройте SQL Server Management Studio, как и раньше. Open SQL Server Management Studio as before.

В обозревателя объектов панели разверните безопасности узел, разверните имена входа узел и дважды щелкните имя входа учетной записи компьютера (например, FABRIKAM\TESTWEB1$). In the Object Explorer pane, expand the Security node, expand the Logins node, and then double-click the machine account login (for example, FABRIKAM\TESTWEB1$).

В свойства имени входа диалоговом окне щелкните сопоставления пользователей. In the Login Properties dialog box, click User Mapping.

В пользователи, сопоставленные с этим именем входа таблицы, выберите имя базы данных (например, ContactManager). In the Users mapped to this login table, select the name of your database (for example, ContactManager).

В членство в роли для базы данных: [Имя_базы_данных] выберите необходимые разрешения. In the Database role membership for: [database name] list, select the permissions required. В случае пример решения диспетчера контактов, необходимо выбрать db_datareader и db_datawriter ролей. In the case of the Contact Manager sample solution, you must select the db_datareader and db_datawriter roles.

Нажмите кнопку ОК. Click OK.

Хотя вручную сопоставление ролей базы данных часто является более чем достаточно для тестовых сред, это менее предпочтителен для развертывания автоматической или одним щелчком в промежуточной или рабочей среде. While manually mapping database roles is often more than adequate for test environments, it’s less desirable for automated or one-click deployments to staging or production environments. Можно найти дополнительные сведения об автоматизации такого рода задач с помощью сценариев после развертывания в развертывание членства роли базы данных для сред тестирования. You can find more information on automating this kind of task using post-deployment scripts in Deploying Database Role Memberships to Test Environments.

Дополнительные сведения о проектам сервера и базы данных, см. в разделе проекты базы данных Visual Studio 2010 SQL Server. For more information on server projects and database projects, see Visual Studio 2010 SQL Server Database Projects.

Настройка разрешений для учетной записи развертывания Configure Permissions for the Deployment Account

Если учетной записи, которое будет использоваться для запуска развертывания не является администратором SQL Server, вам также потребуется создать имя входа для этой учетной записи. If the account that you’ll use to run the deployment is not a SQL Server administrator, you’ll also need to create a login for this account. Чтобы создать базу данных, учетная запись должна быть членом dbcreator роли сервера или иметь равнозначные права. In order to create the database, the account must be a member of the dbcreator server role or have equivalent permissions.

При использовании веб-развертывания или средство VSDBCMD развертывание базы данных, можно использовать учетные данные Windows или SQL Server (если экземпляр SQL Server настроен для поддержки проверки подлинности в смешанном режиме). When you use Web Deploy or VSDBCMD to deploy a database, you can use Windows credentials or SQL Server credentials (if your SQL Server instance is configured to support mixed mode authentication). Следующая процедура подразумевает, что вы хотите использовать учетные данные Windows, но ничто не мешает вам указывать имя пользователя SQL Server и пароль в строке подключения, при настройке развертывания. The next procedure assumes that you want to use Windows credentials, but there’s nothing stopping you from specifying a SQL Server user name and password in your connection string when you configure the deployment.

Чтобы задать разрешения для учетной записи развертывания To set up permissions for the deployment account

Откройте SQL Server Management Studio, как и раньше. Open SQL Server Management Studio as before.

В обозревателя объектов области щелкните правой кнопкой мыши безопасности, пункты New, а затем нажмите кнопку входа. In the Object Explorer pane, right-click Security, point to New, and then click Login.

В Создание имени входа отображаемое в диалоговом окне имя входа введите имя учетной записи развертывания (например, FABRIKAM\matt). In the Login – New dialog box, in the Login name box, type the name of your deployment account (for example, FABRIKAM\matt).

В Выбор страницы панели щелкните ролей сервера. In the Select a page pane, click Server Roles.

Выберите dbcreator, а затем нажмите кнопку ОК. Select dbcreator, and then click OK.

Для поддержки последующих развертываний, вам также потребуется добавить учетную запись, развертывание для db_владельца роль в базе данных после первого развертывания. To support subsequent deployments, you’ll also need to add the deploying account to the db_owner role on the database after the first deployment. Это обусловлено тем, в последующих развертываниях вы изменение схемы существующей базы данных вместо создания новой базы данных. This is because on subsequent deployments you’re modifying the schema of an existing database, rather than creating a new database. Как описано в предыдущем разделе, невозможно добавить пользователя к роли базы данных, пока не будут созданы базы данных, по очевидным причинам. As described in the previous section, you can’t add a user to a database role until you’ve created the database, for obvious reasons.

Чтобы сопоставить имя входа учетной записи развертывания базы данных_владельца роли базы данных To map the deployment account login to the db_owner database role

Откройте SQL Server Management Studio, как и раньше. Open SQL Server Management Studio as before.

В обозревателя объектов окне разверните безопасности узел, разверните имена входа узел и дважды щелкните имя входа учетной записи компьютера (например, FABRIKAM\matt). In the Object Explorer window, expand the Security node, expand the Logins node, and then double-click the machine account login (for example, FABRIKAM\matt).

В свойства имени входа диалоговом окне щелкните сопоставления пользователей. In the Login Properties dialog box, click User Mapping.

В пользователи, сопоставленные с этим именем входа таблицы, выберите имя базы данных (например, ContactManager). In the Users mapped to this login table, select the name of your database (for example, ContactManager).

В членство в роли для базы данных: [Имя_базы_данных] выберите db_владельца роли. In the Database role membership for: [database name] list, select the db_owner role.

Нажмите кнопку ОК. Click OK.

Заключение Conclusion

Сервер базы данных теперь должен быть готов для принятия развертываний удаленных баз данных и разрешить удаленный веб-серверы IIS, чтобы доступ к базам данных. Your database server should now be ready to accept remote database deployments and to allow remote IIS web servers to access your databases. Прежде чем развертывать и использовать базы данных, вы можете проверить следующие основные моменты: Before you attempt to deploy and use databases, you may want to check these key points:

  • Вы настроили SQL Server для удаленных соединений TCP/IP? Have you configured SQL Server to accept remote TCP/IP connections?
  • Вы настроили все брандмауэры, чтобы разрешить трафик SQL Server? Have you configured any firewalls to permit SQL Server traffic?
  • Вы создали имя входа учетной записи компьютера для каждого веб-сервера, который получит доступ к SQL Server? Have you created a machine account login for every web server that will access SQL Server?
  • Развертывание базы данных включает скрипт для создания сопоставлений ролей пользователей, или необходимо создать их вручную после развертывания базы данных в первый раз? Does your database deployment include a script to create user role mappings, or do you need to create these manually after you deploy the database for the first time?
  • Вы создали имя входа для учетной записи развертывания и добавили его dbcreator роли сервера? Have you created a login for the deployment account and added it to the dbcreator server role?

Дополнительные сведения Further Reading

Руководство по развертыванию проектов баз данных, см. в разделе развертывание проектов баз данных. For guidance on deploying database projects, see Deploying Database Projects. Рекомендации по созданию членства в роли базы данных, выполнив сценарий после развертывания, см. в разделе развертывание членства роли базы данных для сред тестирования. For guidance on creating database role memberships by running a post-deployment script, see Deploying Database Role Memberships to Test Environments. Рекомендации о том, как для решения проблем развертывания, которые баз данных членства, см. в разделе развертывание баз данных членства в корпоративных средах. For guidance on how to meet the unique deployment challenges that membership databases pose, see Deploying Membership Databases to Enterprise Environments.

Организация доступа к базам данных в Интернет (стр. 1 из 23)

Восточно-Сибирская государственная академия культуры и искусств

Факультет менеджмента информационных технологий

Кафедра автоматизированных информационных систем

ОРГАНИЗАЦИЯ ДОСТУПА К БАЗАМ ДАННЫХ
ВСГАКиИ В ИНТЕРНЕТ

Исполнитель: Фомин Евгений Игоревич

студент заочного отделения группы 453

Научный руководитель: Баторов А.Р.,к.т.н., доцент.

И.о.зав.кафедрой: Батуева Э.Б., к.п.н., доцент.

Дата допуска к защите: _____ 06.2001

Многие организации используют электронные базы данных (БД) для поддержки своих рабочих процессов. Часто это системы на одного — двух пользователей, выполненные с использованием dbf — ориентированных средств разработки: Clipper, Dbase, FoxPro, Paradox, Access. Обычно используется ряд таких баз, независимых друг от друга. Если информация, хранимая в таких БД, представляет интерес не только для непосредственных пользователей, то для ее дальнейшего распространения используются бумажные отчеты и справки, созданные базой данных.

С появлением локальных сетей, подключением таких сетей к Интернет, созданием внутрикорпоративных, сетей, появляется возможность с любого рабочего места организации получить доступ к информационному ресурсу сети. Однако, при попытке использовать существующие БД возникают проблемы связанные с требованием к однородности рабочих мест (для запуска «родных» интерфейсов), сильнейшим трафиком в сети (доступ идет напрямую к файлам БД), загрузкой файлового сервера и невозможностью удаленной работы (например, командированных сотрудников). Решением проблемы могло бы стать использование унифицированного интерфейса WWW для доступа к ресурсам организации.

Технология World Wide Web, в переводе «Всемирная паутина», получила столь широкое распространение из-за простоты своих пользовательских интерфейсов. Принцип «жми на то, что интересно», лежащий в основе гипертекста, интуитивно понятен. В технологиях WWW все ключевые понятия просматриваемого документа: слова, картинки — имеют возможность «раскрыться» новым документом, развивающим это понятие. Такой способ представления информации называется «гипертекстом», а документы, представленные в таком виде — «гипертекстовыми документами». Для описания этих документов используется специальный язык — язык описания гипертекстовых документов или HTML (англ. вариант HyperText Markup Language).

Из этих предпосылок возникает задача преобразования накопленных данных в гипертекстовые документы WWW, задача поддержки актуальности преобразованной структуры. Другими словами, задача предоставления WWW — доступа к существующим базам данных.

Цель данной дипломной работы, создать интерфейс к файлам БД Библиотеки 5.0 которые имеют формат RUSMARC (см. прил. 1), так же можно обратиться за информацией по этому формату на сайт РОССИЙСКОЙ БИБЛИОТЕЧНОЙ АССОЦИАЦИИ (12,11) .

Для реализации поставленной задачи был выбран язык программирования Java TM

Дипломная работа состоит из 2-х глав и 4 приложений.

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

Во второй главе Практическая часть поэтапно описывается технология организации доступа к базе данных в формате RUSMARC в частности:

· настройка WEB-сервера Apache;

· настройка Java Server для WEB-сервера Apache;

· выбор инструментария для реализации программы:

Первое приложение содержит полное описание спецификации формата RUSMARC с детальным описанием всех полей и подполей и возможных их значении.

Во втором приложении приведены ключевые моменты спецификации языка программирования Java.

Третье приложение содержит листинг программы с включенными в него комментариями.

В четвертом приложении приведены результаты проведенного теста на реальных массивах данных.

1. Internet – технология работы с базами данных

Использование технологий WWW для обеспечения доступа к каким-либо информационным ресурсам подразумевает существование следующих компонент.


1. IP — сети с поддержкой базового набора услуг по передаче данных с единой политикой нумерации и маршрутизации, работающим сервисом имен DNS.

2. Выделенного информационного сервера — WWW-сервера, обеспечивающего предоставление гипертекстовых документов через IP — сеть в ответ на запросы WWW – клиентов (см. рис. 1).

Передаваемые гипертекстовые документы оформляются в стандарте HTML — языке описания гипертекстовых документов. Эти документы могут либо храниться в статическом виде (совокупность файлов на диске), либо динамически компоноваться в зависимости от параметров запроса специальным программным обеспечением. Для динамической компоновки HTML-документов, WWW-сервер использует специальным образом оформленные программы- CGI- или Java-программы.

В состав специфики конкретной БД входят как технологические основы, такие как тип СУБД, вид интерфейсов, связи между таблицами, ограничения целостности, так и организационные решения, связанные с поддержкой актуальности баз данных и обеспечением доступа к ней (3).

При обеспечении WWW-доступа к существующим БД, возможен ряд путей — комплексов технологических и организационных решений. Практика использования WWW-технологии для доступа к существующим БД предоставляет широкий спектр технологических решений, по-разному связанных между собой — перекрывающих, взаимодействующих и т.д. Выбор конкретных решений при обеспечении доступа зависит от специфики конкретной СУБД и от ряда других факторов, как то: наличие специалистов, способных с минимальными издержками освоить определенную ветвь технологических решений, существование других БД, WWW-доступ к которым должен осуществляться с минимальными дополнительными затратами и т.д.

WWW — доступ к существующим базам данных может осуществляться по одному из трех основных сценариев. Ниже дается их краткое описание и основные характеристики.

1.1.1. Однократное или периодическое преобразование содержимого БД в статические документы

В этом варианте содержимое БД просматривает специальная программа, создающая множество файлов — связных HTML-документов (см.рис.2). Полученные файлы могут быть перенесены на один или несколько WWW-серверов. Доступ к ним будет осуществляться как к статическим гипертекстовым документам сервера.

Как создать простую web страницу с данными из SQL?

Выше приведенные ответы раскрыли суть вопроса, поэтому распишу одно стандартное решение:

— https://beget.com/ru/virtual-hosting покупаем хостинг на время существования страницы (можно поискать и другие бесплатные, но обязательно с php и базой)
— в базе данных создаем таблицу images c полями (id, name, url), вставляем туда (с помощью запроса или phpadmin) соответствующие данные.
— создаем файл index.php на компьютере (можно в блокноте, хотя лучше в notepad++)
— вставляем туда стандартную hrml разметку страницы + выше всего текста (это важно) пишем запрос на php который будет доставать данные из базы (SELECT * FROM images WHERE > — по ftp заливаем файлик в корневую папку сайта

Генерировать тем же запросом .HTML и загнать в планировщик sql и добавить обновление в код страницы можно. Но может есть более конкретные альтернативные советы или готовые продукты для такой задачи?

Отобразить результат SQL запроса на экране планшета. Это настолько сложно?

Никита, как-то так тоже видимо можно.

Я ищу самый простой способ вывода. Сложность самого запроса не важна.

Образовательный блог — всё для учебы

Публикация баз данных в интернете — это размещение информации их баз данных на WEB-страницах в сети. Отметим, что такая публикация связана с решением следующих типичных задач, возникающих перед разработчиками современного программного обеспечения:
• Организация взаимосвязи СУБД, работающих на различных платформах.

• Построение информационных систем в сети Internet на основе многоуровненевой архитектуры БД (архитектура таких систем включает дополнительный уровень — WEB-сервер с модулями расширения серверной части, который и реализует возможность информационного обмена и публикации БД в глобальной сети)

• Построение локальных интранет-сетей на основе технологии публикации БД в Интернете.

• Использование в Internet информации из существующих локальных сетевых баз данных.

• Применение БД для упорядочивания информации.

• Поддержка языка SQL.

• Использование средств СУБД для обеспечения безопасности данных.

• Стандартизация пользовательского интерфейса на основе применения WEB-браузера.

Размещение информации из БД в Internet представляет собой новую информационную технологию, получившую широкое распространение в последнее время в связи с ростом популярности глобальной паутины.

В Internet вся информация размещается на WEB-страницах, для написания которых используется язык HTML (язык разметки текста) или его расширения, такие как DHTML и XML. В содержимое WEB-страницы может входить как и текстовая информация, так и графические изображения, ссылки на другие страницы и даже аудио и видео информация.

Для расширения возможностей WEB-сервера создаются соответственные программы расширения. При организации работы БД в сети часто используют следующие средства:
• Сценарии (JavaScript, JScript, VBScript).
• Апплеты и сервлеты, написанные на Java.
• Элементы управления ActiveX.
• Консольные программы, реализованные с поддержкой интерфейсов CGI.
• Программы, поддерживающие интерфейс WinCGI.
• Динамические библиотеки, поддерживающие ISAPI.
• Динамические страницы IDC/HTX.
• Активные серверные страницы ASP.

Дадим краткую характеристику этих средств.

Технологии публикации БД

Сценарии JavaScript, JScript, VBScript
Сценарии, написанные на скриптовых языках, используют для динамического управления интерфейсными объектами WEB-документа. Все эти языки в подавляющем своём большинстве интерпретируемые. Интерпритация осуществляется или браузером, или WEB-сервером. Скрипты рассматриваются как расширение языка HTML и могут включаться в тело документа. Часть скрипта выполняется в момент загрузки, а какие-то части — в ответ на действие пользователя. Выбор конкретного скриптового языка зависит в первую очередь от выбранного браузера.

Элементы управления ActiveX
Элементы управления ActiveX представляют собой модули расширения, реализованные в виде DLL, которые могут быть использованы и на стороне клиента, и на стороне сервера. Механизм работы элементов управления позволят получать с их помощью неограниченный доступ к локальным ресурсам компьютера. Так как код ActiveX может содержать вирус, использование этих элементов чаще всего неоправданно.

Апплеты и сервлеты Java
Апплеты Java применяются для создания динамически формируемого интерфейса пользователя. Язык Java является объектно-ориентированным языком. Однако возможности Java по доступу к локальным ресурсам сильно урезаны, что делает его безопасным для работы в сети. По мимо этого Java интерпретируема, такой механизм помимо безопасности гарантирует и целостность данных пользователя.

Сервлеты, в отличие от апплетов, выполняются на стороне сервера. В первую очередь сервлеты служат для обработки запросов, передаваемых от браузера.

Интерфейсы CGI и WinCGI
Для создания модулей расширеня WEB-сервера часто используются интерфейсы: общий шлюзовой (CGI) или интерфейсы прикладного программирования (API).

CGI — стандартный протокол взаимодействия между WEB-сервером и модулем расширения, который используется для выполнения нестандартных функций. Такие модули могут использоваться для обработки получаемой пользователем информации.

Обмен информацией между CGI-приложением и сервером осуществляется через стандартный потоковый ввод-вывод, а передача параметров организуется через переменные окружения или URL-адреса.

Для запуска модуля, необходимо обратиться к нему через его URL. Для каждого такого запроса сервер запускает новую копию CGI-приложения.

Для среды Windows существует адаптированный вариант интерфейса — WinCGI. В нём управляющие параметры передаются через ini-файл. В остальном WinCGI повторяет принципы работы родительского интерфейса.

Интерфейсы ISAPI/NSAPI
Более перспективными являются интерфейсы ISAPI/NSAPI, разработанные фирмами Microsoft и Netscape соответственно. Осуществление взаимодействия с сервером осуществляется при помощи специальных объектов request-response. Основное отличие от CGI в том, что при многопользовательском режиме работы не происходит излишней нагрузки сервера, потому что загрузка DLL выполняется только один раз при первом обращении.

ASP, PHP и IDC/HTX-страницы
Это специальные типы страниц, используемые для динамического формирования страниц, содержащих информацию из БД.
IDC-страница содержит псевдоним (alias), запрос, идентификатор пользователя и пароль.
HTX-страница содержит шаблон, определяющий какую информацию и в каком формате передавать браузеру.
ASP-страница содержит одновременно HTML-шаблон и SQL-запрос к БД. В ASP-страница используются средства JScript и объектная модель доступа к данным.

Протоколы передачи данных

В сети Internet используются серверы с различным программным обеспечением. Запросы от браузера поступают на WEB-сервер в соответствии с установленным протоколом обмена, например HTTP. Вообще-то в сети Internet поддерживается более десятка протоколов. Протокол HTTP предназначен для передачи между браузером и сервером. Соединение чаще всего обеспечивается на уровне протокола TCP/IP, но при работе с БД лучше использовать протокол IIOP, который умеет сохранять состояние.

Виды публикации

Статическая публикация
Генерацию таких страниц выполняет обычное приложение Windows, имеющее доступ к БД. Этот способ используется только если публикуемая информация обновляется очень редко. Зато при поступлении запроса не требуется активное состояние сервера.

Динамическая публикация
Используется в случаях, когда требуется получить доступ к БД, информация в которой часто обновляется. Таким способом работают Internet-магазины, авиакассы, да и вообще все системы реального времени.

Вывод

Информационные системы, построенные на WEB-приложениях используют многоуровневую архитектуру и позволяют воспользоваться всеми преимущества всемирной паутины. Однако разработчикам надо учитывать, что такая архитектура имеет недостатки:
— Совместимость браузеров.
— Разграничение прав доступа.
— Безопасность.
— Надёжность линий связи.

Требования к WEB-СУБД

— Защищённость доступа к ценным данным.
— Независимый способ подключения.
— Независимость работы от типа сервера и браузера.
— Открытость архитектуры.
— Поддержка COM+ и CORBA.
— Масштабируемость.
— Поддержка транзакций.
— Поддержка сеансов.
— Производительность.
— Минимальная требование к администрации.

Плюсы

— Простота.
— Независимость от ПО.
— Графический интерфейс.
— Стандартизация.
— Межплатформенная поддержка.
— Прозрачность.
— Масштабируемость.

Минусы

— Малая надёжность.
— Низкая скорость.
— Низкий уровень безопасности.
— Высокая стоимость.
— Трудность в определение масштаба.
— Ограничение html.
— Требования к пропускной способности.
— Несовершенная разработка.

Создание веб-интерфейса к БД MS Access в ОС Windows

ВВЕДЕНИЕ

В этой статье речь пойдет о работе с базами данных Microsoft Access (файлы *.mdb) в ОС Windows (все версии Win2k, а также Windows XP) с использованием наиболее распространенных средств создания динамических страниц, таких как ASP, PHP, Perl и ColdFusion.

Данная статья предназначена для тех, кто хочет научиться работать с базами данных при создании динамических страниц путем наименьшего сопротивления. То есть здесь собраны средства, которые наиболее просты в установке и в настройке ПО. Например, для программирования на ASP достаточно иметь дистрибутив Windows 2000 и одну из версий (практически любую) пакета Microsoft Office с компонентом MS Access. Материал данной статьи может быть использован также при работе с другими СУБД, входящими в набор стандарнтых драйверов ODBC (MS SQL, Paradox, Oracle и т.д.)

Предполагается, что читатель уже умеет устанавливать Windows и Microsoft Office, поэтому особенности установки этих программ в статье не рассамриваются. Следует заметить, что работа всех компонентов тестировалась с использованием Microsoft Windows 2000 Server и Microsoft Office 2000.

Для создания веб-интерфейса к БД MS Access необходимо совершить следующие действия:

  • Установить Windows и пакет MS Office
  • Установить средство создания динамических страниц (Perl, PHP, . )
  • Установить и настроить веб-сервер
  • Создать БД в файле *.mdb с помощью MS Access
  • Написать программу, связывающую веб-страницу с БД созданного файла

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

Весь необходимый материал, рассматриваемый в данной статье, Вы можете скачать в архиве dhtml.rar (123 Kb) и распаковать в корневой каталог веб-сервера C:\InetPub\wwwroot\DHTML.

УСТАНОВКА И НАСТРОЙКА INTERNET INFORMATION SERVICES 5.0

Данный веб-сервер легко устанавливается под ОС Win2k и WinXP, так как входит в состав дистрибутива Windows как один из компонентов. Для установки достаточно (при наличии дистрибутива Windows) воспользоваться разделом «Пуск \ Настройка \ Панель Управления \ Установка и Удаление программ \ Добавление и удаление компонентов Windows \ Internet Information Services 5.0»:

После нажатия на кнопку «Далее» будет произведена установка IIS. Запуск IIS будет произведен автоматически после установки без перезагрузки компьютера. Корневым каталогом веб-сервера по-умолчанию является папка c:\inetpub\wwwroot , а для того, чтобы проверить его работоспособность достаточно набрать в адресной строке браузера http://localhost .

Теперь предстоит настроить веб-сервер, для чего следует зайти в раздел «Пуск \ Настройка \ Панель Управления \ Администрирование \ Диспетчер служб Интернета»:

В открывшемся окне «Internet Information Services» следует выбрать раздел «Веб-узел по умолчанию» и просмотреть его свойства. Здесь на вкладке «Документы» можно указать следующую последовательность загружаемых по умолчанию файлов: «index.cfm», «index.asp», «index.php», «index.cgi», «index.htm», «index.html»:

После установки IIS уже сразу можно использовать ASP-технологию и создавать динамические страницы в форме файлов *.asp. Если же Вы используете другую технологию (PHP, Perl, ColdFusion и т.д.), то Вам необходимо установить установить соответствующую программу и настроить IIS на работу с ней. Например, если Вы желаете использовать PHP, то в IIS нужно прописать, что файлы с расширением *.php должны обрабатываться программой C:\PHP4\php.exe. Для этого нужно перейти на вкладку «Домашний каталог»:

Далее следует нажать на кнопку «Настройка», в появившемся окне можно видеть связь расширений и исполняемых файлов:

Для добавления новой связи следует воспользоваться кнопкой «Добавить», где нужно указать исполняемый файл и расширение. Следует заметить, что в приведенном выше примере уже реализованы примеры связей для файлов с расширениями *.php, *.cgi, *.cfm . Установка Perl и PHP будет рассмотрена в последующих разделах.

СОЗДАНИЕ БД В MS ACCESS

Создадим базу данных в файле db.mdb с единственной таблицей school_teacher. Для этого запустим MS Access: Пуск \ Программы \ Microsoft Access. Далее требуется создать новую БД и сохранить в файле db.mdb в некотором каталоге, например в C:\InetPub\wwwroot\DHTML\ . После чего создадим таблицу school_teacher с помощью конструктора со следущей структурой:

Заполним таблицу данными, например следующим образом:

В последующих разделах данной статьи будет рассмотрена возможность привязки данной БД в различных технологиях веб-программирования и генерации на веб-странице кода, выводящего содержимое данной таблицы следующим образом:

ФИО Предмет
1 Беляев Сергей Николаевич Программирование
2 Стольникова Ирина Валерьевна HTML
3 Голикова Марина Николаевна HTML
4 Ликай Елена Павловна Программирование
5 Ильиных Елена Николаевна Программирование
6 Бокатуев Денис Андреевич Web-дизайн


НАСТРОЙКА ИСТОЧНИКА ДАННЫХ ODBC

Для работы с базами данных часто используют псевдонимы (alias). Псевдоним БД — это имя некоторой базы данных, которое прописывается в настойках таким образом, что для обращения к таблицам данной базы достаточно указать alias. Это удобство позволяет легко менять тип БД, не меняя текста программ. Рассмотрим принцип определения псевдонима БД Microsoft Access, хранящейся в файле db.mdb на сервере. Предположим, мы хотим, чтобы псевдоним db соответствовал данной БД. Для этого необходимо запустить Администратор источников данных ODBC (Пуск \ Настройка \ Панель управления \ Администрирование \ Источники данных (ODBC)):

Далее, в разделе «Системный DSN» следует добавить новый псевдоним, выбрав соответствующий драйвер:

После нажатия на кнопку «Готово» остается указать имя источника «db» и путь к файлу:

Нажатием кнопки «Ок» в системе появится псевдоним «db» к базе данных, который можно будет использовать при обращении к файлу db.mdb . Следует заметить, что аналогичным образом можно указать псевдоним и к другим СУБД, при этом принцип реализации веб-интерфейса к БД не изменится.

Заметим, что для работы с файлами *.mdb можно работать и без псевдонима, т.е. вместо подключения
DSN = «db»
можно использовать одно из следующих подключений:
DSN = «Driver=; PWD=; DBQ=c:\Inetpub\wwwroot\dhtml\db.mdb»
DSN = «Prov >

Здесь видно, что при подключении используется полный путь к файлу, что менее практично.

Публикация БД Access в интернете

Термин “публикация” означает предоставление данных, хранящихся в

БД, широкому кругу пользователей Интернет.

Одной из основных задач публикации является преобразование объектов базы данных в Web-страницы.

При публикации БД в Интернете с помощью Microsoft Access 2000 можно создавать следующие три разновидности Web-страниц:

• статические станицы HTML;

• динамические (серверные) страницы HTML;

• страницы доступа к данным.

Статические страницы HTML создаются из таблиц, запросов, форм и отчетов. Они не требуют подключения к источнику данных (то есть к самой БД), содержат в себе всю необходимую информацию для отображения, при этом нет никакой необходимости в дополнительной настройке при публикации на Web-сервере в сети Интернет. Чтобы сделать статиче­ские файлы HTML доступными в Интернете, следует опубликовать их в пап­ках Web или на Web-сервере.

Однако такие страницы содержат лишь те данные, которые существовали в базе данных на момент публикации, и, конечно, эти данные доступны только для просмотра в браузере, а не для редактирования (пример статической страницы представлен на рис.27.1).

Рис. 27.1. Таблица «Поставщики», экспортированная в формат HTML

Использование статических страниц целесообразно только в тех случаях, когда данные в БД изменяются очень редко. При из­менении БД нужно вновь экспортировать статические страницы на Web-сервер для просмотра новых данных в обозревателе.

На рис. 27.2 представлена принципиальная схема публикации БД с помощью статических страниц.

Рис. 27.2. Принципиальная схема публикации БД с помощью статических страниц.

Динамические страницы HTML создаются из таблиц, запросов и форм. Они используются, когда информация в БД часто из­меняется. При этом связь с БД организуется с помощью ODBC-интерфейса или ADO-интерфейса.

Замечание: ODBC – широко распространенная технология форматно

независимого доступа к данным из прикладных программ. Она предусматривает, что

программа непосредственно взаимодействует с диспетчером драйверов, посылая ему

ODBC-вызовы; диспетчер драйверов отвечает за динамическую загрузку нужного

ODBC-драйвера, через который обращается к СУБД (серверу баз данных).

Чтобы постоянно предоставлять пользователям Web актуальную информацию, достаточно один раз создать страницу и экспортировать ее на Web-сервер. И каждый раз после изменений в источнике (в БД) новые данные будут попадать в нее автоматически. Иными словами, заполнять (динамически генерировать) страницу будет Web-сервер по запросу обозревателя любого пользователя Интернет. При этом пользователи Интернет могут только просматривать эти страницы, Однако редактировать данные содержащиеся на динамической странице (как и на статической) нельзя.

Таким образом, эти страницы являются динамическими в смысле их содержимого, но не их структуры. Изменять структуру страниц (например, число полей или их типы), как и их состав (то есть их количество), пользователи также, естественно, не могут.

Поясним основную идею генерации динамических страниц более подробно. Она состоит в следующем. При (первоначальном преобразовании объектов, то есть до экспорта динамической страницы) объекты БД преобразуются не в файлы с расширением htm, а в файлы с расширением htx (то есть создается шаблон отображения данных; на рис. 27.3 представлен вид окна на стадии создания шаблона).

Рис. 27.3. Диалоговое окно Настройка вывода файлов НТХ и IDC (для формирования шаблонов динамических страниц)

Кроме того создаются файлы IDC (команды для извлечения данных из базы). Файл с расширением idc содержит запрос в форме инструкции SQL и данные, используемые Internet Information Server для связи с источником данных ODBC, то есть с базой данных Microsoft Access. Данные о связи включают название источника данных (БД) , а также имя пользователя БД и пароль для входа.

При обращении к объекту базы данных, опубликованному в описываемом формате (то есть по запросу любого пользователя Интернет), Web-сервер (Internet Information Server) открывает базу данных Microsoft Access с помощью драйвера Microsoft Access и данных в файле с расширением idc, запускает запрос из файла IDC для доступа к данным. После выполнения запроса полученный результат объединяется с данными из файла НТХ в один файл с расширением html, который затем отправляется программе просмотра пользователя (приславшего запрос на страницу), где отображается в виде Web-страницы.

На рис.27.4 представлена принципиальная схема публикации БД с помощью динамических страниц.

Рис. 27.4 Принципиальная схема публикации БД с помощью динамических страниц.

Страницы доступа к данным представляют собой полноценный интерактивный интерфейс к данным в базе. Это специальный тип Web-страниц, предоставляющий пользователям Web интерфейс форм и отчетов Access для доступа к данным из базы данных Microsoft Access. Страницы доступа к данным представляют собой текстовые файлы с исходным кодом, соответствующим расширенному стандарту HTML — XML (Extended Markup Language).

Как уже отмечалось выше, формат динамических страниц HTML, генерируемых сервером, позволяет получать актуальные данные, но не позволяет редактировать их.

Страницы доступа к данным дают возможность делать и то и другое. И еще с их помощью можно добавлять, удалять, сортировать и группировать записи. Каждый раз после изменений в базе данных новые данные автоматически попадут на страницу доступа к данным. А если отредактировать данные на странице доступа к данным, изменения автоматически попадут в присоединенную базу данных.

Внешний вид страницы доступа к данным обычно практически не отличается от внешнего вида исходного объекта. Небольшие отличия состоят в том, что на страницах доступа к данным могут появиться дополнительные элементы управления, позволяющие работать с записями. Например, на странице доступа к данным, полученной из отчета «Счет», есть элементы управления, позволяющие переходить между записями и сворачивать или разворачивать уровни группировки (рис. 27.5).

Вообще говоря, интерфейс базы данных обычно включает достаточно сложные формы и отчеты: многостраничные и с подчиненными формами и отчетами, со связанными объектами. К сожалению, точных аналогов многостраничных форм, подчиненных форм и отчетов и связанных объектов в страницах доступа к данным Access 2002 не существует, однако с помощью программирования можно реализовать все необходимое для работы с данными.

Кроме того, программирование позволяет снабдить страницу доступа к данным процедурами реакций на события, такие как нажатие кнопки, получение страницей фокуса и многие другие. То есть страницы обладают всеми необходимыми возможностями, которые предоставляют формы и отчеты Access (пример страницы доступа представлен на рис 27.5).

Рис. 27.5. Отчет «Счет», преобразованный в страницу доступа к данным

Страницы доступа к данным поддерживаются программой просмотра Internet Explorer версии 4.0 или более поздней. Полная поддержка всех

возможностей реализована в версии 5.0.

Страницы доступа к данным появились как новый тип объектов базы данных в Access 2000. Но в отличие от других объектов, они не хранятся в файле базы данных, а хранятся в виде отдельных файлов HTML. В базе данных содержатся только ярлыки, указывающие на эти файлы. Список ярлыков страниц доступа к данным отображается в окне базы данных (рис. 27.6).

Рис. 27.6. Ярлык для доступа к странице Личная карточка

Работать со страницей доступа к данным можно, открыв ее либо в программе просмотра Интернета, такой как Internet Explorer, либо в приложении Access 2002.

Возможности страницы доступа к данным зависят от того, для чего она предназначена. Существуют три основных типа страниц доступа к данным, обеспечивающмх :

  • Составление отчетов в интерактивном режиме. Страницы доступа к данным этого типа часто используются для объединения и группировки сведений, хранящихся в базе данных, а также для публикации сводок данных. Например, страница может публиковать сводки по продажам для каждого региона, в котором проводятся операции. С помощью маркеров развертывания можно перейти от общей сводки данных, такой как список всех регионов и общий объем продаж по ним, к подробностям по продажам отдельных товаров в каждом регионе. Страница может также содержать кнопки панели инструментов, позволяющие сортировать и фильтровать данные, однако редактировать данные на страницах этого типа невозможно.
  • Ввод данных и редактирование данных. Этот тип страниц доступа к данным используется для просмотра, добавления и редактирования записей или только для добавления записей.
  • Анализ данных. Страницы доступа к данным этого типа могут включать сводные списки (аналог сводных таблиц Excel), которые позволяют реорганизовывать данные для их анализа различными способами. Страница может содержать диаграммы для анализа тенденций, закономерностей и выполнения сравнений между данными в базе данных или электронные таблицы, в которые можно вводить и редактировать данные, а также использовать формулы для выполнения некоторых вычислений, выполняемых в Microsoft Excel.

Страница доступа к данным непосредственно связана с базой данных. При просмотре в Internet Explorer отображается копия страницы. Поэтому любой отбор данных, сортировка и другие изменения способа отображения данных, включая изменения в сводном списке или электронной таблице, влияют только на копию страницы. Однако изменения в самих данных — изменение значений, добавление или удаление данных — сохраняются в базе данных и впоследствии доступны всем, кто просматривает страницу.

При публикации страниц доступа к данным необходимо помнить о том, что база данных также должна быть опубликована на Web-сервере (например, как источник ODBC). В противном случае страница не получит доступа к объектам базы данных.

На рис. 27.7 представлена принципиальная схема публикации БД с помощью страниц доступа к данным.

Рис. 27.7. Принципиальная схема публикации БД с помощью страниц доступа к данным.

Преобразование объектов базы данных в форматы публикуемых страниц (HTML) производится с помощью одной и той же команды Файл/Экспорт (Export), которая может быть выбрана из окна БД Access.

Экспортировать любую созданную страницу или саму БД на Web-сервер проще всего при помощи Проводника Windows (рис. 27.8).

Веб-приложения с использованием СУБД

После того как в предыдущей статье («Мир ПК», №12/06, с. 74) мы познакомились с концепцией создания приложений СУБД с использованием WAS CE и с понятием пула соединений, можно перейти к созданию простого приложения, взаимодействующего с БД.

Использование БД в серверных приложениях J2EE

Эта тема очень интересная и непростая, и о ней можно написать большую книгу. В данной статье мы, разумеется, не будем детально рассматривать эти вопросы, тем более что они не имеют отношения к конкретным реализациям J2EE-серверов, в частности к WAS CE. Однако понимание основных аспектов взаимодействия серверов приложений и серверов БД полезно в любом случае. Применительно к WAS CE польза будет состоять в том, что читателю станут гораздо более понятны странный на первый взгляд состав jar-файлов ../repository/ tranql/jars/tranql-1.2.2.jar и наличие нескольких rar-коннекторов в каталоге ../repository/tranql/ rars (и их общее назначение).

Локальные и глобальные транзакции

Само понятие транзакции хорошо знакомо программистам, работающим с БД (зачастую, правда, в весьма упрощенном варианте). А вот деление транзакций на локальные и глобальные появилось в связи с использованием распределенных многозвенных систем.

Локальными транзакциями при взаимодействии с базами данных называются транзакции, управление которыми берет на себя СУБД. С точки зрения программиста, использующего универсальный API для доступа к БД (например, JDBC), локальные транзакции создаются и завершаются в привязке к конкретному соединению с БД. В JDBC явное управление локальными транзакциями выполняется за счет вызова методов объекта типа Connection, таких как setAutoCommit(), commit() или rollback(). Этот режим работы характерен для написания приложений в архитектуре «клиент—сервер». СУБД использует однофазный режим завершения таких транзакций — другими словами, процедура завершения транзакции выполняется за одну команду (commit для подтверждения транзакции). При такой работе нет возможности создать транзакцию, которая «объединяла» бы действия — обычно операторы SQL — с использованием нескольких соединений.

В архитектуре «клиент—сервер» использование однофазных локальных транзакций не вызывает никаких трудностей до тех пор, пока не используются распределенные БД, но последнее встречается довольно редко. Программист в коде клиентского приложения устанавливает соединение с СУБД, явно или неявно начинает локальную транзакцию, выполняет те или иные действия, завершает транзакцию и, если она была последней и все нужные действия уже выполнены, разрывает соединение с СУБД.

Если же используется распределенная БД — другими словами, в контексте одной транзакции должны меняться данные сразу в нескольких БД, — то для решения этой задачи многие производители СУБД обеспечили возможность задания транзакции, выполняемой для нескольких БД этого типа. Такие операции можно условно назвать «локальными транзакциями с двухфазным завершением».

Возрастание требований к технологиям создания сложных проектов, их надежности и масштабируемости, а также возможность создания гетерогенных (разнотипных) распределенных БД привели к качественному изменению ситуации — появились технологии создания распределенных систем, наиболее развитыми и совершенными из которых являются CORBA, J2EE и .NET. Для распределенных систем понятие транзакции было распространено на информационную систему в целом, а не только на СУБД как часть такой системы. Транзакционной стала не только информация в долговременных хранилищах — таковыми стали объекты, из которых строится сама система. Вследствие этого встала задача совместной работы на уровне распределенных объектных транзакций и транзакций на уровне БД — хотя бы потому, что многие объекты хранят свое состояние в БД. Для управления распределенными объектными транзакциями в многозвенных системах существует специальная подсистема, которую обычно называют менеджером или координатором транзакций. В модели Distributed Transaction Process, разработанной консорциумом X/Open (сейчас входит в состав Open Group), появился специальный протокол взаимодействия между координатором транзакций и менеджером ресурсов. Задачей менеджера ресурсов является сохранение состояния транзакционных объектов распределенной системы в БД. Этот протокол получил название XA-протокола.

В принципе его можно трактовать как стандартное средство решения проблемы управления транзакциями с двухфазным завершением, не ограниченное возможностями той или иной конкретной реализации СУБД и позволяющее включать в одну распределенную транзакцию разнотипные СУБД, причем стандартным образом.

Поскольку протокол XA по определению является протоколом взаимодействия системных приложений — менеджера транзакций и менеджера ресурсов, то прикладному программисту нет необходимости знать детали этого протокола. Протокол XA — «внутренняя кухня» технологий создания распределенных систем, в том числе J2EE и JDBC.

Итак, глобальными называются транзакции, которые управляются внешним по отношению к СУБД координатором транзакций. Глобальные транзакции могут завершаться как в однофазном, так и в двухфазном режимах.

Транзакции и компонентная модель EJB

Компонентная модель EJB (Enterprise JavaBeans) предназначена для быстрого и качественного создания серверов приложений как основной части распределенных систем. Применительно к теме, затронутой в данной статье, нас будут интересовать два вида EJB-компонентов — session-компоненты с состоянием и entity-компоненты (чтобы окончательно не сбивать читателя с толку с помощью различной их трактовки в разных версиях EJB, будем понимать entity-компоненты в терминах EJB 2.x).

Session-компонент с состоянием — это компонент, который создается на стороне сервера как представитель конкретного клиента, и его задачей является реализация бизнес-логики системы на стороне сервера приложений. Вызов методов этого компонента выполняется (в подавляющем большинстве случаев) в контексте глобальных объектных транзакций. Если состояние этого компонента не нужно сохранять в БД в соответствии с обычной транзакционной логикой, то программисту ничего делать не надо.

Другое дело, если он хочет сохранить состояние создаваемого объекта. Технология EJB не обеспечивает этого автоматически — об этом должен позаботиться сам программист. Обычно для упомянутой цели используется API JDBC, а именно: в коде компонента разработчик создает соединение с БД, начинает локальную транзакцию, задает нужные SQL-операторы, завершает транзакцию (или транзакции) и разрывает соединение.

На самом деле в таком режиме все только выглядит просто. Проблема состоит в том, что разработчик компонента сам не знает, в какой глобальной объектной транзакции участвует данный компонент, и команды управления локальными транзакциями, помещенные в его код, могут противоречить логике работы сервера приложения, который строится из многих составляющих, причем некоторые из них одновременно могут участвовать в одной и той же глобальной транзакции. Чтобы избежать такого рода конфликтов, среда исполнения EJB-компонентов либо запрещает применять команды управления локальными транзакциями в режиме использования транзакций глобальных, либо перехватывает такие команды и игнорирует их, а управление локальными транзакциями на уровне СУБД берет на себя менеджер глобальных транзакций. Другими словами, локальная транзакция на уровне объекта Connection API JDBC начинается и заканчивается не тогда, когда этого требуют правила JDBC или даже сам программист, а тогда, когда соответствующие команды даст глобальный координатор транзакций. Это очень облегчает жизнь прикладному программисту — обычно он просто не помещает в код session-компонентов с состоянием никаких команд управления транзакциями из состава JDBC API. Но за такие удобства для прикладного разработчика должны «расплачиваться» системные программисты — управление соединениями в распределенных системах самым тесным образом связано с управлением глобальными транзакциями.

Еще интереснее обстоит дело с entity-компонентами.


Entity-компоненты по определению являются кэшированным объектным представлением данных из БД на уровне сервера приложения и управляются командами менеджера глобальных транзакций. Несколько упрощая, можно сказать так: при начале глобальной объектной транзакции для данного конкретного компонента его состояние синхронизируется с состоянием БД путем чтения информации из нее (SQL-команда SELECT), при завершении глобальной транзакции измененное в процессе транзакции состояние компонента записывается в БД (SQL-команда UPDATE).

Особенностью entity-компонентов в модели EJB является автоматизация управления состоянием компонента. Программист, создавая компонент, работает с логическими сущностями — как на уровне Java-кода самого компонента, так и на уровне БД. Эта совокупность логических представлений называется «абстрактной схемой» компонента. Для удобства работы с компонентами при таком подходе автору компонента нельзя использовать конкретные названия физических полей в реальной базе данных хотя бы потому, что автор компонента этих названий может просто не знать. То есть использовать при создании компонента язык SQL нельзя. Для тех случаев, когда без него обойтись невозможно, в EJB создан специальный язык, похожий на упрощенный SQL, — Query Language (QL). Операторы QL должны быть переведены в соответствующие SQL-операторы либо на стадии развертывания компонента, либо динамически, в процессе работы. Все это опять-таки увязывает между собой такие разные фрагменты технологий, как управление соединениями, транзакциями, поддержку QL, особенности объектно-реляционного отображения entity-компонентов и многое другое.

После такого общего обзора можно вернуться с небес на землю и создать простое веб-приложение, «общающееся» с БД.

Создание БД и подготовка ее к использованию

В общем случае при использовании WAS CE/Geronimo процесс создания и подготовки БД к работе состоит из следующих шагов:

  • запуск (или поиск в сети) нужного сервера БД;
  • создание на нем экземпляра БД как логической совокупности таблиц, индексов, представлений, триггеров, хранимых процедур и проч. Для этой цели используются инструменты, поставляемые самим разработчиком СУБД;
  • создание пула соединений с этой БД с нужными свойствами и в нужном режиме. Подробно об этом говорилось в предыдущей статье.

В состав WAS CE в качестве одного из сервисов входит СУБД Derby — реализация реляционной БД с открытым исходным текстом. Эта СУБД используется многими сервисами и компонентами WAS CE для решения системных задач, но прикладной программист — особенно для учебных задач — может использовать ее как рабочую СУБД для хранения необходимых данных.

Поскольку СУБД Derby интегрирована в состав WAS CE, использовать ее проще, чем другие СУБД, — в частности, за счет того, что в состав консоли администратора WAS CE входит менеджер управления БД Derby.

В нашем простейшем примере в состав БД (уже существующая БД SystemDatabase) будет входить только одна таблица. Оператор SQL для ее создания имеет такой вид:

Выполнить эту команду можно, набрав ее в поле текста команды менеджера Derby (рис. 1) при выбранной нужной БД (SystemDatabase в данном примере).

Рис. 1. Менеджер СУБД Derby

Нужные данные можно внести в таблицу с помощью одного или нескольких SQL-операторов INSERT. Для просмотра содержимого таблиц Derby можно задать SQL-оператор SELECT или воспользоваться средствами просмотра содержимого, предоставляемыми менеджером БД Derby.

Если пользователь хочет использовать не существующую, а специально созданную БД, то следует задать имя создаваемой БД и нажать кнопку Create. В этом случае нужно будет создавать, разумеется, пул соединений для этой БД.

Что касается предустановленной БД с именем SystemDatabase, то для нее уже создан пул соединений с именем SystemDatasource и списком свойств, отраженным на рис. 2.

Рис. 2. Свойства пула соединений для БД SystemDatabase

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

Использование параметров пула соединений в дескрипторах J2EE-модулей

Об этом подробно говорилось в предыдущей статье, и здесь просто еще раз сформулируем основные положения.

  • Важнейшим элементом приложения, использующего БД, является установление связи между пулом и приложением.
  • Программист работает с высокоуровневой моделью взаимодействия с СУБД: он получает (обычно с помощью JNDI) доступ к фабрике соединений, роль которой в JDBC играет интерфейс DataSource и производные от него интерфейсы, а затем с помощью вызова метода getConnection() устанавливает логическое соединение с сервером.
  • Спецификация J2EE требует, чтобы настройкой занимался не программист, а специалист, реализующий J2EE-роль под названием deployer. Он работает с xml-дескрипторами модулей, из которых строится J2EE-приложение.
  • Обычно обращения к пулам соединений с БД выполняются из модулей, которые содержат веб- или EJB-компоненты. Пул соединений трактуется как ресурс J2EE, что приводит к использованию тега в стандартных xml-дескрипторах.
  • Специфика реализации практически любого J2EE-сервера требует использования не только стандартного, но и дополнительного xml-дескриптора.

С текстами xml-дескрипторов мы уже знакомы. Основной дескриптор имеет имя web.xml и может содержать следующие строки:

План развертывания WAS CE (специфический для WAS CE дескриптор) имеет имя geronimo-web.xml и может выглядеть так:

Несмотря на то что в большинстве случаев удобнее всего использовать стандартный подход, при котором файлы дескрипторов имеют предопределенные имена (web.xml и geronimo-web.xml) и находятся в каталоге WEB-INF архива веб-приложения (WAR-файла), возможны альтернативные решения, которые зависят от формата создаваемого приложения.

Простые веб-приложения, подобные рассматриваемому в данном примере, можно создавать, а затем развертывать на сервере в виде отдельного WAR-файла. В этом случае специфический для WAS CE xml-дескриптор можно назвать любым именем и хранить его в произвольном месте, не включая в состав war-архива, а при развертывании приложения на сервере просто указать это имя в командной строке, например:

Использование пула на уровне Java-кода

Для простоты приложение будем создавать в виде JSP-документа (пусть он имеет имя my_derby_app.jsp). б?ольшую часть этого документа будет занимать Java-код, HTML-теги понадобятся только для форматирования выводимых данных. Текст вряд ли нуждается в дополнительных пояснениях:

После того как будет создан WAR-файл приложения (который содержит три файла — xml-дескрипторы в подкаталоге WEB-INF и JSP-документ в корневом каталоге), созданное веб-приложение нужно развернуть на сервере с помощью команды deploy.

Для просмотра записей в таблице при работе с браузером нужно задать следующий URL: http://localhost:8080/derby_webdb/my_derby_app.jsp.

WAS CE предоставляет разработчикам все необходимое для создания приложений БД, доступ к которым осуществляется с помощью использования интернет-браузера на рабочем месте клиента.

Создание простого веб-приложения с использованием базы данных MySQL

В этом документе описана процедура создания простого веб-приложения, которое подключается к серверу базы данных MySQL. Здесь также рассмотрены основные идеи и технологии веб-разработки, такие какJavaServer Pages (JSP), библиотека стандартных тегов JavaServer Pages (JSTL), интерфейс API связи с базами данных Java (JDBC) и двухуровневая архитектура между клиентом и сервером. Этот учебный курс разработан для начинающих разработчиков, обладающих базовыми знаниями в области веб-разработок и желающих применить свои знания к базе данных MySQL.

MySQL является популярной системой управления базами данных с открытым кодом, которая обычно используется в веб-приложениях благодаря своей скорости, гибкости и надежности. MySQL использует SQL (язык структурированных запросов) для доступа к данным в базе данных и их обработки.

Этот учебный курс является продолжением учебного курса Подключение к базе данных MySQL и в нем предполагается, что уже создана база данных MySQL с именем MyNewDatabase , для которой зарегистрировано подключение в IDE NetBeans. Табличные данные, используемые в этом учебном курсе, содержатся в ifpwafcad.sql и также необходимы для работы с этим учебным курсом. Этот файл SQL создает две таблицы Subject и Counselor и затем заполняет их данными для примера. При необходимости сохраните этот файл на компьютер, затем откройте его в IDE NetBeans и запустите его в базе данных MySQL с именем MyNewDatabase .

Содержание

Для работы с этим учебным курсом требуется следующее программное обеспечение и ресурсы.

Программное обеспечение или материал Требуемая версия
IDE NetBeans 7.2, 7.3, 7.4, 8.0, пакет Java EE
Комплект для разработчика на языке Java (JDK) версия 7 или 8
Сервер базы данных MySQL 5.x
Драйвер JDBC MySQL Connector/J версия 5.x
GlassFish Server Open Source Edition 3.1.2.2 3.x или 4.x
  • Комплект загрузки Java среды IDE NetBeans позволяет пользователям установить сервер GlassFish. Для работы с данным учебным курсом требуется сервер GlassFish.
  • MySQL Connector/J JDBC Driver, необходимый для взаимодействия между платформами и протоколом баз данных MySQL, включен в IDE NetBeans.
  • Если необходимо сравнить проект с работающим решением, можно загрузить демонстрационное приложение.

Планирование структуры

С помощью двухуровневой архитектуры, в которой клиент взаимодействует с сервером напрямую, можно создать простое веб-приложение. В рамках данного учебного курса веб-приложение Java взаимодействует напрямую с базой данных MySQL с использованием API связи с базами данных Java. В сущности, именно драйвер MySQL Connector/J JDBC обеспечивает обмен данными между кодом Java, распознанным сервером приложения (GlassFish), и любым содержимым на SQL, языке, понятном для сервера базы данных (MySQL).

Приложение, создаваемое в этом учебном курсе, предполагает создание двух страниц JSP. На каждой такой странице с помощью HTML и CSS реализован простой интерфейс, и применяется технология JSTL для выполнения логики, напрямую запрашивающей базу данных с вставкой извлеченных данных на двух страницах. В базе данных MySQL MyNewDatabase содержатся две таблицы базы данных Subject и Counselor , которые были созданы при работе с учебным курсом Подключение базы данных MySQL. Рассмотрим следующий двухуровневый сценарий.

Страница приветствия index.jsp представляется пользователю с помощью простой формы HTML. При запросе браузером index.jsp код JSTL на странице инициирует запрос в MyNewDatabase . Выполняется извлечение данных из таблицы Subject со вставкой их на страницу перед ее передачей в браузер. При передаче данных о выборе пользователя в форме HTML на странице приветствия инициируется запрос страницы ответов ( response.jsp ). И снова код JSTL на странице инициирует запрос в MyNewDatabase . На этот раз данные извлекаются из обеих таблиц — Subject и Counselor . После чего выполняется их вставка на страницу, что позволяет пользователю просматривать данные в зависимости от вариантов выбора при возврате страницы в браузер.

Для реализации описанного выше сценария необходимо разработать простое приложение для организации IFPWAFCAD Международной ассоциации по консультированию и развитию для бывших профессиональных борцов.

index.jsp

response.jsp

Создание нового проекта

Сначала необходимо создать новый веб-проект в среде IDE:

    Выберите «Файл > Новый проект» (CTRL+SHIFT+N; &#8984+SHIFT+N в Mac ОС) в главном меню. Выберите категорию «Java Web», а затем выберите «Веб-приложение». Нажмите кнопку «Далее».

С помощью этого мастера можно создать пустое веб-приложение в стандартном проекте IDE. В стандартном проекте для компиляции, развертывания и выполнения приложения используется созданный в среде IDE сценарий сборки проекта Ant.

  • В поле «Имя проекта» введите «IFPWAFCAD». Также укажите местоположение проекта на компьютере. По умолчанию проекты в среде IDE помещаются в папку NetBeansProjects в домашнем каталоге. Нажмите кнопку «Далее».
  • В панели «Сервер и параметры» укажите сервер GlassFish в качестве сервера, на котором будет запускаться приложение.

    Примечание.Сервер GlassFish отображается в раскрывающемся списке ‘Сервер’, если установлена версия Java IDE NetBeans. Поскольку сервер GlassFish включен в загрузку, он регистрируется в среде IDE автоматически. Для использования в проекте другого сервера нажмите кнопку «Добавить» рядом с полем с раскрывающимся списком «Сервер» и зарегистрируйте другой сервер в среде IDE. Работа с другими серверами, помимо GlassFish в рамках данного учебного курса не рассматривается.

    В поле «Версия Java EE» выберите Java EE 5.

    Для веб-проектов Java EE 6 и Java EE 7 использование дескриптора развертывания web.xml не требуется. Шаблон проекта NetBeans не содержит файл web.xml в проектах Java EE 6 и Java EE 7. Однако в данном учебном курсе рассматривается процесс объявления источника данных в дескрипторе развертывания. Функции, характерные только для Java EE 6 или Java EE 7, не требуются, поэтому в качестве версии проекта можно указать Java EE 5.

    Примечание. Точно так же можно указать в качестве версии проекта Java EE 6 или Java EE 7, а затем создать дескриптор развертывания web.xml . В мастере создания файла выберите категорию «Web», а затем выберите «Стандартный дескриптор развертывания».

  • Нажмите кнопку «Завершить». Создается шаблон проекта для всего приложения и в редакторе открывается пустая страница JSP ( index.jsp ). Файл index.jsp служит в приложении страницей приветствия.
  • Подготовка веб-интерфейса

    Начните с подготовки страницы приветствия ( index.jsp ) и страницы ответов ( response.jsp ). На странице приветствия реализована форма HTML для сбора пользовательских данных. На обеих страницах для просмотра структурированных данных используется таблица HTML. В этом разделе также рассматривается процесс создания таблицы стилей, которая расширяет внешний вид обеих страниц.

    Настройка страницы приветствия

    Убедитесь, что страница index.jsp открыта в редакторе. Если файл еще не открыт, дважды щелкните index.jsp под узлом «Веб-страницы» проекта IFPWAFCAD в окне «Проекты».

    1. В редакторе измените текст между тегами на Домашняя страница IFPWAFCAD .
    2. Измените текст между тегами

    на Добро пожаловать в IFPWAFCAD, Международную ассоциацию по консультированию и развитию для бывших профессиональных борцов!
    Откройте палитру среды IDE, выбрав в главном меню «Окно» > «Палитра» (CTRL+SHIFT+8; &#8984+SHIFT+8 в ОС Mac). Наведите курсор на значок «Таблица» в категории «HTML» и обратите внимание на то, что отображается фрагмент кода для элемента по умолчанию.

    Палитру можно настроить в соответствии с существующими требованиями — щелкните правой кнопкой мыши палитру и выберите ‘Показать крупные значки’ и ‘Скрыть имена элементов’, чтобы палитра выглядела как на рисунке выше.
    Установите курсор сразу же после тегов

    . (Именно в этом месте будет внедрена новая таблица HTML). Далее в окне «Палитра» дважды щелкните значок «Таблица».
    В появившемся диалоговом окне «Вставка таблицы» укажите следующие значения и затем нажмите кнопку «ОК»:

    • Рядов: 2
    • Столбцов: 1
    • Размер границы: 0

    Код таблицы HTML создан и добавлен на страницу.


  • Добавьте следующее содержимое в заголовок таблицы и ячейку первой строки таблицы (новое содержимое выделено полужирным шрифтом):
  • Для нижней строки таблицы вставьте форму HTML. Для этого поместите курсор между второй парой тегов и дважды щелкните значок формы HTML ( ) на палитре. В диалоговом окне «Вставка формы» введите response.jsp в текстовом поле «Действие» и нажмите кнопку «ОК».
  • Между тегами
  • Нажмите клавишу Enter, чтобы добавить пустую строку после добавленного содержимого, затем дважды щелкните «Список» в палитре, чтобы открыть диалоговое окно «Вставить список».
  • В диалоговом окне «Вставить список» ведите subject_id для текстового поля «Имя» и нажмите «OK». Обратите внимание на то, что к форме добавляется фрагмент кода для раскрывающегося списка.

    Количество параметров для раскрывающегося списка не имеет значения. Позже в этом учебном курсе будет показано добавление тегов JSTL для динамического создания на основе данных, полученных из таблицы базы данных «Subject».

  • Добавьте элемент кнопки ‘Отправить’ ( ) в точку, расположенную непосредственно после только что добавленного раскрывающегося списка. Для этого можно использовать окно «Палитра» или вызвать дополнение кода в редакторе, как показано в предыдущем шаге. В диалоговом окне «Вставка кнопки» в текстовых полях «Подпись» и «Имя» введите Отправить и нажмите кнопку ОК.
  • Для форматирования кода щелкните правой кнопкой мыши в редакторе и выберите ‘Формат’ (Alt-Shift-F; Ctrl-Shift-F в Mac). Код автоматически форматируется и должен теперь выглядеть следующим образом:

    Для просмотра этой страницы в браузере щелкните правой кнопкой мыши в редакторе и выберите ‘Запустить файл’ (Shift-F6; Fn-Shift-F6 в Mac). После этого страница JSP будет автоматически скомпилирована и развернута на сервере. Открывается браузер по умолчанию, и в нем выводится страница из местоположения, где она развернута.

    Создание страницы ответов

    Для подготовки интерфейса для страницы response.jsp сначала необходимо создать файл в проекте. Обратите внимание на то, что большая часть содержимого, отображаемого на странице, создана динамически с помощью технологии JSP. Поэтому в следующих шагах будет необходимо добавить метки-заполнители, которые позже будут заменены кодом JSP.

    1. Щелкните правой кнопкой мыши узел проекта «IFPWAFCAD» в окне «Проекты» и выберите «Создать > JSP». Откроется диалоговое окно «Новый файл JSP».
    2. В поле «Имя файла JSP» введите response . Обратите внимание на то, что в настоящий момент для поля «Расположение» выбран каталог «Веб-страницы», это означает, что файл будет создан в каталоге проекта web . Это то же местоположение, что и для страницы приветствия index.jsp .
    3. Примите остальные значения по умолчанию и нажмите кнопку «Готово». В редакторе выполняется создание и открытие шаблона новой страницы response.jsp . Новый узел JSP также отображается в каталоге «Веб-страницы» в окне «Проекты».
    4. В редакторе измените заголовок на IFPWAFCAD —
    5. Удалите строку

    Hello World!

    Для просмотра этой страницы в браузере щелкните правой кнопкой мыши в редакторе и выберите ‘Запустить файл’ (Shift-F6; Fn-Shift-F6 в Mac). Выполняется компиляция и развертывание страницы на сервере GlassFish с последующим открытием в браузере по умолчанию.

    Создание таблицы стилей

    Создайте простую таблицу стилей для расширения просмотра в веб-интерфейсе. При работе с данным учебным курсом предполагается, что пользователь обладает знаниями о правилах стилей и их влиянии на соответствующие элементы HTML на страницах index.jsp и response.jsp .

    1. Откройте мастер создания файлов, нажав кнопку ‘Создать файл’ ( ) на главной панели инструментов IDE. Выберите категорию «Web», а затем выберите «Каскадная таблица стилей» и нажмите кнопку «Далее».
    2. Введите style в поле «Имя файла CSS» и нажмите кнопку «Готово». Среда IDE создает пустой файл CSS и располагает его в том же местоположении проекта, что и index.jsp и response.jsp . Обратите внимание на то, что узел для style.css отображается теперь внутри проекта в окне «Проекты», а файл открывается в редакторе.
    3. В редакторе добавьте следующее содержимое к файлу style.css :
    4. Подключите таблицу стилей к index.jsp и response.jsp . На обеих страницах добавьте следующую строку между тегами : Для быстрого перехода между открытыми в редакторе файлами нажмите CTRL+TAB, а затем выберите требуемый файл.

    Подготовка средств обмена данными между приложениями и базой данных

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

    После подготовки источника данных и пула подключений для сервера необходимо определить в приложении необходимость использования источника данных. Как правило, для этого создается запись в дескрипторе развертывания приложения web.xml . Наконец, необходимо проверить доступность для сервера драйвера базы данных (JDBC MySQL Connector/J).

    Примечание. Для дальнейшей работы необходимо убедиться в том, что база данных MySQL с именем MyNewDatabase настроена корректно и содержит данные примера из ifpwafcad.sql. Этот файл SQL создает две таблицы Subject и Counselor и затем заполняет их данными для примера. Если это не было выполнено ранее, или с этим заданием возникли сложности, то прежде чем продолжить учебный курс, обратитесь к разделу Подключение к базе данных MySQL.

    Помимо этого для создания источника данных и работы с сервером GlassFish в рамках данного учебного курса необходимо защитить базу данных паролем. При использовании учетной записи MySQL root по умолчанию с пустым паролем с помощью командной строки можно установить другой пароль.

    В качестве пароля в этом учебном курсе используется nbuser . Для установки пароля nbuser в командной строке откройте в системе MySQL каталог bin и введите следующие данные:

    Дополнительные сведения приведены в официальном справочном руководстве по работе с MySQL: Защита исходных учетных записей MySQL.

    Настройка источника данных JDBC и пула подключений

    Сервер GlassFish Server Open Source Edition содержит библиотеку формирования пула подключений к базе данных (DBCP) с функцией формирования пула подключений в прозрачном для разработчика режиме. Для этого необходимо настроить для сервера источник данных JDBC (связь с базами данных Java) для использования в приложении при формировании пула подключений.

    Дополнительные сведения о технологии JDBC приведены в документе Учебные курсы Java: основы JDBC.

    Источник данных можно настроить непосредственно в консоли администратора сервера GlassFish или объявить необходимые для приложения ресурсы в файле glassfish-resources.xml , как описано ниже. При развертывании приложения сервер считывает объявления ресурсов и создает требуемые ресурсы.

    Далее рассматривается процесс объявления пула подключений и источника данных, использующего этот пул. Оба действия можно выполнить с помощью мастера ресурсов JDBC NetBeans.

    1. Откройте мастер создания файлов, нажав кнопку ‘Создать файл’ ( ) на главной панели инструментов IDE. Выберите категорию сервера GlassFish, затем выберите «Ресурс JDBC» и нажмите кнопку «Далее».
    2. В шаге 2, в области «Общие атрибуты» выберите параметр «Создать новый пул соединений JDBC», а затем в текстовом поле «Имя JNDI» введите jdbc/IFPWAFCAD.

    Источник данных JDBC использует JNDI. В интерфейсе API JNDI предоставляется единый для всех приложений способ поиска источников данных и получения доступа к ним. Дополнительные сведения приведены в Учебном курсе по JND.

  • Дополнительно можно добавить описание источника данных. Например, укажите Обеспечивает доступ к базам данных, поставляющим данные для приложения IFPWAFCAD .
  • Нажмите кнопку «Далее». После этого еще раз нажмите кнопку «Далее» и пропустите шаг 3, «Дополнительные свойства».
  • В шаге 4 укажите имя пула подключений JDBC IfpwafcadPool. Убедитесь, что выбран параметр «Извлечь из существующего соединения» и выберите jdbc:mysql://localhost:3306/MyNewDatabase из раскрывающегося списка. Нажмите кнопку «Далее».

    Примечание. Мастер обнаруживает все соединения с базой данных, настроенные в IDE. Поэтому на этот момент должно существовать созданное подключение к базе данных MyNewDatabase . Можно проверить, какие подключения были созданы, открыв окно ‘Службы’ (Ctrl-5; &#8984-5 в Mac) и выполнив поиск узлов подключения ( ) в категории ‘Базы данных’.
    На этапе 5 выберите файл javax.sql.ConnectionPoolDataSource в списке «Тип ресурса».

    Обратите внимание на то, что среда IDE извлекает информацию из подключенной базы данных, указанной на предыдущем этапе, и задает свойства «имя-значение» для нового пула подключений.

  • Нажмите кнопку «Завершить». Мастер ресурсов создает файл glassfish-resources.xml , который содержит записи для источника данных и указанный пул подключения.
  • В окне «Проекты» можно открыть glassfish-resources.xml , созданный в дереве узла «Серверные ресурсы». Обратите внимание, что в тегах источник данных и пул соединений объявлены как содержащие ранее указанные значения.

    Для подтверждения регистрации нового источника данных и пула подключения на сервере GlassFish, можно развернуть проект на сервере, затем расположить ресурсы в окне «Службы» среды IDE.

    1. В окне ‘Проекты’, щелкните правой кнопкой мыши узел проекта IFPWAFCAD и выберите ‘Развернуть’. Запустится сервер, если это не было выполнено ранее, и проект будет скомпилирован и развернут на этом сервере.
    2. Откройте окно «Службы» (CTRL+5; &#8984+5 в системе Mac OS) и разверните узлы «Серверы» > «GlassFish» > «Ресурсы» > «JDBC» > «Ресурсы и пулы подключения JDBC». Проверьте, что теперь отображаются новый источник данных и пул подключений:

    Обращение к источнику данных из приложения

    Необходимо создать ссылку на только что созданный в веб-приложении ресурс JDBC. Для этого можно создать запись в дескрипторе развертывания приложения web.xml .

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

    Примечание. Если в качестве версии Java при создании проекта указана Java EE 6 или Java EE 7, необходимо создать файл дескриптора развертывания. Для этого выберите «Веб > Стандартный дескриптор развертывания» в мастере создания файлов.

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

    1. В окне «Проекты» разверните структуру папки «Файлы конфигурации» и дважды щелкните web.xml , чтобы открыть файл в редакторе.
    2. Откройте вкладку «Ссылки» в верхней области экрана редактора.
    3. Разверните заголовок «Ссылки на ресурсы» и нажмите кнопку «Добавить», чтобы открыть диалог «Добавление ссылки на ресурс».
    4. В поле «Имя ресурса» введите имя ресурса, указанное выше при настройке источника данных для сервера ( jdbc/IFPWAFCAD ).
    5. Укажите javax.sql.ConnectionPoolDataSource в поле «Тип ресурса». Нажмите кнопку «ОК».

    Поле «Описание» является необязательным, но можно добавить удобочитаемое описание ресурса, например, База данных для приложения «IFPWAFCAD» .

    Новый ресурс теперь перечислен в списке под заголовком ‘Ссылки на ресурсы’.

  • Чтобы убедиться, что ресурс добавлен в файл web.xml , перейдите на вкладку «Исходный код» в верхней части экрана редактора. Заметим, что теперь в код включены следующие теги resource-ref >.
  • Добавление файла JAR драйвера базы данных к серверу

    Добавление файла JAR драйвера базы данных является следующим шагом, необходимым для обеспечения взаимодействия сервера с базой данных. Необходимо поместить каталог установки драйвера базы данных и скопировать файл mysql-connector-java-5.1.6.x-bin.jar из корневого каталога драйвера в папку библиотеки на используемом сервере. Управление сервером в среде IDE при развертывании может обнаружить, добавлен ли файл JAR, и если нет, выполняет это автоматически.

    Чтобы продемонстрировать это, откройте Диспетчер серверов (выберите «Сервис > Серверы»). В среде IDE предоставляется параметр «Развертывание драйвера JDBC». Если параметр включен, он запускает проверку для определения, требуются ли драйверы для развернутых на сервере приложений. В случае MySQL, если драйвер требуется, но он отсутствует, включенный драйвер среды IDE развертывается в соответствующем месте на сервере.

    1. Выберите «Сервис > Серверы», чтобы открыть Диспетчер серверов. На левой панели выберите «GlassFish».
    2. В главном окне выберите параметр «Включить развертывание драйвера JDBC».
    3. Прежде чем закрыть Диспетчер серверов, запишите путь, указанный в текстовом поле «Папка доменов». При подключении к серверу GlassFish в среде IDE фактически подключение выполняется к экземпляру сервера приложений. Каждый экземпляр запускает приложения в уникальном домене, а в поле «Имя домена» указано имя используемого сервером домена. Как видно на рисунке выше, файл JAR драйвера должен находиться в domain1 . Это домен по умолчанию, созданный при установке сервера GlassFish.
    4. Нажмите кнопку «Закрыть», чтобы выйти из Диспетчера серверов.
    5. На компьютере перейдите к каталогу установки GlassFish и войдите в подпапку domains > domain1 > lib . Поскольку проект IFPWAFCAD уже должен быть развернут на сервере, должен отображаться файл mysql-connector-java-5.1.6-bin.jar . Если файл JAR драйвера не отображается, выполните следующий шаг.
    6. Разверните проект на сервере. В окне ‘Проекты’ среды IDE выберите ‘Развернуть’ в контекстном меню узла проекта. Ход выполнения можно видеть в окне «Вывод» среды IDE (CTRL+4; &#8984+4 для Mac). В окне «Вывод» указывается, что драйвер MySQL развернут в местоположении на сервере GlassFish.

    При возврате в подпапку domain1/lib на компьютере видно, что файл mysql-connector-java-5.1.6.x-bin.jar добавлен автоматически.

    Добавление динамической логики

    Вернемся к местозаполнителям index.jsp и response.jsp , созданным выше при работе с учебным курсом. Теперь можно реализовать код JSTL для динамического (т. е. на основе пользовательского ввода) создания содержимого на страницах. Для этого выполните следующие три задания.

    Добавление библиотеки JSTL к пути к классам проекта

    Для доступа к данным из базы данных и их просмотра используйте Библиотеку стандартных тегов JavaServer Pages (JSTL). Сервер GlassFish по умолчанию содержит библиотеку JSTL. Для проверки разверните узел сервера GlassFish под узлом «Библиотеки» в окне «Проекты» и найдите библиотеку javax.servlet.jsp.jstl.jar . (В более ранних версиях сервера GlassFish используется библиотека jstl-impl.jar .) Поскольку библиотеки сервера GlassFish по умолчанию добавляются в путь классов проекта, на данном этапе никаких действий не требуется.

    JSTL имеет четыре основных раздела функциональности.

    • core : базовые, структурные задачи, такие как итерации и условные выражения для контроля потока операций
    • fmt : форматирование сообщений интернационализации и локализации
    • sql : простой доступ к базе данных
    • xml : обработка содержимого XML

    Основное внимание в данном учебном курсе уделяется библиотекам тегов core и sql .


    Реализация кода JSTL

    Теперь можно реализовать код для динамического извлечения и просмотра данных на каждой странице. Для обеих страниц требуется реализация запроса SQL с использованием источника данных, созданного выше в рамках данного учебного курса.

    В среде IDE предоставляется несколько специфичных для базы данных фрагментов JSTL, доступных для выбора в окне «Палитра» (CTRL+SHIFT+8; &#8984+SHIFT+8 для Mac).

    index.jsp

    Для динамического отображения содержимого формы на странице index.jsp необходимо получить доступ ко всем именам из таблицы базы данных «Subject»:

      Наведите курсор мыши на элемент «Отчет БД» в окне «Палитра».

    Для элемента «Отчет БД» при создании запроса SQL используется тег , после чего с помощью тега обрабатывается resultset запроса, а затем выполняется вывод извлеченных данных.

  • Установите курсор над объявлением (строка 7) и дважды щелкните элемент «Отчет БД» в окне «Палитра». В открывшемся диалоговом окне введите следующие подробные сведения:
    • Имя переменной: subjects
    • Контекст: страница
    • Источник данных: jdbc/IFPWAFCAD
    • Оператор запроса: SELECT subject_id, name FROM Subject
  • Нажмите кнопку «ОК». В файле index.jsp создается следующее содержимое. Новое содержимое выделено полужирным шрифтом. Обратите внимание на то, что в среде IDE автоматически добавлены директивы taglib , необходимые для тегов JSTL, используемых в созданном содержимом, ( и ). Директива taglib объявляет, что на странице JSP используются пользовательские теги (JSTL), указывает библиотеку тегов, которая их определяет, а также префикс тега.
  • Запустите проект, чтобы проверить его отображение в браузере. Щелкните правой кнопкой мыши узел проекта в окне «Проекты» и выберите «Выполнить».

    При выборе «Выполнить», IDE развертывает проект на сервере GlassFish, страница индексов компилируется в сервлет, а страница приветствия открывается в браузере по умолчанию. Код, созданный на основе элемента «Отчет БД», определяет следующую таблицу на странице приветствия.

    Как видно, с помощью элемента «Отчет БД» можно быстро протестировать подключение к базе данных и просмотреть табличные данные из базы данных в браузере. Это особенно рекомендуется при создании прототипов.

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

  • Проверьте данные столбцов в созданном коде. Используется два тега , причем один из них вставляется в другой. В результате контейнер JSP (сервер GlassFish) выполняет цикл по всем строкам таблицы с циклическим прохождением всех столбцов. Аналогично отображаются данные для всей таблицы.
  • Интегрируйте теги в форму HTML следующим образом. Значение каждого элемента изменяется на subject_id , а текст вывода — на name , как записано в базе данных. (Изменения выделяются полужирным шрифтом). Ниже показан более простой способ интеграции тегов в форму HTML.

    Во всех случаях теги циклически обрабатывает значения subject_id и name из запроса SQL со вставкой каждой пары в теги HTML . Таким образом раскрывающийся список формы заполняется данными.

  • Удалите таблицу, созданную из элемента «Отчет БД». (Удаление показано ниже перечеркнутым текстом.)
  • Сохраните изменения (CTRK+S; &#8984+S в Mac OS).
  • Обновите страницу приветствия проекта в браузере.

    Заметим, что раскрывающийся список в браузере теперь содержит названия тем, полученные из базы данных.

    Повторно развертывать проект не нужно, так как функция «Компилировать при сохранении» (compile-on-save) включена для вашего проекта по умолчанию. Это означает, что при изменении и сохранении файла он автоматически компилируется и развёртывается, и нет необходимости перекомпилировать весь проект. Функцию компиляции при сохранении можно отключать в категории «Компиляция» в окне проекта «Свойства».

    response.jsp

    На странице ответов предоставляются подробные сведения о консультанте по теме, выбранной на странице приветствия. Созданный запрос должен содержать запись консультанта, идентификатор которого counselor_id соответствует значению counselor_idfk из выбранной записи темы.

    1. Наведите указатель мыши на объявление (строка 7) и дважды щелкните «Запрос к БД» в палитре, чтобы открыть диалоговое окно «Вставить запрос к БД».
    2. В диалоговом окне «Вставить запрос к БД» введите следующие данные.
      • Имя переменной: counselorQuery
      • Контекст: страница
      • Источник данных: jdbc/IFPWAFCAD
      • Оператор запроса: SELECT * FROM Subject, Counselor WHERE Counselor.counselor_ />
    3. Нажмите кнопку «ОК». В файле response.jsp создается следующее содержимое. Новое содержимое выделено полужирным шрифтом. Обратите внимание на то, что в среде IDE автоматически добавлена директива taglib для тега . Также отметьте, что непосредственно в запросе использовался тег . Поскольку для этого запроса используется значение subject_id , отправленное с index.jsp , извлечь это значение можно с помощью оператора EL (язык выражений) в форме $ , а затем передать его для тега . В этом случае его можно использовать вместо вопросительного знака SQL ( ? ) во время выполнения.
    4. Используйте тег для установки переменной, соответствующей первой записи (строке) resultset , возвращенного из запроса. Новое содержимое выделено полужирным шрифтом. Несмотря на то, что возвращенный из запроса resultset должен содержать только одну запись, этот шаг является обязательным, поскольку для страницы необходимо обеспечить доступ к значениям в записи с помощью операторов EL (язык выражений). Вспомните, что на странице index.jsp можно было получить доступ к значениям из resultset просто посредством тега . Однако тег функционирует путем настройки переменной для строк из запроса, что позволяет извлекать значения путем включения переменной строки в операторы EL.
    5. Добавьте директиву taglib для базовой библиотеки JSTL файла. Это обеспечит распознавание тега . Новое содержимое выделено полужирным шрифтом.
    6. В разметке HTML замените все местозаполнители кодом операторов EL с отображением данных из переменной counselorDetails . (Изменения выделены ниже полужирным шрифтом):

    Запуск готового приложения

    Процесс создания приложения завершен. Попробуйте снова запустить его для просмотра результата в браузере. Обратите внимание на то, что благодаря функции NetBeans «Компиляция при сохранении» специально выполнять компиляцию или повторное развертывание приложения не требуется. При выполнении проекта развертывание гарантированно содержит самые последние изменения.

    Нажмите кнопку ‘Запустить проект’ ( ) на главной панели инструментов. В браузере по умолчанию среды IDE открывается страница index.jsp. .

    Когда в браузере отображена страница index.jsp , выберите тему из раскрывающегося списка и нажмите кнопку submit . Выполняется переадресация на страницу response.jsp , отображающую подробные сведения в соответствии с выбором.

    Это заключительный раздел учебного курса «Создание простого веб-приложения, использующего базу данных MySQL» В этом документе описана процедура создания простого веб-приложения с подключением к базе данных MySQL. Здесь также рассматривается процесс создания приложения с помощью базовой двухуровневой архитектуры при использовании технологий JSTL и JSP для доступа к данным с динамическим просмотром.

    Устранение проблем

    Большинство проблем в приложении из учебного курса возникают по причине сложностей процесса обмена данными между сервером GlassFish Server Open Source Edition и сервером базы данных MySQL. В случае некорректного отображения приложения или генерации ошибки сервера рекомендуется выполнить следующие проверки.

    Существуют ли ресурсы базы данных?

    В среде IDE в окне «Службы» (CTRL+5; &#8984+5 для Mac) проверьте функционирование сервера MySQL, а также доступность MyNewDatabase и наличие в ней соответствующих табличных данных.

    • Для подключения к серверу баз данных MySQL щелкните правой кнопкой мыши узел сервера MySQL и выберите ‘Подключение’.
    • Если узел подключения ( ) для MyNewDatabase не отображается в окне ‘Службы’ можно создать подключение, щелкнув правой кнопкой мыши узел драйвера MySQL ( ) и выбрав ‘Подключение с помощью’. В появившемся диалоговом окне укажите требуемые подробные сведения.

    Поля в диалоговом окне «Новое подключение к базе данных» зеркально отражают строку URL в параметре «Показать URL JDBC». Таким образом, если известен URL (например, jdbc:mysql://localhost:3306/MyNewDatabase ), можно вставить его в поле «Показать URL JDBC». При этом остальные поля заполняются автоматически.

  • Чтобы убедиться, что таблицы Subject и Counselor существуют и содержат образцы данных, разверните узел подключения MyNewDatabase ( ) и найдите узел каталога MyNewDatabase ( ). Для просмотра существующих таблиц разверните узел каталога. Табличные данные можно просмотреть, щелкнув правой кнопкой мыши узел таблицы и выбрав ‘Просмотреть данные’.
  • Существуют ли на сервере пул подключений и источник данных?

    После развертывания приложения на сервере GlassFish файл проекта glassfish-resources.xml должен содержать инструкции для сервера по созданию ресурсов и пула подключения JDBC. Их наличие можно проверить в узле «Серверы» в окне «Службы».

    • Разверните узел «Серверы» > «Сервер GlassFish» > «Ресурсы». Разверните узел «JDBC Resources» (Ресурсы JDBC), чтобы увидеть источник данных jdbc/IFPWAFCAD , созданный из файла glassfish-resources.xml . Разверните узел «Пул подключения», чтобы увидеть пул подключения IfpwafcadPool , созданный из файла glassfish-resources.xml . Подробное описание приведено выше.

    Доступен ли MySQL Connector/драйвер J для сервера GlassFish?

    Проверьте, что на сервере GlassFish выполнено развертывание драйвера MySQL Connector/J. Соответствующее описание приведено в разделе Добавление файла JAR драйвера базы данных на сервер.

    • Найдите на компьютере папку установки сервера GlassFish и откройте подпапку GlassFish domains/domain1/lib . В ней должен находиться файл mysql-connector-java-5.1.6-bin.jar .

    Защищена ли база данных паролем?

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

    • Для установки пароля nbuser в командной строке откройте в системе MySQL каталог bin и введите следующие данные: Дополнительные сведения приведены в официальном справочном руководстве по работе с MySQL: Защита исходных учетных записей MySQL.

    Корректно ли установлены значения свойств пула подключений?

    Проверьте правильность работы пула подключений для сервера.

    1. Откройте окно «Службы» (CTRL+5; &#8984+5 для Mac) и разверните узел «Серверы.
    2. В контекстном меню узла «Сервер GlassFish» выберите «Просмотр консоли администратора».
    3. При отображении соответствующего запроса введите имя пользователя и пароль. Имя пользователя и пароль можно посмотреть в Диспетчере серверов.
    4. В дереве в левой части консоли разверните узел «Ресурсы > JDBC > Пулы подключений > IfpwafcadPool «. В главном окне отображаются подробные сведения о пуле подключений IfpwafcadPool .
    5. Нажмите кнопку «Ping». Если пул подключений настроен правильно, отображается сообщение Ping Succeeded .
    6. Если выполнение ping-тестирования завершается неуспешно, откройте вкладку «Дополнительные свойства» для проверки правильности настройки указанных значений свойств.

    Дополнительные сведения

    Дополнительные сведения о развертывании веб-приложений Java приведены в следующих материалах.

    • Статьи и руководства по NetBeans
      • Соединение с базой данных MySQL в IDE NetBeans. Описывает основы работы с базой данных MySQL в среде IDE.
      • Введение в JavaServer Faces 2.x. Вводный учебный курс по работе с архитектурой JSF в веб-проекте Java.
      • Введение в инфраструктуру Spring В рамках вводного учебного курса рассматривается процедура создания веб-приложения MVC с использованием инфраструктуры Spring.
    • Связь с базами данных Java (JDBC)
      • Обзор JDBC
      • Начало работы с API JDBC
      • Учебные курсы Java: основы JDBC
    • Библиотека стандартных тегов JavaServer Pages (JSTL)
      • Библиотека стандартных тегов JavaServer Pages (официальная страница продукта)
    • Имена Java и интерфейс каталогов (JNDI)
      • Базовые технологии Java SE — Имена Java и интерфейс каталогов
      • Учебный курс по JNDI
      • Учебные курсы Java: Имена Java и интерфейс каталогов

    Web браузер как средство доступа к БД

    В работе рассматриваются некоторые аспекты построения клиентского приложения на базе WEB броузера. Необходимо отметить, что информационная система, в основе построения которой лежат Web-технологии, в определенных ситуациях может не только сохранить возможности классического приложения, т.е. приложения разработанного в рамках клиент-серверной технологии, но зачастую и расширить их. Кроме того, применение Web-технологий в этом классе задач имеет и свои преимущества. К наиболее важным из них, можно отнести отсутствие необходимости в установке и сопровождении клиентских приложений, а также затрат на покупку лицензий для программного обеспечения, которое бы осуществляло поддержку работы front-end приложений, что неизменно присутствует в клиент-серверной технологии.

    С другой стороны, размытость стандартов в области WEB-технологий и некоторая «сыроватость» используемого здесь программного обеспечения являлись, до последнего времени, фактором сдерживающим их распространение. Тем не менее, в настоящий момент можно уже говорить не столько о возможности распространения WEB-технологий, сколько об успешности распространения таких технологий на задачи, решаемые, например, в корпоративных сетях.

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

    Мастер Йода рекомендует:  Виртуальная реальность и все такое
    Добавить комментарий