2. Использование 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
