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]