JAXB, отображение Java класса, отображаемого на XML.

JAXB, отображение Java класса, отображаемого на XML.

JAXB (Java API for XML Binding) – позволяет сохранять поля класса в виде xml-файла (аналог сериализации).

При описании класса употребляются ключевики: @XmlElement() (будет сохранен как элемент), @XmlAttribute() (будет сохранен как атрибут).

import java.io.FileWriter;

import java.util.*;

import javax.xml.bind.*;

public class Java2XML {

public Java2XML() {

}

public static JAXB, отображение Java класса, отображаемого на XML. void main(String args[]) throws Exception{

JAXBContext context = JAXBContext.newInstance(Person.class);

Marshaller marshaller = context.createMarshaller();

marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true);

Person person = new Person(

"Anonymous", 32, new Date(1970, 1, 10), "employee");

marshaller.marshal(person, new FileWriter(".\\src\\Person.xml"));

}

}

В конечном итоге получим xml-файл последующего вида

32

1970-01-10 T00:00:00+05:30

Anonymous


25. Создание JAXB JAXB, отображение Java класса, отображаемого на XML. контекста, маршалинг и демаршалинг.

JAXB предлагает резвый и удачный метод сотворения обоестороннего преобразования меж XML документами и классами языка Java. Задавая DTD, компилятор JAXB делает набор классов Java, содержащий весь код, который нужен для анализа XML документов, основанных на данной схеме. Разработчик, использующий сделанные классы, может строить дерево JAXB, отображение Java класса, отображаемого на XML. объектов Java, изображающих XML документ, обрабатывать содержимое этого дерева и поновой создавать XML документы из него.

Класс javax.xml.bind.JAXBContext - "точка входа" в JAXB API

Демаршаллизация: Процесс преобразования XML-данных в Java-класс (либо классы).

Маршаллизация: Процесс преобразования Java-данных в XML-документ (в противоположность демаршаллизации).

Обычной пример JAXB: rules.xml



test1


test JAXB, отображение Java класса, отображаемого на XML.2


test3


Rule.java

public class Rule {
private String name;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}

Rules.java

import javax.xml.bind.annotation.XmlRootElement;
import javax.xml.bind.annotation.XmlElement;
import java.util.List;

@XmlRootElement
public class Rules {
@XmlElement(name = "rule")
List rules;
}


Демаршализация JAXB, отображение Java класса, отображаемого на XML.:

JAXBContext jaxbContext = JAXBContext.newInstance(new Class[] {Rules.class});
Unmarshaller unmarshaller = jaxbContext.createUnmarshaller();

Rules rules = (Rules) unmarshaller.unmarshal(new File("rules.xml"));

Маршализация:

// marshal to System.out Marshaller m = jaxbContext.createMarshaller();

m.marshal( rules, System.out );


26. Сервлеты, создание, актуальный цикл

Сервлет является Java-программой, выполняющейся на стороне сервера и расширяющей многофункциональные способности сервера JAXB, отображение Java класса, отображаемого на XML.. Сервлет ведет взаимодействие с клиентами средством принципа запрос-ответ.

Пакеты javax.servlet и javax.servlet.http обеспечивают интерфейсы и классы для сотворения сервлетов.

The service() method посылает запросы к последующим способам doGet(), doPost(), doPut(), doDelete(), etc., в согласовании с HTTP запросами.

import java.io.IOException;

import java.io.PrintWriter JAXB, отображение Java класса, отображаемого на XML.;

import javax.servlet.ServletException;

import javax.servlet.http.HttpServlet;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

import javax.servlet.http.HttpSession;

public class NewServlet extends HttpServlet {

@Override

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

// Параметр

String parameter = request.getParameter("parameter");

// Старт HTTP JAXB, отображение Java класса, отображаемого на XML. сессии

if (request.getSession() == null) {

HttpSession session = request.getSession(true);

session.setAttribute("parameter", parameter);

}

response.setContentType("text/html;charset=UTF-8");

PrintWriter out = response.getWriter();

try {

out.println("");

out.println("");

out.println("Заголовок");

out.println("");

out.println("");

out.println("Пример сервлета"+parameter+"");

out.println("");

out.println("");

} finally {

out.close();

}

}

@Override

public String JAXB, отображение Java класса, отображаемого на XML. getServletInfo() {

return "Пример сервлета";

}

}

Актуальный цикл Сервлета

1. В случае отсутствия сервлета в контейнере.

a. Класс сервлета загружается контейнером.

b. Контейнер делает экземпляр класса сервлета.

c. Контейнер вызывает способ init(). Этот способ инициализирует сервлет и вызывается сначала, до того, как сервлет сумеет обслуживать запросы. За весь актуальный цикл способ init() вызывается только JAXB, отображение Java класса, отображаемого на XML. в один прекрасный момент.

2. Сервис клиентского запроса. Каждый запрос обрабатывается в собственном отдельном потоке. Контейнер вызывает способ service() для каждого запроса. Этот способ определяет тип пришедшего запроса и распределяет его в соответственный этому типу способ для обработки запроса. Разработчик сервлета должен предоставить реализацию для этих способов. Если поступил запрос, способ для JAXB, отображение Java класса, отображаемого на XML. которого не реализован, вызывается способ родительского класса и обычно заканчивается возвращением ошибки зачинателю запроса.

3. В случае если контейнеру нужно удалить сервлет, он вызывает способ destroy(), который снимает сервлет из эксплуатации. Подобно способу init(), этот способ тоже вызывается единожды за весь цикл сервлета.



j-dan-shodan-titul-sempaj.html
j-den-odinnadcatoj-luni.html
j-etap-analiz-i-ocenka-vliyaniya-vnutrennej-i-vneshnej-sred.html