Программирование Web-сервиса. 1. Запустить визуальную среду Eclipse Europe

1. Запустить визуальную среду Eclipse Europe

Пуск | Программы | Eclipse

2. Создать новый Web-проект:

File → New → Project

Выбр. Web → Dynamic Web Project → кн. OK при запросе разрешения возможности Web Development

Ввести soap_server в качестве названия проекта

3. Создать Java-класс, работающий на сервере как Web-служба:

Ф. Package Explorer | развернуть soap_server | пр. кн. мыши на Java Resources → New → Class

Ввести University в качестве имени файла | кн. Finish → откроется окно для ввода кода с уже введенными строками

public class University {

}

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

import java. sql.*;

import java. io.*;

import java. util.*;

5. Создать функцию установки соединения с базой данных University

5.1 Ввести название функции con

public Connection con()

{

}

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

5.2 Создать пустой объект соединения (Connection)

Connection conn = null;

5.3 Создать экземпляр класса драйвера взаимодействия с СУБД MySQL

try {

Class. forName("com. mysql. jdbc. Driver").newInstance();

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

String connectionURL = "jdbc:mysql:/виртуальный путь к базе данных?user=пользователь;password=пароль";

5.5 Создать пустой объект запроса (Statement):

Statement statement = null;

5.6 Установить соединение с базой данных MySQL:

conn = DriverManager. getConnection(connectionURL, "root", "");

5.7 Создать и настроить объект запроса:

statement = conn. createStatement();

conn. setReadOnly(true);

}

catch (Exception e) {

System. out. println(e. getMessage());

}

5.8 Указать в качестве возвращаемого функцией значения объект соединения:

return conn;

}

6. Создать функцию faculties, формирующую строку XML-набора данных о факультетах, полученных по запросу к базе данных

6.1 Задать имя функции:

public String faculties(){

}

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

6.2 Создать строковую переменную res и занести в нее открывающий тег корневого элемента faculties:

String res = "<faculties>";

6.3 Создать объект соединения с помощью функции con():

try {

Connection conn = con();

6.4 . Выполнить запрос к таблице Faculty (Факультет) для получения данных о факультетах из базы данных. Для этого ввести в сценарий PHP следующий код:

ResultSet rs =

conn. createStatement().executeQuery("SELECT * FROM faculty");

6.5 Для каждой строки результата запроса сформировать XML-элемент faculty с атрибутами ID и name:

while (rs. next())

{

res = res + "<faculty ID='"+rs. getString("id")+"' name='"+rs. getString("name")+"'/>";

}

}

catch (Exception e) {

System. out. println(e. getMessage());

}

6.6 Дополнить полученное содержимое переменной res закрывающим тегом элемента faculties:

res = res + "</faculties>";

6.7 В качестве возвращаемого функцией значения указать переменную res

return res;

}

7. Аналогичным образом создать функции specialities, groups (без входных параметров) и uspev (с входным параметров gr – группа), возвращающие соответственно XML-наборы данных о специальностях, группах и успеваемости студентов.

8. Создать Java Web-службу UniversityService:

пр. кн. мыши на University. class → New → Other

ф. New Wizard → разв. Web Services → выбр. Web Service → кн. Next

выбр. Тип Web-службы ← Java Bean Web → кн. OK

9. Просмотреть сгенерированное WSDL-описание созданной Web-службы UniversityService. wsdl.

Использование Web-сервиса

1. Создать Web-проект для клиентского приложения.

File → New → Web → Dynamic Web Project

name → Lab4_JSP

2. Добавить в проект новую JSP-страницу

ф. Project Explorer | Lab4_JSP | кл. пр. кн. мыши → выбр. New → JSP |

ф. New JavaServer Page | File name ← Default | удалить весь код элемента HTML

3. Скопировать в полученный файл весь код из файла Index. jsp из первой лабораторной работы.

4. Скопировать WSDL-файл из soap_server в папку Lab4_JSP / WebContent

5. Сгенерировать клиента Web-службы из скопированного WSDL-файла.

пр. кн. мыши на UniversityService. wsdl → New → Other

ф. New Wizard | разв. Web Services | выбр. Web Service Client → кн. Next → кн. OK

в появившемся окне уст. флажок Java proxy → кн. Finish.

Будет создан Java-прокси, который является Java-классом, способным вызывать Web-службу.

6. Открыть код файла Index. jsp

7. Подключить библиотеки для работы с базами данных и обработки XML-данных:

<%@page import="java. sql.*"%>

<%@page import="java. io.*"%>

<%@page import="java. util.*"%>

<%@ page import="javax. xml. parsers. DocumentBuilderFactory"%>

<%@ page import="javax. xml. parsers. DocumentBuilder"%>

<%@ page import="org. w3c. dom.*"%>

<%@ page import="javax. xml. parsers.*"%>

<%@ page import="javax. xml. transform.*"%>

<%@ page import="javax. xml. transform. dom.*"%>

<%@ page import="javax. xml. transform. stream.*"%>

8. Импортировать Java-прокси (UniversityProxy в папке uni), созданный для взаимодействия с Web-службой:

<%@page import="uni. UniversityProxy"%>

9. Создать экземпляр класса UniversityProxy для получения доступа к методам Web-службы:

UniversityProxy proxy = new UniversityProxy();

10. Создать экземпляр класса DocumentBuilderFactory:

DocumentBuilderFactory dbf = DocumentBuilderFactory. newInstance();

11. На основе класса DocumentBuilderFactory создать новый DOM-парсер:

DocumentBuilder db = dbf. newDocumentBuilder();

12. Создать экземпляр класса Reader и загрузить в него результат выполнения Web-метода faculties, преобразованный в массив данных:

Reader reader=new CharArrayReader(proxy. faculties().toCharArray());

13. Создать экземпляр класса Document – новый DOM-объект – и загрузить в него данные из Reader:

Document faculty = db. parse(new org. xml. sax. InputSource(reader));

14. Создать XML-элемент, соответствующий корневому элементу DOM-объекта faculty со всеми его дочерними элементами:

Element fac = faculty. getDocumentElement();

15. Аналогичным образом создать DOM-объекты, соответствующие данным о специальностях и группах, и создать XML-элементы, соответствующие их корневым элементам.

16. Заполнить раскрывающийся список факультетов данными из XML-элемента fac:

16.1 Задать цикл по дочерним элементам XML-элемента fac:

<%

NodeList childNodes = fac. getChildNodes();

if (childNodes!= null)

{

for (int x=0; x<childNodes. getLength(); x++)

{

16.2 В строковые переменные id и name занести значения одноименных XML-атрибутов:

NamedNodeMap facs = childNodes. item(x) .getAttributes();

String id = facs. item(0).getNodeValue();

String name = facs. item(1).getNodeValue();

%>

16.3 Определить значение переменной id как значение элемента раскрывающегося списка:

<option value="

<%

out. println(id);

%>

">

16.4 Определить значение переменной name как отображаемый текст элемента раскрывающегося списка:

<%

out. println(name);

%>

</option>

<%

}

}

%>

17. Аналогичным образом заполнить раскрывающиеся списки специальностей и групп.

18. Скопировать в проект файл Browse. jsp из первой лабораторной работы. Настроить файл на использование Web-службы soap_server и ее метода uspev для заполнения таблицы об успеваемости студентов выбранной группы (по аналогии с предыдущими пунктами).

19. Проверить работоспособность созданного Web-приложения. Для этого в окне визуальной среды Eclipse выбрать пункт меню

Project → Run as… → Run on Server

Контрольные вопросы

1. Что такое веб-сервис?

2. Из чего состоит веб-сервис?

3. Для чего используются SOAP-сообщения?

4. Что такое UDDI?

5. Как описать свойства и методы веб-сервиса?

Содержание и оформление отчета

Отчет должен содержать:

– титульный лист, название и цель работы;

– листинг программного кода;

– скриншоты результатов работы Web-приложения с различными вариантами запросов;

– выводы по работе.

Источник: http://pandia.ru/text/78/546/88379.php дата доступа [14.03.2016]

Наши рекомендации