Π Π°Π·Π½ΠΎΠ΅

Xml java web: Java EE | web.xml ΠΈ ΠΌΠ°ΠΏΠΏΠΈΠ½Π³ сСрвлСтов

Π‘ΠΎΠ΄Π΅Ρ€ΠΆΠ°Π½ΠΈΠ΅

Настройка ΠΈ описаниС web.xml Π² ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ с Spring ΠΈ JSF

Java Π²Π΅Π±-прилоТСния ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ Ρ„Π°ΠΉΠ» дСскриптора развСртывания для опрСдСлСния ΠΊΠ°ΠΊΠΈΠ΅ URL Π±ΡƒΠ΄ΡƒΡ‚ ΠΏΠ΅Ρ€Π΅Π΄Π°Π²Π°Ρ‚ΡŒΡΡ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠΌΡƒ сСрвлСту, ΠΊΠ°ΠΊΠΈΠ΅ URL Ρ‚Ρ€Π΅Π±ΡƒΡŽΡ‚ Π°ΡƒΡ‚Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ ΠΈ Π΄Ρ€. Π­Ρ‚ΠΎΡ‚ дСскриптор развСртывания называСтся web.xml ΠΈ находится Π² WAR прилоТСния Π² Β WEB-INF/ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΠΈ. Web.xml – Ρ‡Π°ΡΡ‚ΡŒ стандарта сСрвлСта для Π²Π΅Π±-ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ.

О дСскрипторС развСртывания

ДСскриптор развСртывания Π²Π΅Π±-ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ описываСт классы, рСсурсы ΠΈ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΡŽ прилоТСния, Π° Ρ‚Π°ΠΊ ΠΆΠ΅ ΠΊΠ°ΠΊ сСрвСр Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΈΡ… для выполнСния Π²Π΅Π±-запросов. Когда сСрвСр ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚ запрос для прилоТСния, ΠΎΠ½ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ дСскриптор развСртывания для отобраТСния URL запроса ΠΊ ΠΊΠΎΠ΄Ρƒ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π΄ΠΎΠ»ΠΆΠ΅Π½ этот запрос ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ.

Π’ΠΎΡ‚ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ простого web.xml ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°ΡŽΡ‰Π΅Π³ΠΎ всС ΠΏΡƒΡ‚ΠΈ URL (Ρ‚.Π΅. /*) ΠΊ классу сСрвлСта mysite.server.ComingSoonServlet:

<web-app xmlns=»http://java.sun.com/xml/ns/javaee» version=»2. 5″>
<servlet>
<servlet-name>comingsoon</servlet-name>
<servlet-class>mysite.server.ComingSoonServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>comingsoon</servlet-name>
<url-pattern>/*</url-pattern>
</servlet-mapping>
</web-app>

<web-app xmlns=»http://java.sun.com/xml/ns/javaee» version=»2.5″>

Β Β Β Β <servlet>

Β Β Β Β Β Β Β Β <servlet-name>comingsoon</servlet-name>

Β Β Β Β Β Β Β Β <servlet-class>mysite.server.ComingSoonServlet</servlet-class>

Β Β Β Β </servlet>

Β Β Β Β <servlet-mapping>

Β Β Β Β Β Β Β Β <servlet-name>comingsoon</servlet-name>

Β Β Β Β Β Β Β Β <url-pattern>/*</url-pattern>

Β Β Β Β </servlet-mapping>

</web-app>

Π‘Π΅Ρ€Π²Π»Π΅Ρ‚Ρ‹ ΠΈ ΠΏΡƒΡ‚ΠΈ URL

web. xml опрСдСляСт соотвСтствиС мСТду путями URL ΠΈ сСрвлСтами, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ эти URL Π±ΡƒΠ΄ΡƒΡ‚ ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Ρ‚ΡŒ. Π’Π΅Π±-сСрвСр ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ эту ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΡŽ, Ρ‡Ρ‚ΠΎΠ± ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ сСрвлСт для ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Π΄Π°Π½Π½ΠΎΠ³ΠΎ запроса ΠΈ Π²Ρ‹Π·Π²Π°Ρ‚ΡŒ ΠΌΠ΅Ρ‚ΠΎΠ΄ класса, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ соотвСтствуСт ΠΌΠ΅Ρ‚ΠΎΠ΄Ρƒ запроса (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΠΌΠ΅Ρ‚ΠΎΠ΄ doGet() для HTTP.GET запросов).

Для привязки (β€œΠΌΠ°ΠΏΠΏΠΈΠ½Π³β€)Β URL ΠΊ сСрвлСту, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ элСмСнты Β <servlet> ΠΈ <servlet-mapping>.

<servlet>
<servlet-name>redteam</servlet-name>
<servlet-class>mysite.server.TeamServlet</servlet-class>
<init-param>
<param-name>teamColor</param-name>
<param-value>red</param-value>
</init-param>
<init-param>
<param-name>bgColor</param-name>
<param-value>#CC0000</param-value>
</init-param>
</servlet>

<servlet>
<servlet-name>blueteam</servlet-name>
<servlet-class>mysite. server.TeamServlet</servlet-class>
<init-param>
<param-name>teamColor</param-name>
<param-value>blue</param-value>
</init-param>
<init-param>
<param-name>bgColor</param-name>
<param-value>#0000CC</param-value>
</init-param>
</servlet>

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

Β Β Β Β <servlet>

Β Β Β Β Β Β Β Β <servlet-name>redteam</servlet-name>

Β Β Β Β Β Β Β Β <servlet-class>mysite.server.TeamServlet</servlet-class>

Β Β Β Β Β Β Β Β <init-param>

Β Β Β Β Β Β Β Β Β Β Β Β <param-name>teamColor</param-name>

Β Β Β Β Β Β Β Β Β Β Β Β <param-value>red</param-value>

Β Β Β Β Β Β Β Β </init-param>

Β Β Β Β Β Β Β Β <init-param>

Β Β Β Β Β Β Β Β Β Β Β Β <param-name>bgColor</param-name>

Β Β Β Β Β Β Β Β Β Β Β Β <param-value>#CC0000</param-value>

Β Β Β Β Β Β Β Β </init-param>

Β Β Β Β </servlet>

Β 

Β Β Β Β <servlet>

Β Β Β Β Β Β Β Β <servlet-name>blueteam</servlet-name>

Β Β Β Β Β Β Β Β <servlet-class>mysite. server.TeamServlet</servlet-class>

Β Β Β Β Β Β Β Β <init-param>

Β Β Β Β Β Β Β Β Β Β Β Β <param-name>teamColor</param-name>

Β Β Β Β Β Β Β Β Β Β Β Β <param-value>blue</param-value>

Β Β Β Β Β Β Β Β </init-param>

Β Β Β Β Β Β Β Β <init-param>

Β Β Β Β Β Β Β Β Β Β Β Β <param-name>bgColor</param-name>

Β Β Β Β Β Β Β Β Β Β Β Β <param-value>#0000CC</param-value>

Β Β Β Β Β Β Β Β </init-param>

Β Β Β Β </servlet>

Π­Π»Π΅ΠΌΠ΅Π½Ρ‚ <servlet-mapping> опрСдСляСт шаблон URL ΠΈ имя сСрвлСта, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Ρ‚ΡŒ запросы, ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ ΡˆΠ°Π±Π»ΠΎΠ½Ρƒ. Π¨Π°Π±Π»ΠΎΠ½ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ ΠΏΠΎΠ»Π½Ρ‹ΠΉ ΠΏΡƒΡ‚ΡŒ URL, Π²ΠΊΠ»ΡŽΡ‡Π°Ρ (/), ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ Π·Π°Β ΠΈΠΌΠ΅Π½Π΅ΠΌΒ Π΄ΠΎΠΌΠ΅Π½Π°.

<servlet-mapping>
<servlet-name>redteam</servlet-name>
<url-pattern>/red/*</url-pattern>
</servlet-mapping>

<servlet-mapping>
<servlet-name>blueteam</servlet-name>
<url-pattern>/blue/*</url-pattern>
</servlet-mapping>

<servlet-mapping>

Β Β Β Β Β Β Β Β <servlet-name

ΠžΡΠ½ΠΎΠ²Ρ‹ XML для Java программиста

XML — ΠΎΡ‡Π΅Π½ΡŒ популярный ΠΈ Π³ΠΈΠ±ΠΊΠΈΠΉ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ Π² нашС врСмя. ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ программист Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΏΠΎΠ½ΠΈΠΌΠ°Ρ‚ΡŒ Π΅Π³ΠΎ, это просто must have. МногиС Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΈ завязаны сСгодня Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎ Π΅Π³ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚, ΠΏΡ€ΠΈ Ρ‡Π΅ΠΌ соврСмСнныС Π² ΠΈΡ… числС.

ВступлСниС

ЗдравствуйтС, Π΄ΠΎΡ€ΠΎΠ³ΠΈΠ΅ Ρ‡ΠΈΡ‚Π°Ρ‚Π΅Π»ΠΈ ΠΌΠΎΠ΅ΠΉ ΡΡ‚Π°Ρ‚ΡŒΠΈ. Π‘Ρ€Π°Π·Ρƒ Ρ…ΠΎΡ‡Ρƒ ΡΠΊΠ°Π·Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ это Ρ‚ΠΎΠ»ΡŒΠΊΠΎ пСрвая ΡΡ‚Π°Ρ‚ΡŒΡ Π² ΠΌΠΎΡ‘ΠΌ Ρ†ΠΈΠΊΠ»Π΅ ΠΈΠ· Ρ‚Ρ€Ρ‘Ρ… статСй. Основная Ρ†Π΅Π»ΡŒ всСго Ρ†ΠΈΠΊΠ»Π° – ΠΏΠΎΡΠ²ΡΡ‚ΠΈΡ‚ΡŒ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ читатСля Π² XML ΠΈ Π΄Π°Ρ‚ΡŒ, Ссли Π½Π΅ ΠΏΠΎΠ»Π½ΠΎΠ΅ Ρ€Π°Π·ΡŠΡΡΠ½Π΅Π½ΠΈΠ΅ ΠΈ ΠΏΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‚ΠΎ, хотя Π±Ρ‹, Ρ…ΠΎΡ€ΠΎΡˆΠΈΠΉ Ρ‚Π°ΠΊΠΎΠΉ Ρ‚ΠΎΠ»Ρ‡ΠΎΠΊ ΠΊ Π½Π΅ΠΌΡƒ, объяснив основныС ΠΌΠΎΠΌΠ΅Π½Ρ‚Ρ‹ ΠΈ Π²Π΅Ρ‰ΠΈ. Π’Π΅ΡΡŒ Ρ†ΠΈΠΊΠ» Π±ΡƒΠ΄Π΅Ρ‚ для ΠΎΠ΄Π½ΠΎΠΉ Π½ΠΎΠΌΠΈΠ½Π°Ρ†ΠΈΠΈ – Β«Π’Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ ΠΊ дСталям», Π° Ρ€Π°Π·Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Π½Π° 3 ΡΡ‚Π°Ρ‚ΡŒΠΈ сдСлано для Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π²ΠΌΠ΅Ρ‰Π°Ρ‚ΡŒΡΡ Π² Π»ΠΈΠΌΠΈΡ‚ символов Π² постах ΠΈ Ρ€Π°Π·Π΄Π΅Π»ΠΈΡ‚ΡŒ большоС количСство ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»Π° Π½Π° Π±ΠΎΠ»Π΅Π΅ малСнькиС ΠΏΠΎΡ€Ρ†ΠΈΠΈ для большСго понимания.

ΠŸΠ΅Ρ€Π²Π°Ρ ΡΡ‚Π°Ρ‚ΡŒΡ Π±ΡƒΠ΄Π΅Ρ‚ посвящСна самому XML ΠΈ Ρ‡Ρ‚ΠΎ это Ρ‚Π°ΠΊΠΎΠ΅, Π° Ρ‚Π°ΠΊ ΠΆΠ΅ ΠΎΠ΄Π½ΠΎΠΌΡƒ ΠΈΠ· способов составлСния схСмы для XML Ρ„Π°ΠΉΠ»ΠΎΠ² – DTD.

Для Π½Π°Ρ‡Π°Π»Π°, Ρ…ΠΎΡ‚Π΅Π»ΠΎΡΡŒ Π±Ρ‹ Π²Ρ‹ΡΠΊΠ°Π·Π°Ρ‚ΡŒ нСбольшоС прСдисловиС для Ρ‚Π΅Ρ…, ΠΊΡ‚ΠΎ Π²ΠΎΠΎΠ±Ρ‰Π΅ Π΅Ρ‰Π΅ Π½Π΅ Π·Π½Π°ΠΊΠΎΠΌ с XML: Π½Π΅ Π½ΡƒΠΆΠ½ΠΎ ΠΏΡƒΠ³Π°Ρ‚ΡŒΡΡ. XML Π½Π΅ ΠΎΡ‡Π΅Π½ΡŒ слоТный ΠΈ с Π½ΠΈΠΌ Π½ΡƒΠΆΠ½ΠΎ Ρ€Π°Π·ΠΎΠ±Ρ€Π°Ρ‚ΡŒΡΡ Π»ΡŽΠ±ΠΎΠΌΡƒ программисту, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ это ΠΎΡ‡Π΅Π½ΡŒ Π³ΠΈΠ±ΠΊΠΈΠΉ, эффСктивный ΠΈ популярный Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ Ρ„Π°ΠΉΠ»ΠΎΠ² Π½Π° сСгодняшний дСнь для хранСния Ρ€Π°Π·Π½ΠΎΠΎΠ±Ρ€Π°Π·Π½ΠΎΠΉ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ, ΠΊΠ°ΠΊΠΎΠΉ Π²Ρ‹ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π·Π°Ρ…ΠΎΡ‚ΠΈΡ‚Π΅. XML ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π² Ant, Maven, Spring. Π›ΡŽΠ±ΠΎΠΌΡƒ программисту Π½ΡƒΠΆΠ½ΠΎ Π·Π½Π°Π½ΠΈΠ΅ XML.

Π’Π΅ΠΏΠ΅Ρ€ΡŒ, ΠΊΠΎΠ³Π΄Π° Π²Ρ‹ ΡΠΎΠ±Ρ€Π°Π»ΠΈΡΡŒ силами ΠΈ ΠΌΠΎΡ‚ΠΈΠ²Π°Ρ†ΠΈΠ΅ΠΉ, Π΄Π°Π²Π°ΠΉΡ‚Π΅ ΠΏΡ€ΠΈΡΡ‚ΡƒΠΏΠ°Ρ‚ΡŒ ΠΊ ΠΈΠ·ΡƒΡ‡Π΅Π½ΠΈΡŽ. Π’Π΅ΡΡŒ ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π» я Π±ΡƒΠ΄Ρƒ ΠΏΡ‹Ρ‚Π°Ρ‚ΡŒΡΡ Π²Ρ‹Π»ΠΎΠΆΠΈΡ‚ΡŒ максимально просто, собрав Ρ‚ΠΎΠ»ΡŒΠΊΠΎ самоС Π²Π°ΠΆΠ½ΠΎΠ΅ ΠΈ Π½Π΅ Π²Π΄Π°Π²Π°Ρ‚ΡŒΡΡ Π² Π΄Π΅Π±Ρ€ΠΈ.

XML

Для Π±ΠΎΠ»Π΅Π΅ ясного объяснСния, ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½Π΅ΠΉ Π±ΡƒΠ΄Π΅Ρ‚ Π²ΠΈΠ·ΡƒΠ°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ XML ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠΌ.


<?xml version="1.0" encoding="UTF-8"?>
<company>
    <name>IT-Heaven</name>
    <offices>
        <office floor="1" room="1">
            <employees>
                <employee>
                    <name>Maksim</name>
                    <job>Middle Software Developer</job>
                </employee>
                <employee>
                    <name>Ivan</name>
                    <job>Junior Software Developer</job>
                </employee>
                <employee>
                    <name>Franklin</name>
                    <job>Junior Software Developer</job>
                </employee>
            </employees>
        </office>
        <office floor="1" room="2">
            <employees>
                <employee>
                    <name>Herald</name>
                    <job>Middle Software Developer</job>
                </employee>
                <employee>
                    <name>Adam</name>
                    <job>Middle Software Developer</job>
                </employee>
                <employee>
                    <name>Leroy</name>
                    <job>Junior Software Developer</job>
                </employee>
            </employees>
        </office>
    </offices>
</company>

HTML ΠΈ XML ΠΏΠΎΡ…ΠΎΠΆΠΈ синтаксисом, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ Ρƒ Π½ΠΈΡ… ΠΎΠ±Ρ‰ΠΈΠΉ Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒ – SGML. Однако, Π² HTML Π΅ΡΡ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ фиксированныС Ρ‚Π΅Π³ΠΈ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠ³ΠΎ стандарта, Π² Ρ‚ΠΎ врСмя, ΠΊΠ°ΠΊ Π² XML Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ свои собствСнныС Ρ‚Π΅Π³ΠΈ, Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Ρ‹ ΠΈ, Π² Ρ†Π΅Π»ΠΎΠΌ, Π΄Π΅Π»Π°Ρ‚ΡŒ всС, Ρ‡Ρ‚ΠΎ Π·Π°Ρ…ΠΎΡ‚ΠΈΡ‚Π΅, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅ Ρ‚Π°ΠΊ, ΠΊΠ°ΠΊ Π²Π°ΠΌ Π±ΡƒΠ΄Π΅Ρ‚ ΡƒΠ΄ΠΎΠ±Π½ΠΎ.

По сути, XML Ρ„Π°ΠΉΠ»Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΡ€ΠΎΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ любой Ρ‡Π΅Π»ΠΎΠ²Π΅ΠΊ, Π·Π½Π°ΡŽΡ‰ΠΈΠΉ английский язык. Π˜Π·ΠΎΠ±Ρ€Π°Π·ΠΈΡ‚ΡŒ Π΄Π°Π½Π½Ρ‹ΠΉ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΠΌΠΎΠΆΠ½ΠΎ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Π΄Π΅Ρ€Π΅Π²Π°.
ΠšΠΎΡ€Π΅Π½ΡŒ Π΄Π΅Ρ€Π΅Π²Π° – Company. Он ΠΆΠ΅ – ΠΊΠΎΡ€Π½Π΅Π²ΠΎΠΉ (Ρ€ΡƒΡ‚) элСмСнт, ΠΎΡ‚ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ ΠΈΠ΄ΡƒΡ‚ всС ΠΎΡΡ‚Π°Π»ΡŒΠ½Ρ‹Π΅ элСмСнты. Π’ ΠΊΠ°ΠΆΠ΄ΠΎΠΌ XML Ρ„Π°ΠΉΠ»Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ΄ΠΈΠ½ Ρ€ΡƒΡ‚ элСмСнт. Он Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΎΠ±ΡŠΡΠ²Π»ΡΡ‚ΡŒΡΡ послС Π΄Π΅ΠΊΠ»Π°Ρ€Π°Ρ†ΠΈΠΈ xml Ρ„Π°ΠΉΠ»Π° (пСрвая строчка Π² ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅) ΠΈ Π²ΠΌΠ΅Ρ‰Π°Ρ‚ΡŒ Π² сСбС всС Π΄Ρ€ΡƒΠ³ΠΈΠ΅ элСмСнты.

НСмного ΠΎ Π΄Π΅ΠΊΠ»Π°Ρ€Π°Ρ†ΠΈΠΈ: ΠΎΠ½Π° ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Π°Ρ ΠΈ Π½ΡƒΠΆΠ½Π° для ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π° ΠΊΠ°ΠΊ XML. Π£ Π½Π΅Ρ‘ Π΅ΡΡ‚ΡŒ Ρ‚Ρ€ΠΈ псСвдо-Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Ρ‹ (ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Π΅ ΠΏΡ€Π΅Π΄ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Π΅ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Ρ‹): version (ΠΏΠΎ стандарту 1.0), encoding (ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²ΠΊΠ°) ΠΈ standalone (Π°Π²Ρ‚ΠΎΠ½ΠΎΠΌΠ½ΠΎΡΡ‚ΡŒ: Ссли yes ΠΈ ΠΊ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Ρƒ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π°ΡŽΡ‚ΡΡ внСшниС схСмы, Ρ‚ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ ошибка, ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ — no).

Π­Π»Π΅ΠΌΠ΅Π½Ρ‚Ρ‹ – это сущности, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ хранят Π΄Π°Π½Π½Ρ‹Π΅ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Π΄Ρ€ΡƒΠ³ΠΈΡ… элСмСнтов ΠΈ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ΠΎΠ². Атрибуты – это Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Π°Ρ информация ΠΎΠ± элСмСнтС, которая указываСтся ΠΏΡ€ΠΈ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠΈ элСмСнта.

Если пСрСвСсти объяснСниС Π½Π° ООП-ΠΏΠΎΠ»Π΅, Ρ‚ΠΎ ΠΌΠΎΠΆΠ½ΠΎ привСсти Ρ‚Π°ΠΊΠΎΠΉ ΠΏΡ€ΠΈΠΌΠ΅Ρ€: Ρƒ нас Π΅ΡΡ‚ΡŒ машина, Ρƒ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΌΠ°ΡˆΠΈΠ½Ρ‹ Π΅ΡΡ‚ΡŒ характСристики (Ρ†Π²Π΅Ρ‚, Π²ΠΌΠ΅ΡΡ‚ΠΈΠΌΠΎΡΡ‚ΡŒ, ΠΌΠ°Ρ€ΠΊΠ° ΠΈ Π΄Ρ€ΡƒΠ³ΠΎΠ΅) – это Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Ρ‹, ΠΈ Π΅ΡΡ‚ΡŒ сущности, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²Π½ΡƒΡ‚Ρ€ΠΈ ΠΌΠ°ΡˆΠΈΠ½Ρ‹: Π΄Π²Π΅Ρ€ΠΈ, ΠΎΠΊΠ½Π°, Π΄Π²ΠΈΠ³Π°Ρ‚Π΅Π»ΡŒ, Ρ€ΡƒΠ»ΡŒ – это Π΄Ρ€ΡƒΠ³ΠΈΠ΅ элСмСнты. Π₯Ρ€Π°Π½ΠΈΡ‚ΡŒ свойства ΠΌΠΎΠΆΠ½ΠΎ ΠΊΠ°ΠΊ ΠΈ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹ΠΌΠΈ элСмСнтами, Ρ‚Π°ΠΊ ΠΈ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Π°ΠΌΠΈ Π² зависимости ΠΎΡ‚ вашСго ТСлания. Как Π½ΠΈΠΊΠ°ΠΊ, XML – ΠΊΡ€Π°ΠΉΠ½Π΅ Π³ΠΈΠ±ΠΊΠΈΠΉ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ хранСния ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ ΠΏΡ€ΠΎ Ρ‡Ρ‚ΠΎ-Π»ΠΈΠ±ΠΎ.

ПослС объяснСний, Π½Π°ΠΌ достаточно Ρ€Π°Π·ΠΎΠ±Ρ€Π°Ρ‚ΡŒ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Π²Ρ‹ΡˆΠ΅, Ρ‡Ρ‚ΠΎΠ±Ρ‹ всС встало Π½Π° свои мСста.

Π’ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΌΡ‹ описали ΠΏΡ€ΠΎΡΡ‚ΡƒΡŽ структуру ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ: Π΅ΡΡ‚ΡŒ компания, Ρƒ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ Π΅ΡΡ‚ΡŒ имя ΠΈ офисы, Π° Π² офисах Π΅ΡΡ‚ΡŒ сотрудники.

Π­Π»Π΅ΠΌΠ΅Π½Ρ‚Ρ‹ Employees ΠΈ Offices – элСмСнты-ΠΎΠ±Π΅Ρ€Ρ‚ΠΊΠΈ – ΠΎΠ½ΠΈ слуТат для Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡΠΎΠ±Ρ€Π°Ρ‚ΡŒ Π² сСбС элСмСнты ΠΎΠ΄Π½ΠΎΠ³ΠΎ Π²ΠΈΠ΄Π°, ΠΏΠΎ сути, соСдинив ΠΈΡ… Π² ΠΎΠ΄Π½ΠΎ мноТСство для удобства ΠΈΡ… ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ.

ΠžΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ внимания Π·Π°ΡΠ»ΡƒΠΆΠΈΠ²Π°ΡŽΡ‚ floor ΠΈ room. Π­Ρ‚ΠΎ – Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Ρ‹ офиса (этаТ ΠΈ Π½ΠΎΠΌΠ΅Ρ€), Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ словами – Π΅Π³ΠΎ свойства. Если Π±Ρ‹ Ρƒ нас Π±Ρ‹Π» элСмСнт Β«ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ°Β», Ρ‚ΠΎ ΠΌΠΎΠΆΠ½ΠΎ Π±Ρ‹Π»ΠΎ Π±Ρ‹ ΠΏΠ΅Ρ€Π΅Π΄Π°Π²Π°Ρ‚ΡŒ Π΅Ρ‘ Ρ€Π°Π·ΠΌΠ΅Ρ€Ρ‹.

Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π·Π°ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ Ρƒ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ Π½Π΅Ρ‚ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Π° name, Π½ΠΎ Π΅ΡΡ‚ΡŒ элСмСнт name. ΠŸΡ€ΠΎΡΡ‚ΠΎ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΎΠΏΠΈΡΡ‹Π²Π°Ρ‚ΡŒ структуры Ρ‚Π°ΠΊ, ΠΊΠ°ΠΊ Π·Π°Ρ…ΠΎΡ‚ΠΈΡ‚Π΅. Никто Π½Π΅ обязываСт вас всС свойства элСмСнтов Π·Π°ΠΏΠΈΡΡ‹Π²Π°Ρ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Ρ‹, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΈ просто элСмСнты ΠΈ Π·Π°ΠΏΠΈΡΡ‹Π²Π°Ρ‚ΡŒ Π²Π½ΡƒΡ‚Ρ€ΠΈ Π½ΠΈΡ… ΠΊΠ°ΠΊΠΈΠ΅-Ρ‚ΠΎ Π΄Π°Π½Π½Ρ‹Π΅. НапримСр, ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ Π·Π°ΠΏΠΈΡΡ‹Π²Π°Ρ‚ΡŒ имя ΠΈ Π΄ΠΎΠ»ΠΆΠ½ΠΎΡΡ‚ΡŒ Π½Π°ΡˆΠΈΡ… Ρ€Π°Π±ΠΎΡ‚Π½ΠΈΠΊΠΎΠ², ΠΊΠ°ΠΊ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Ρ‹:


<?xml version="1.0" encoding="UTF-8"?>
<company>
    <name>IT-Heaven</name>
    <offices>
        <office floor="1" room="1">
            <employees>
                <employee name="Maksim" job="Middle Software Developer">

                </employee>
                <employee name="Ivan" job="Junior Software Developer">

                </employee>
                <employee name="Franklin" job="Junior Software Developer">

                </employee>
            </employees>
        </office>
        <office floor="1" room="2">
            <employees>
                <employee name="Herald" job="Middle Software Developer">

                </employee>
                <employee name="Adam" job="Middle Software Developer">

                </employee>
                <employee name="Leroy" job="Junior Software Developer">

                </employee>
            </employees>
        </office>
    </offices>
</company>

Как Π²Ρ‹ Π²ΠΈΠ΄ΠΈΡ‚Π΅, Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ имя ΠΈ Π΄ΠΎΠ»ΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ Ρ€Π°Π±ΠΎΡ‚Π½ΠΈΠΊΠ° – это Π΅Π³ΠΎ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Ρ‹. И ΠΌΠΎΠΆΠ½ΠΎ Π·Π°ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ Π²Π½ΡƒΡ‚Ρ€ΠΈ сущности (Ρ‚Π΅Π³Π°) employee Π½ΠΈΡ‡Π΅Π³ΠΎ Π½Π΅Ρ‚, всС элСмСнты employee – пустыС. Π’ΠΎΠ³Π΄Π° ΠΌΠΎΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ employee пустым элСмСнтом – Π·Π°ΠΊΡ€Ρ‹Ρ‚ΡŒ Π΅Π³ΠΎ сразу послС объявлСния Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ΠΎΠ². Π­Ρ‚ΠΎ дСлаСтся довольно просто, достаточно просто ΠΏΠΎΡΡ‚Π°Π²ΠΈΡ‚ΡŒ слэш:


<?xml version="1.0" encoding="UTF-8"?>
<company>
    <name>IT-Heaven</name>
    <offices>
        <office floor="1" room="1">
            <employees>
                <employee name="Maksim" job="Middle Software Developer" />
                <employee name="Ivan" job="Junior Software Developer" />
                <employee name="Franklin" job="Junior Software Developer" />
            </employees>
        </office>
        <office floor="1" room="2">
            <employees>
                <employee name="Herald" job="Middle Software Developer" />
                <employee name="Adam" job="Middle Software Developer" />
                <employee name="Leroy" job="Junior Software Developer" />
            </employees>
        </office>
    </offices>
</company>

Как Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π·Π°ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ, Π·Π°ΠΊΡ€Ρ‹Π² пустыС элСмСнты ΠΌΡ‹ сохранили всю Ρ†Π΅Π»ΠΎΡΡ‚Π½ΠΎΡΡ‚ΡŒ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ ΠΈ Π½Π°ΠΌΠ½ΠΎΠ³ΠΎ сократили запись, сдСлав ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ Π±ΠΎΠ»Π΅Π΅ сТатой ΠΈ Ρ‡ΠΈΡ‚Π°Π±Π΅Π»ΡŒΠ½ΠΎΠΉ.

Для Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ (тСкст, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΡ€ΠΎΠΏΡƒΡΠΊΠ°Ρ‚ΡŒΡΡ ΠΏΡ€ΠΈ парсингС Ρ„Π°ΠΉΠ»Π°) Π² XML, Π΅ΡΡ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ синтаксис:


<!-- Иван Π½Π΅Π΄Π°Π²Π½ΠΎ уволился, Ρ‚ΠΎΠ»ΡŒΠΊΠΎ нСдСлю ΠΎΡ‚Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Π΄ΠΎΠ»ΠΆΠ΅Π½. НС Π·Π°Π±ΡƒΠ΄ΡŒΡ‚Π΅ ΠΏΠΎΡ‚ΠΎΠΌ ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ Π΅Π³ΠΎ ΠΈΠ· списка.-->

И послСдняя конструкция – это CDATA, ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ Β«ΡΠΈΠΌΠ²ΠΎΠ»ΡŒΠ½Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅Β». Благодаря Π΄Π°Π½Π½ΠΎΠΉ конструкции, ΠΌΠΎΠΆΠ½ΠΎ Π·Π°ΠΏΠΈΡΡ‹Π²Π°Ρ‚ΡŒ тСкст, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΠΊΠ°ΠΊ Ρ€Π°Π·ΠΌΠ΅Ρ‚ΠΊΠ° XML. Π­Ρ‚ΠΎ ΠΏΠΎΠ»Π΅Π·Π½ΠΎ, Ссли Π²Π½ΡƒΡ‚Ρ€ΠΈ XML Ρ„Π°ΠΉΠ»Π° Ρƒ вас Π΅ΡΡ‚ΡŒ ΡΡƒΡ‰Π½ΠΎΡΡ‚ΡŒ, которая Ρ…Ρ€Π°Π½ΠΈΡ‚ Π² ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ XML Ρ€Π°Π·ΠΌΠ΅Ρ‚ΠΊΡƒ. ΠŸΡ€ΠΈΠΌΠ΅Ρ€:


<?xml version="1.0" encoding="UTF-8" ?>
<bean>
    <information>
        <![CDATA[<name>Ivan</name><age>26</age>]]>
    </information>
</bean>

ΠžΡΠΎΠ±Π΅Π½Π½ΠΎΡΡ‚ΡŒ XML Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Ρ€Π°ΡΡˆΠΈΡ€ΡΡ‚ΡŒ Π΅Π³ΠΎ Ρ‚Π°ΠΊ, ΠΊΠ°ΠΊ Π·Π°Ρ…ΠΎΡ‚ΠΈΡ‚Π΅: ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ свои элСмСнты, свои Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Ρ‹ ΠΈ ΡΡ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π΅Π³ΠΎ ΠΏΠΎ своСму ТСланию. Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ для хранСния Π΄Π°Π½Π½Ρ‹Ρ… ΠΊΠ°ΠΊ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Ρ‹, Ρ‚Π°ΠΊ ΠΈ элСмСнты (ΠΊΠ°ΠΊ это Π±Ρ‹Π»ΠΎ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Π² ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ Ρ€Π°Π½Π΅Π΅).

Однако Π½ΡƒΠΆΠ½ΠΎ ΠΏΠΎΠ½ΠΈΠΌΠ°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΈΠ΄ΡƒΠΌΡ‹Π²Π°Ρ‚ΡŒ свои элСмСнты ΠΈ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Ρ‹ Π½Π° Ρ…ΠΎΠ΄Ρƒ ΠΈ ΠΊΠ°ΠΊ Π²Ρ‹ Π·Π°Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅, Π½ΠΎ Ρ‡Ρ‚ΠΎ, Ссли Π²Ρ‹ Π±ΡƒΠ΄Π΅Ρ‚Π΅ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Π½Π° ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π΅, Π³Π΄Π΅ Π΄Ρ€ΡƒΠ³ΠΎΠΉ программист Π·Π°Ρ…ΠΎΡ‡Π΅Ρ‚ пСрСнСсти элСмСнт name Π² Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Ρ‹, Π° Ρƒ вас вся Π»ΠΎΠ³ΠΈΠΊΠ° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ написана Ρ‚Π°ΠΊ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ name Π±Ρ‹Π» элСмСнтом? Как ΠΆΠ΅ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ свои собствСнныС ΠΏΡ€Π°Π²ΠΈΠ»Π° Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊΠΈΠ΅ элСмСнты Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ, ΠΊΠ°ΠΊΠΈΠ΅ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Ρ‹ Ρƒ Π½ΠΈΡ… Π΅ΡΡ‚ΡŒ ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ Π²Π΅Ρ‰ΠΈ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΌΠΎΠΆΠ½ΠΎ Π±Ρ‹Π»ΠΎ ΠΏΡ€ΠΎΠ²ΠΎΠ΄ΠΈΡ‚ΡŒ Π²Π°Π»ΠΈΠ΄Π°Ρ†ΠΈΡŽ XML Ρ„Π°ΠΉΠ»ΠΎΠ² ΠΈ Π±Ρ‹Ρ‚ΡŒ ΡƒΠ²Π΅Ρ€Π΅Π½Π½Ρ‹ΠΌ, Ρ‡Ρ‚ΠΎ ΠΏΡ€Π°Π²ΠΈΠ»Π° станут стандартными Π² вашСм ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π΅ ΠΈ Π½ΠΈΠΊΡ‚ΠΎ ΠΈΡ… Π½Π°Ρ€ΡƒΡˆΠ°Ρ‚ΡŒ Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚? Для Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ всС ΠΏΡ€Π°Π²ΠΈΠ»Π° вашСй собствСнной XML Ρ€Π°Π·ΠΌΠ΅Ρ‚ΠΊΠΈ, Π΅ΡΡ‚ΡŒ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Π΅ срСдства. Π‘Π°ΠΌΡ‹Π΅ извСстныС: DTD ΠΈ XML Schema. Π’ этой ΡΡ‚Π°Ρ‚ΡŒΠ΅ Π±ΡƒΠ΄Π΅Ρ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΡ€ΠΎ ΠΏΠ΅Ρ€Π²ΠΎΠ΅.

DTD

DTD создан для Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠΏΠΈΡΡ‹Π²Π°Ρ‚ΡŒ Ρ‚ΠΈΠΏΡ‹ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ². DTD ΡƒΠΆΠ΅ устарСваСт ΠΈ сСйчас ΠΎΡ‚ Π½Π΅Π³ΠΎ Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎ ΠΎΡ‚ΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‚ΡΡ Π² XML, ΠΎΠ΄Π½Π°ΠΊΠΎ Π΅Ρ‰Π΅ ΠΌΠ½ΠΎΠ³ΠΎ XML Ρ„Π°ΠΉΠ»ΠΎΠ² ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ ΠΈΠΌΠ΅Π½Π½ΠΎ DTD ΠΈ, Π² Ρ†Π΅Π»ΠΎΠΌ, Π΅Π³ΠΎ ΠΏΠΎΠ»Π΅Π·Π½ΠΎ ΠΏΠΎΠ½ΠΈΠΌΠ°Ρ‚ΡŒ.

DTD – это тСхнология Π²Π°Π»ΠΈΠ΄Π°Ρ†ΠΈΠΈ XML-Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ². DTD ΠΎΠ±ΡŠΡΠ²Π»ΡΠ΅Ρ‚ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹Π΅ ΠΏΡ€Π°Π²ΠΈΠ»Π° для Ρ‚ΠΈΠΏΠ° Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°: Π΅Π³ΠΎ элСмСнты, ΠΊΠ°ΠΊΠΈΠ΅ элСмСнты ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ Π²Π½ΡƒΡ‚Ρ€ΠΈ элСмСнта, Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Ρ‹, ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ ΠΎΠ½ΠΈ ΠΈΠ»ΠΈ Π½Π΅Ρ‚, количСство ΠΈΡ… ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π΅Π½ΠΈΠΉ, Π° Ρ‚Π°ΠΊ ΠΆΠ΅ сущности (Entity).

По Π°Π½Π°Π»ΠΎΠ³ΠΈΠΈ с XML, для Π±ΠΎΠ»Π΅Π΅ ясного объяснСния DTD ΠΌΠΎΠΆΠ½ΠΎ Π²ΠΈΠ·ΡƒΠ°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠΌ.


 <!-- ОбъявлСниС Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹Ρ… элСмСнтов -->
<!ELEMENT employee EMPTY>
<!ELEMENT employees (employee+)>
<!ELEMENT office (employees)>
<!ELEMENT offices (office+)>
<!ELEMENT name (#PCDATA)>
<!ELEMENT company (name, offices)>

<!-- Π”ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ΠΎΠ² для элСмСнтов employee ΠΈ office -->
<!ATTLIST employee
        name CDATA #REQUIRED
        job  CDATA #REQUIRED
>

<!ATTLIST office
        floor CDATA #REQUIRED
        room  CDATA #REQUIRED
>

<!-- Π”ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ сущностСй -->
<!ENTITY M "Maksim">
<!ENTITY I "Ivan">
<!ENTITY F "Franklin">

Π’ΠΎΡ‚ Ρ‚Π°ΠΊΠΎΠΉ Π²ΠΎΡ‚ простой ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Ρƒ нас Π΅ΡΡ‚ΡŒ. Π’ Π΄Π°Π½Π½ΠΎΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅, ΠΌΡ‹ объявили всю Π½Π°ΡˆΡƒ ΠΈΠ΅Ρ€Π°Ρ€Ρ…ΠΈΡŽ ΠΈΠ· XML ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°: Ρ€Π°Π±ΠΎΡ‚Π½ΠΈΠΊ, Ρ€Π°Π±ΠΎΡ‚Π½ΠΈΠΊΠΈ, офис, офисы, имя, компания.

Для создания DTD Ρ„Π°ΠΉΠ»ΠΎΠ² слуТат 3 основныС конструкции, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠΏΠΈΡΡ‹Π²Π°Ρ‚ΡŒ Π»ΡŽΠ±Ρ‹Π΅ XML Ρ„Π°ΠΉΠ»Ρ‹: ELEMENT (для описания элСмСнтов), ATTLIST (для описания Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ΠΎΠ² для элСмСнтов) ΠΈ ENTITY (для подстановки тСкста сокращСнными Ρ„ΠΎΡ€ΠΌΠ°ΠΌΠΈ).

ELEMENT

Π‘Π»ΡƒΠΆΠΈΡ‚ для описания элСмСнта. Π­Π»Π΅ΠΌΠ΅Π½Ρ‚Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π²Π½ΡƒΡ‚Ρ€ΠΈ описанного элСмСнта, ΠΏΠ΅Ρ€Π΅Ρ‡ΠΈΡΠ»ΡΡŽΡ‚ΡΡ Π² скобках Π² Π²ΠΈΠ΄Π΅ списка. МоТно ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠ²Π°Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Ρ‹ для указания количСства (ΠΎΠ½ΠΈ Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π½Ρ‹ с ΠΊΠ²Π°Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Π°ΠΌΠΈ ΠΈΠ· рСгулярных Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ):

+ Π·Π½Π°Ρ‡ΠΈΡ‚ 1+
* Π·Π½Π°Ρ‡ΠΈΡ‚ 0+
? Π·Π½Π°Ρ‡ΠΈΡ‚ 0 Π˜Π›Π˜ 1
Если ΠΊΠ²Π°Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ΠΎΠ² Π½Π΅ Π±Ρ‹Π»ΠΎ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΎ, Ρ‚ΠΎ считаСтся, Ρ‡Ρ‚ΠΎ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ 1 элСмСнт.

Если Π±Ρ‹ Π½Π°ΠΌ Π½ΡƒΠΆΠ΅Π½ Π±Ρ‹Π» ΠΎΠ΄ΠΈΠ½ ΠΈΠ· Π³Ρ€ΡƒΠΏΠΏΡ‹ элСмСнтов, ΠΌΠΎΠΆΠ½ΠΎ Π±Ρ‹Π»ΠΎ Π±Ρ‹ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ Ρ‚Π°ΠΊ:


<!ELEMENT company ((name | offices))>

Π’ΠΎΠ³Π΄Π° выбирался Π±Ρ‹ ΠΎΠ΄ΠΈΠ½ ΠΈΠ· элСмСнтов: name ΠΈΠ»ΠΈ offices, Π½ΠΎ Ссли Π±Ρ‹ Π²Π½ΡƒΡ‚Ρ€ΠΈ company Π±Ρ‹Π»ΠΎ сразу Π΄Π²Π° ΠΈΡ…, Ρ‚ΠΎ валидация Π±Ρ‹ Π½Π΅ ΠΏΡ€ΠΎΡ…ΠΎΠ΄ΠΈΠ»Π°.
Π’Π°ΠΊ ΠΆΠ΅ ΠΌΠΎΠΆΠ½ΠΎ Π·Π°ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ Π² employee Π΅ΡΡ‚ΡŒ слово EMPTY – это Π·Π½Π°Ρ‡ΠΈΡ‚, Ρ‡Ρ‚ΠΎ элСмСнт Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ пустым. Π•ΡΡ‚ΡŒ Π΅Ρ‰Π΅ ANY – Π»ΡŽΠ±Ρ‹Π΅ элСмСнты. #PCDATA – тСкстовыС Π΄Π°Π½Π½Ρ‹Π΅.

ATTLIST

Π‘Π»ΡƒΠΆΠΈΡ‚ для добавлСния Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ΠΎΠ² ΠΊ элСмСнтам. ПослС ATTLIST слСдуСт Π½Π°Π·Π²Π°Π½ΠΈΠ΅ Π½ΡƒΠΆΠ½ΠΎΠ³ΠΎ элСмСнта, Π° послС ΡΠ»ΠΎΠ²Π°Ρ€ΡŒ Π²ΠΈΠ΄Π° Β«Π½Π°Π·Π²Π°Π½ΠΈΠ΅ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Π° – Ρ‚ΠΈΠΏ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Π°Β», Π° Π² ΠΊΠΎΠ½Ρ†Π΅ ΠΌΠΎΠΆΠ½ΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ #IMPLIED (Π½Π΅ обязатСлСн) ΠΈΠ»ΠΈ #REQUIRED (обязатСлСн). CDATA – тСкстовыС Π΄Π°Π½Π½Ρ‹Π΅. Π•ΡΡ‚ΡŒ ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ Ρ‚ΠΈΠΏΡ‹, ΠΎΠ΄Π½Π°ΠΊΠΎ всС ΠΎΠ½ΠΈ строчныС.

ENTITY

ENTITY слуТит для объявлСния сокращСний ΠΈ тСкста, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π±ΡƒΠ΄Π΅Ρ‚ Π½Π° Π½ΠΈΡ… ΠΏΠΎΠ΄ΡΡ‚Π²Π°Π»ΡΡ‚ΡŒΡΡ. По сути, ΠΌΡ‹ просто смоТСм ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π² XML вмСсто ΠΏΠΎΠ»Π½ΠΎΠ³ΠΎ тСкста просто Π½Π°Π·Π²Π°Π½ΠΈΠ΅ сущности со Π·Π½Π°ΠΊΠΎΠΌ & ΠΏΠ΅Ρ€Π΅Π΄ ΠΈ ; послС. НапримСр: Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΡ‚Π»ΠΈΡ‡Π°Ρ‚ΡŒ Ρ€Π°Π·ΠΌΠ΅Ρ‚ΠΊΡƒ Π² HTML ΠΈ просто символы, Π»Π΅Π²ΡƒΡŽ ΡƒΠ³Π»ΠΎΠ²ΡƒΡŽ скобочку часто ΡΠΊΡ€Π°Π½ΠΈΡ€ΡƒΡŽΡ‚ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ lt; , Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π½ΡƒΠΆΠ½ΠΎ Π΅Ρ‰Π΅ Π²Ρ‹ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ & ΠΏΠ΅Ρ€Π΅Π΄ lt. Π’ΠΎΠ³Π΄Π° ΠΌΡ‹ Π±ΡƒΠ΄Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π½Π΅ Ρ€Π°Π·ΠΌΠ΅Ρ‚ΠΊΡƒ, Π° просто символ Π•ΡΡ‚ΡŒ Π΄Π²Π° способа ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΈΡ… Π² XML:

1. Π’Π½Π΅Π΄Ρ€Π΅Π½ΠΈΠ΅ — написаниС DTD ΠΏΡ€Π°Π²ΠΈΠ» Π²Π½ΡƒΡ‚Ρ€ΠΈ самого XML Ρ„Π°ΠΉΠ»Π°, достаточно просто Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΊΠΎΡ€Π½Π΅Π²ΠΎΠΉ элСмСнт послС ΠΊΠ»ΡŽΡ‡Π΅Π²ΠΎΠ³ΠΎ слова DOCTYPE ΠΈ Π·Π°ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ наш DTD Ρ„Π°ΠΉΠ» Π²Π½ΡƒΡ‚Ρ€ΠΈ ΠΊΠ²Π°Π΄Ρ€Π°Ρ‚Π½Ρ‹Ρ… скобочСк.


<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE company [
        <!-- ОбъявлСниС Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹Ρ… элСмСнтов -->
        <!ELEMENT employee EMPTY>
        <!ELEMENT employees (employee+)>
        <!ELEMENT office (employees)>
        <!ELEMENT offices (office+)>
        <!ELEMENT name (#PCDATA)>
        <!ELEMENT company (name, offices)>

        <!-- Π”ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ΠΎΠ² для элСмСнтов employee ΠΈ office -->
        <!ATTLIST employee
        name CDATA #REQUIRED
        job  CDATA #REQUIRED
        >

        <!ATTLIST office
        floor CDATA #REQUIRED
        room  CDATA #REQUIRED
        >

        <!-- Π”ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ сущностСй -->
        <!ENTITY M "Maksim">
        <!ENTITY I "Ivan">
        <!ENTITY F "Franklin">
]>

<company>
    <name>IT-Heaven</name>
    <!-- Иван Π½Π΅Π΄Π°Π²Π½ΠΎ уволился, Ρ‚ΠΎΠ»ΡŒΠΊΠΎ нСдСлю ΠΎΡ‚Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Π΄ΠΎΠ»ΠΆΠ΅Π½.  НС Π·Π°Π±ΡƒΠ΄ΡŒΡ‚Π΅ ΠΏΠΎΡ‚ΠΎΠΌ ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ Π΅Π³ΠΎ ΠΈΠ· списка.-->
    <offices>
        <office floor="1" room="1">
            <employees>
                <employee name="&M;" job="Middle Software Developer" />
                <employee name="&I;" job="Junior Software Developer" />
                <employee name="&F;" job="Junior Software Developer" />
            </employees>
        </office>
        <office floor="1" room="2">
            <employees>
                <employee name="Herald" job="Middle Software Developer" />
                <employee name="Adam" job="Middle Software Developer" />
                <employee name="Leroy" job="Junior Software Developer" />
            </employees>
        </office>
    </offices>
</company>

2. Π˜ΠΌΠΏΠΎΡ€Ρ‚ — ΠΌΡ‹ записываСм всС наши ΠΏΡ€Π°Π²ΠΈΠ»Π° Π² ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹ΠΉ DTD Ρ„Π°ΠΉΠ», послС Ρ‡Π΅Π³ΠΎ Π² XML Ρ„Π°ΠΉΠ»Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ DOCTYPE-ΠΊΠΎΠ½ΡΡ‚Ρ€ΡƒΠΊΡ†ΠΈΡŽ ΠΈΠ· ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ способа, Ρ‚ΠΎΠ»ΡŒΠΊΠΎ вмСсто ΠΊΠ²Π°Π΄Ρ€Π°Ρ‚Π½Ρ‹Ρ… скобочСк Π½ΡƒΠΆΠ½ΠΎ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ SYSTEM ΠΈ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ Π°Π±ΡΠΎΠ»ΡŽΡ‚Π½Ρ‹ΠΉ ΠΈΠ»ΠΈ ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ Π΄ΠΎ Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π³ΠΎ мСстополоТСния Ρ„Π°ΠΉΠ»Π° ΠΏΡƒΡ‚ΡŒ.


<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE company SYSTEM "dtd_example1.dtd">

<company>
    <name>IT-Heaven</name>
    <!-- Иван Π½Π΅Π΄Π°Π²Π½ΠΎ уволился, Ρ‚ΠΎΠ»ΡŒΠΊΠΎ нСдСлю ΠΎΡ‚Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Π΄ΠΎΠ»ΠΆΠ΅Π½. НС Π·Π°Π±ΡƒΠ΄ΡŒΡ‚Π΅ ΠΏΠΎΡ‚ΠΎΠΌ ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ Π΅Π³ΠΎ ΠΈΠ· списка.-->
    <offices>
        <office floor="1" room="1">
            <employees>
                <employee name="&M;" job="Middle Software Developer" />
                <employee name="&I;" job="Junior Software Developer" />
                <employee name="&F;" job="Junior Software Developer" />
            </employees>
        </office>
        <office floor="1" room="2">
            <employees>
                <employee name="Herald" job="Middle Software Developer" />
                <employee name="Adam" job="Middle Software Developer" />
                <employee name="Leroy" job="Junior Software Developer" />
            </employees>
        </office>
    </offices>
</company>

Π’Π°ΠΊ ΠΆΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠ»ΡŽΡ‡Π΅Π²ΠΎΠ΅ слово PUBLIC вмСсто SYSTEM, ΠΎΠ΄Π½Π°ΠΊΠΎ ΠΎΠ½ΠΎ вряд Π»ΠΈ Π²Π°ΠΌ пригодится. Если интСрСсно, Ρ‚ΠΎ ΠΏΠΎΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ ΠΏΡ€ΠΎ Π½Π΅Π³ΠΎ (ΠΈ ΠΏΡ€ΠΎ SYSTEM Ρ‚ΠΎΠΆΠ΅) ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎ Ρ‚ΡƒΡ‚: ссылочка.

Π’Π΅ΠΏΠ΅Ρ€ΡŒ ΠΌΡ‹ Π½Π΅ ΠΌΠΎΠΆΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ элСмСнты Π±Π΅Π· ΠΈΡ… объявлСния Π² DTD, Π° вСсь XML подчиняСтся нашим ΠΏΡ€Π°Π²ΠΈΠ»Π°ΠΌ. ΠœΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΠΎΠΏΡ€ΠΎΠ±ΠΎΠ²Π°Ρ‚ΡŒ Π·Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ Π΄Π°Π½Π½Ρ‹ΠΉ ΠΊΠΎΠ΄ Π² IntelliJ IDEA Π² ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹ΠΉ Ρ„Π°ΠΉΠ» с Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠ΅ΠΌ .xml ΠΈ ΠΏΠΎΠΏΡ€ΠΎΠ±ΠΎΠ²Π°Ρ‚ΡŒ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΊΠ°ΠΊΠΈΠ΅-Ρ‚ΠΎ Π½ΠΎΠ²Ρ‹Π΅ элСмСнты ΠΈΠ»ΠΈ ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ элСмСнт ΠΈΠ· нашСго DTD ΠΈ Π·Π°ΠΌΠ΅Ρ‚ΠΈΡ‚Π΅, ΠΊΠ°ΠΊ IDE Π±ΡƒΠ΄Π΅Ρ‚ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Ρ‚ΡŒ Π²Π°ΠΌ Π½Π° ΠΎΡˆΠΈΠ±ΠΊΡƒ.

Однако, Ρƒ DTD Π΅ΡΡ‚ΡŒ свои минусы:

  • Π£ Π½Π΅Π³ΠΎ свой собствСнный синтаксис, ΠΎΡ‚Π»ΠΈΡ‡Π½Ρ‹ΠΉ ΠΎΡ‚ синтаксиса xml.
  • Π’ DTD Π½Π΅Ρ‚ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ Ρ‚ΠΈΠΏΠΎΠ² Π΄Π°Π½Π½Ρ‹Ρ…, Π° ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ ΠΎΠ½ ΠΌΠΎΠΆΠ΅Ρ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ строки.
  • Π’ DTD Π½Π΅Ρ‚ пространства ΠΈΠΌΡ‘Π½.

О ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ΅ собствСнного синтаксиса: Π²Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Ρ€Π°Π·Π±ΠΈΡ€Π°Ρ‚ΡŒΡΡ Π² Π΄Π²ΡƒΡ… синтаксисах сразу: Π² XML ΠΈ Π² DTD синтаксисС. Они Ρ€Π°Π·Π½Ρ‹Π΅ ΠΈ это ΠΌΠΎΠΆΠ΅Ρ‚ Π·Π°ΡΡ‚Π°Π²Π»ΡΡ‚ΡŒ вас ΠΏΡƒΡ‚Π°Ρ‚ΡŒΡΡ. Π’Π°ΠΊ ΠΆΠ΅, ΠΈΠ·-Π·Π° этого ΠΆΠ΅ слоТнСй ΠΎΡ‚ΡΠ»Π΅ΠΆΠΈΠ²Π°Ρ‚ΡŒ ошибки Π² ΠΎΠ³Ρ€ΠΎΠΌΠ½Ρ‹Ρ… XML Ρ„Π°ΠΉΠ»Π°Ρ… Π² соСдинСнии с Ρ‚Π°ΠΊΠΈΠΌΠΈ ΠΆΠ΅ DTD схСмами. Если Ρƒ вас Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ Π½Π΅ Π·Π°Ρ€Π°Π±ΠΎΡ‚Π°Π»ΠΎ, приходится ΠΏΡ€ΠΎΠ²Π΅Ρ€ΡΡ‚ΡŒ ΠΎΠ³Ρ€ΠΎΠΌΠ½ΠΎΠ΅ количСство тСкста Ρ€Π°Π·Π½Ρ‹Ρ… синтаксисов. Π­Ρ‚ΠΎ ΠΊΠ°ΠΊ Ρ‡ΠΈΡ‚Π°Ρ‚ΡŒ ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ Π΄Π²Π΅ ΠΊΠ½ΠΈΠΆΠΊΠΈ: Π½Π° русском ΠΈ английском. И Ссли Π·Π½Π°Π½ΠΈΠ΅ Ρƒ ΠΎΠ΄Π½ΠΎΠ³ΠΎ языка Ρƒ вас Ρ…ΡƒΠΆΠ΅, Ρ‚ΠΎ ΠΏΠΎΠ½ΠΈΠΌΠ°Ρ‚ΡŒ тСкст Π±ΡƒΠ΄Π΅Ρ‚ Ρ‚Π°ΠΊ ΠΆΠ΅ слоТнСй.

О ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ΅ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ Ρ‚ΠΈΠΏΠΎΠ² Π΄Π°Π½Π½Ρ‹Ρ…: Ρƒ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ΠΎΠ² Π² DTD Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Π΅ΡΡ‚ΡŒ Ρ€Π°Π·Π½Ρ‹Π΅ Ρ‚ΠΈΠΏΡ‹, Π½ΠΎ всС ΠΎΠ½ΠΈ, ΠΏΠΎ сути своСй, ΡΠ²Π»ΡΡŽΡ‚ΡΡ строковыми прСдставлСниями Ρ‡Π΅Π³ΠΎ-Π»ΠΈΠ±ΠΎ, списками ΠΈΠ»ΠΈ ссылками. Однако, Π²Ρ‹ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Ρ‚Ρ€Π΅Π±ΠΎΠ²Π°Ρ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ числа, ΠΈ, Ρ‚Π΅ΠΌ Π±ΠΎΠ»Π΅Π΅, ΠΏΠΎΠ·ΠΈΡ‚ΠΈΠ²Π½Ρ‹Π΅ ΠΈΠ»ΠΈ Π½Π΅Π³Π°Ρ‚ΠΈΠ²Π½Ρ‹Π΅. А ΠΏΡ€ΠΎ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½Ρ‹Π΅ Ρ‚ΠΈΠΏΡ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π²ΠΎΠΎΠ±Ρ‰Π΅ Π·Π°Π±Ρ‹Ρ‚ΡŒ.

ПослСдняя ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΠ±ΡΡƒΠΆΠ΄Π°Ρ‚ΡŒΡΡ ΡƒΠΆΠ΅ Π² ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ ΡΡ‚Π°Ρ‚ΡŒΠ΅, которая Π±ΡƒΠ΄Π΅Ρ‚ посвящСна пространствам ΠΈΠΌΡ‘Π½ ΠΈ XML схСмам, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ обсуТдСниС Π΅Ρ‘ Ρ‚ΡƒΡ‚ бСссмыслСнно.

Бпасибо всСм Π·Π° Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, я ΠΏΡ€ΠΎΠ΄Π΅Π»Π°Π» Π±ΠΎΠ»ΡŒΡˆΡƒΡŽ Ρ€Π°Π±ΠΎΡ‚Ρƒ ΠΈ ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠ°ΡŽ Π΅Ρ‘ ΠΏΡ€ΠΎΠ΄Π΅Π»Ρ‹Π²Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ воврСмя Π·Π°ΠΊΠΎΠ½Ρ‡ΠΈΡ‚ΡŒ вСсь Ρ†ΠΈΠΊΠ» статСй. По сути, ΠΌΠ½Π΅ ΠΎΡΡ‚Π°Π»ΠΎΡΡŒ Ρ€Π°Π·ΠΎΠ±Ρ€Π°Ρ‚ΡŒΡΡ с XML схСмами ΠΈ ΠΏΡ€ΠΈΠ΄ΡƒΠΌΠ°Ρ‚ΡŒ ΠΈΡ… объяснСниС Π±ΠΎΠ»Π΅Π΅ ясными словами, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π·Π°ΠΊΠΎΠ½Ρ‡ΠΈΡ‚ΡŒ 2-ю ΡΡ‚Π°Ρ‚ΡŒΡŽ. Π•Ρ‘ ΠΏΠΎΠ»ΠΎΠ²ΠΈΠ½Π° ΡƒΠΆΠ΅ сдСлана, Ρ‚Π°ΠΊ Ρ‡Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΎΠΆΠΈΠ΄Π°Ρ‚ΡŒ Π΅Ρ‘ Π² блиТайшСС врСмя. ПослСдняя ΡΡ‚Π°Ρ‚ΡŒΡ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ посвящСна Ρ€Π°Π±ΠΎΡ‚Π΅ с XML Ρ„Π°ΠΉΠ»Π°ΠΌΠΈ срСдствами Java. Π£Π΄Π°Ρ‡ΠΈ всСм ΠΈ успСхов Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ πŸ™‚

Π‘Π»Π΅Π΄ΡƒΡŽΡ‰Π°Ρ ΡΡ‚Π°Ρ‚ΡŒΡ: [ΠšΠΎΠ½ΠΊΡƒΡ€Ρ] ΠžΡΠ½ΠΎΠ²Ρ‹ XML для Java программиста — Π§Π°ΡΡ‚ΡŒ 2 ΠΈΠ· 3

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ Ρ„Π°ΠΉΠ»Π° Π² сСрвлСтС ΠΈ JSP

Π—Π°Π³Ρ€ΡƒΠ·ΠΊΠ° Ρ„Π°ΠΉΠ»Π° Π½Π° сСрвСр с использованиСм сСрвлСта ΠΈ JSP β€” обычная Π·Π°Π΄Π°Ρ‡Π° Π² Π²Π΅Π±-ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ Java. ΠŸΡ€Π΅ΠΆΠ΄Π΅ Ρ‡Π΅ΠΌ ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ваш сСрвлСт ΠΈΠ»ΠΈ JSP для ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ запроса Π½Π° Π·Π°Π³Ρ€ΡƒΠ·ΠΊΡƒ Ρ„Π°ΠΉΠ»Π°, Π²Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ ΡƒΠ·Π½Π°Ρ‚ΡŒ ΠΎ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ΅ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ Ρ„Π°ΠΉΠ»ΠΎΠ² Π² ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»Π°Ρ… HTML ΠΈ HTTP. Если Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ваш ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ Π²Ρ‹Π±ΠΈΡ€Π°Π» Ρ„Π°ΠΉΠ»Ρ‹ ΠΈΠ· Ρ„Π°ΠΉΠ»ΠΎΠ²ΠΎΠΉ систСмы ΠΈ Π·Π°Π³Ρ€ΡƒΠΆΠ°Π» ΠΈΡ… Π½Π° сСрвСр, Π²Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ <input type = ”file” />. Π­Ρ‚ΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡ‚ Π²Ρ‹Π±Ρ€Π°Ρ‚ΡŒ Π»ΡŽΠ±ΡƒΡŽ Ρ„Π°ΠΉΠ»ΠΎΠ²ΡƒΡŽ систСму ΠΈ Π·Π°Π³Ρ€ΡƒΠ·ΠΈΡ‚ΡŒ Π΅Π΅ Π½Π° сСрвСр. Π‘Π»Π΅Π΄ΡƒΡŽΡ‰Π΅Π΅, Ρ‡Ρ‚ΠΎ ΠΌΠ΅Ρ‚ΠΎΠ΄ Ρ„ΠΎΡ€ΠΌΡ‹ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ HTTP POST с enctype ΠΊΠ°ΠΊ multipart / form-data , Ρ‡Ρ‚ΠΎ Π΄Π΅Π»Π°Π΅Ρ‚ Π΄Π°Π½Π½Ρ‹Π΅ Ρ„Π°ΠΉΠ»Π° доступными частями Π²Π½ΡƒΡ‚Ρ€ΠΈ Ρ‚Π΅Π»Π° запроса. Π’Π΅ΠΏΠ΅Ρ€ΡŒ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€ΠΎΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ эти части Ρ„Π°ΠΉΠ»Π° ΠΈ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Ρ„Π°ΠΉΠ» Π²Π½ΡƒΡ‚Ρ€ΠΈ сСрвлСта, ΠΌΠΎΠΆΠ½ΠΎ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ServletOutputStream. Π›ΡƒΡ‡ΡˆΠ΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Apache commons FileUpload , Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΡƒ с ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΌ исходным ΠΊΠΎΠ΄ΠΎΠΌ. Apache FileUpload ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π΅Ρ‚ всС Π½ΠΈΠΆΠ½ΠΈΠ΅ Π΄Π΅Ρ‚Π°Π»ΠΈ синтаксичСского Π°Π½Π°Π»ΠΈΠ·Π° HTTP-запроса, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΠΎΠ΄Ρ‚Π²Π΅Ρ€ΠΆΠ΄Π°ΡŽΡ‚ΡΡ Π² RFC 1867 ΠΈΠ»ΠΈ Β«Π—Π°Π³Ρ€ΡƒΠ·ΠΊΠ° Ρ„Π°ΠΉΠ»ΠΎΠ² Π½Π° основС Ρ„ΠΎΡ€ΠΌ Π² HTMLΒ» , ΠΊΠΎΠ³Π΄Π° Π²Ρ‹ устанавливаСтС ΠΌΠ΅Ρ‚ΠΎΠ΄ сообщСния Ρ„ΠΎΡ€ΠΌΡ‹ ΠΈ Ρ‚ΠΈΠΏ ΠΊΠΎΠ½Ρ‚Π΅Π½Ρ‚Π° ΠΊΠ°ΠΊ Β«multipart / form-dataΒ».

Π’Π°ΠΆΠ½Ρ‹Π΅ Ρ‚ΠΎΡ‡ΠΊΠΈ:

  1. DiskFileItemFactory являСтся классом Factory ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ для FileItem. Когда Apache осущСствляСт Ρ‡Ρ‚Π΅Π½ΠΈΠ΅ ΠΌΡƒΠ»ΡŒΡ‚ΠΈΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π½ΠΎΠ³ΠΎ содСрТимого ΠΈ Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΡƒΠ΅Ρ‚ FileItem, эта рСализация сохраняСт содСрТимоС Ρ„Π°ΠΉΠ»Π° Π»ΠΈΠ±ΠΎ Π² памяти, Π»ΠΈΠ±ΠΎ Π½Π° дискС ΠΊΠ°ΠΊ Π²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΉ Ρ„Π°ΠΉΠ», Π² зависимости ΠΎΡ‚ Ρ€Π°Π·ΠΌΠ΅Ρ€Π° ΠΏΠΎΡ€ΠΎΠ³Π°. По ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ DiskFileItemFactory ΠΈΠΌΠ΅Π΅Ρ‚ ΠΏΠΎΡ€ΠΎΠ³ΠΎΠ²Ρ‹ΠΉ Ρ€Π°Π·ΠΌΠ΅Ρ€ 10 ΠšΠ‘ ΠΈ создаСт Π²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ Ρ„Π°ΠΉΠ»Ρ‹ Π²ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΌ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π΅, Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅ΠΌΠΎΠΌ System.getProperty (Β«java.io.tmpdirΒ»). Оба эти значСния ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΡΡ‚Ρ€Π°ΠΈΠ²Π°Ρ‚ΡŒ, ΠΈ Π»ΡƒΡ‡ΡˆΠ΅ всСго ΠΈΡ… Π½Π°ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ для производствСнного использования. Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ с Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΈΡΠΌΠΈ, Ссли Ρƒ ΡƒΡ‡Π΅Ρ‚Π½ΠΎΠΉ записи ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΠΎΠΉ для запуска Π‘Π΅Ρ€Π²Π΅Ρ€Π°, нСдостаточно ΠΏΡ€Π°Π² для записи Ρ„Π°ΠΉΠ»ΠΎΠ² Π²ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΉ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³.
  2. Π’Ρ‰Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ Π²Ρ‹Π±ΠΈΡ€Π°ΠΉΡ‚Π΅ ΠΏΠΎΡ€ΠΎΠ³ΠΎΠ²Ρ‹ΠΉ Ρ€Π°Π·ΠΌΠ΅Ρ€ Π² зависимости ΠΎΡ‚ использования памяти. Π₯Ρ€Π°Π½Π΅Π½ΠΈΠ΅ большого объСма Π² памяти ΠΌΠΎΠΆΠ΅Ρ‚ привСсти ΠΊ java.lang.OutOfMemory , Π² Ρ‚ΠΎ врСмя ΠΊΠ°ΠΊ слишком малСнькиС значСния ΠΌΠΎΠ³ΡƒΡ‚ привСсти ΠΊ появлСнию большого количСства Π²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… Ρ„Π°ΠΉΠ»ΠΎΠ².
  3. Apache Commons File Upload Ρ‚Π°ΠΊΠΆΠ΅ прСдоставляСт FileCleaningTracker для удалСния Π²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… Ρ„Π°ΠΉΠ»ΠΎΠ², созданных DiskFileItemFactory. FileCleaningTracker удаляСт Π²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ Ρ„Π°ΠΉΠ»Ρ‹, ΠΊΠ°ΠΊ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΉ экзСмпляр File собираСтся мусором. Π­Ρ‚ΠΎ достигаСтся с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Π±ΠΎΠ»Π΅Π΅ чистого ΠΏΠΎΡ‚ΠΎΠΊΠ°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ создаСтся ΠΏΡ€ΠΈ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠ΅ FileCleaner. Если Π²Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅ эту Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ, Π½Π΅ Π·Π°Π±ΡƒΠ΄ΡŒΡ‚Π΅ ΠΏΡ€Π΅ΠΊΡ€Π°Ρ‚ΠΈΡ‚ΡŒ эту Ρ‚Π΅ΠΌΡƒ, ΠΊΠΎΠ³Π΄Π° закончится вашС Π²Π΅Π±-ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅.
  4. БохраняйтС настраиваСмыС Π΄Π°Π½Π½Ρ‹Π΅, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ, ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΉ Ρ€Π°Π·ΠΌΠ΅Ρ€ Ρ„Π°ΠΉΠ»Π°, ΠΏΠΎΡ€ΠΎΠ³ΠΎΠ²Ρ‹ΠΉ Ρ€Π°Π·ΠΌΠ΅Ρ€ ΠΈ Ρ‚. Π”. Π’ Ρ„Π°ΠΉΠ»Π°Ρ… ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ, ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ Ρ€Π°Π·ΡƒΠΌΠ½Ρ‹Π΅ значСния ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ, Ссли ΠΎΠ½ΠΈ Π½Π΅ настроСны.
  5. РСкомСндуСтся ΠΏΡ€ΠΎΠ²Π΅Ρ€ΡΡ‚ΡŒ Ρ€Π°Π·ΠΌΠ΅Ρ€, Ρ‚ΠΈΠΏ ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ свСдСния ΠΎ Ρ„Π°ΠΉΠ»Π°Ρ… Π² соотвСтствии с трСбованиями вашСго ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Ρ€Π°Π·Ρ€Π΅ΡˆΠΈΡ‚ΡŒ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΡƒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠ³ΠΎ Ρ€Π°Π·ΠΌΠ΅Ρ€Π° ΠΈ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Ρ… Ρ‚ΠΈΠΏΠΎΠ², Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ JPEG, PNG ΠΈ Ρ‚. Π”.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ Ρ„Π°ΠΉΠ»Π° Π² сСрвлСтС Java ΠΈ JSP

Π’ΠΎΡ‚ ΠΏΠΎΠ»Π½Ρ‹ΠΉ ΠΊΠΎΠ΄ для Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ Ρ„Π°ΠΉΠ»ΠΎΠ² Π² Π²Π΅Π±-ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Java с использованиСм Servlet ΠΈ JSP. Π­Ρ‚ΠΎΡ‚ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ Ρ„Π°ΠΉΠ»Π° Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ Ρ‡Π΅Ρ‚Ρ‹Ρ€Π΅Ρ… Ρ„Π°ΠΉΠ»ΠΎΠ²:

  1. index.jsp, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ содСрТит HTML-ΠΊΠΎΠ½Ρ‚Π΅Π½Ρ‚ для настройки Ρ„ΠΎΡ€ΠΌΡ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ позволяСт ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŽ Π²Ρ‹Π±ΠΈΡ€Π°Ρ‚ΡŒ ΠΈ Π·Π°Π³Ρ€ΡƒΠΆΠ°Ρ‚ΡŒ Ρ„Π°ΠΉΠ» Π½Π° сСрвСр.
  2. Π‘Π΅Ρ€Π²Π»Π΅Ρ‚ FileUploader, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π΅Ρ‚ запрос Π½Π° Π·Π°Π³Ρ€ΡƒΠ·ΠΊΡƒ Ρ„Π°ΠΉΠ»Π° ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΡƒ Apache FileUpload для Π°Π½Π°Π»ΠΈΠ·Π° Π΄Π°Π½Π½Ρ‹Ρ… многоэлСмСнтной Ρ„ΠΎΡ€ΠΌΡ‹
  3. web.xml для настройки сСрвлСта ΠΈ JSP Π² Π²Π΅Π±-ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ Java.
  4. result.jsp для отобраТСния Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π° ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ Ρ„Π°ΠΉΠ»Π°.
FileUploadHandler.java

01

02

03

04

05

06

07

08

09

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

import java. io.File;

import java.io.IOException;

import java.util.List;

import javax.servlet.ServletException;

import javax.servlet.http.HttpServlet;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

import org.apache.commons.fileupload.FileItem;

import org.apache.commons.fileupload.disk.DiskFileItemFactory;

import org.apache.commons.fileupload.servlet.ServletFileUpload;

Β 

/**

Β * Servlet to handle File upload request from Client

Β * @author Javin Paul

Β */

public class FileUploadHandler extends HttpServlet {

Β Β Β Β private final String UPLOAD_DIRECTORY = "C:/uploads";

Β Β Β 

Β Β Β Β @Override

МодСль ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² XML-Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ² (DOM) | Microsoft Docs



  • Π§Ρ‚Π΅Π½ΠΈΠ΅ Π·Π°Π½ΠΈΠΌΠ°Π΅Ρ‚ 3Β ΠΌΠΈΠ½


Π’ этой ΡΡ‚Π°Ρ‚ΡŒΠ΅

Класс XML DOM являСтся прСдставлСниСм XML-Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π° Π² памяти.The XML Document Object Model (DOM) class is an in-memory representation of an XML document. МодСль DOM позволяСт Ρ‡ΠΈΡ‚Π°Ρ‚ΡŒ, ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Ρ‚ΡŒ ΠΈ ΠΈΠ·ΠΌΠ΅Π½ΡΡ‚ΡŒ XML-Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹ΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ.The DOM allows you to programmatically read, manipulate, and modify an XML document. Класс XmlReader Ρ‚Π°ΠΊΠΆΠ΅ Ρ‡ΠΈΡ‚Π°Π΅Ρ‚ XML, Π½ΠΎ прСдоставляСт Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ доступ для чтСния Π±Π΅Π· ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΈ ΠΊΡΡˆΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡ.The XmlReader class also reads XML; however, it provides non-cached, forward-only, read-only access. Π­Ρ‚ΠΎ Π·Π½Π°Ρ‡ΠΈΡ‚, Ρ‡Ρ‚ΠΎ XmlReader Π½Π΅ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡ‚ ΠΈΠ·ΠΌΠ΅Π½ΡΡ‚ΡŒ значСния Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ΠΎΠ² ΠΈΠ»ΠΈ содСрТимоС элСмСнта, Π° Ρ‚Π°ΠΊΠΆΠ΅ Π²ΡΡ‚Π°Π²Π»ΡΡ‚ΡŒ ΠΈ ΡƒΠ΄Π°Π»ΡΡ‚ΡŒ ΡƒΠ·Π»Ρ‹.This means that there are no capabilities to edit the values of an attribute or content of an element, or the ability to insert and remove nodes with the XmlReader. ИзмСнСниС — основная функция ΠΌΠΎΠ΄Π΅Π»ΠΈ DOM.Editing is the primary function of the DOM. Π­Ρ‚ΠΎ стандартизованный, структурированный способ прСдставлСния XML-Π΄Π°Π½Π½Ρ‹Ρ… Π² памяти, хотя Π½Π° самом Π΄Π΅Π»Π΅ Π΄Π°Π½Π½Ρ‹Π΅ XML хранятся Π² Ρ„Π°ΠΉΠ»Π°Ρ… ΠΈ ΠΏΠ΅Ρ€Π΅ΡΡ‹Π»Π°ΡŽΡ‚ΡΡ ΠΈΠ· Π΄Ρ€ΡƒΠ³ΠΈΡ… ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² Π² строковом Π²ΠΈΠ΄Π΅.It is the common and structured way that XML data is represented in memory, although the actual XML data is stored in a linear fashion when in a file or coming in from another object. Π”Π°Π»Π΅Π΅ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ XML-Π΄Π°Π½Π½Ρ‹Ρ….The following is XML data.

Π’Ρ…ΠΎΠ΄Π½Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅Input

<?xml version="1.0"?>
  <books>
    <book>
        <author>Carson</author>
        <price format="dollar">31.95</price>
        <pubdate>05/01/2001</pubdate>
    </book>
    <pubinfo>
        <publisher>MSPress</publisher>
        <state>WA</state>
    </pubinfo>
  </books>

Π”Π°Π»Π΅Π΅ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ, какая структура Π±ΡƒΠ΄Π΅Ρ‚ создана Π² памяти, ΠΊΠΎΠ³Π΄Π° эти XML-Π΄Π°Π½Π½Ρ‹Π΅ ΡΡ‡ΠΈΡ‚Ρ‹Π²Π°ΡŽΡ‚ΡΡ Π² модСль структуры DOM. The following illustration shows how memory is structured when this XML data is read into the DOM structure.

Π‘Ρ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Π° XML-Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π° XML document structure

ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΊΡ€ΡƒΠ³ Π½Π° этой ΠΈΠ»Π»ΡŽΡΡ‚Ρ€Π°Ρ†ΠΈΠΈ прСдставляСт собой ΡƒΠ·Π΅Π» Π² структурС XML-Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°, Π½Π°Π·Ρ‹Π²Π°Π΅ΠΌΡ‹ΠΉ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠΌ XmlNode.Within the XML document structure, each circle in this illustration represents a node, which is called an XmlNode object. ΠžΠ±ΡŠΠ΅ΠΊΡ‚ XmlNode являСтся Π±Π°Π·ΠΎΠ²Ρ‹ΠΌ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠΌ Π΄Π΅Ρ€Π΅Π²Π° DOM.The XmlNode object is the basic object in the DOM tree. Класс XmlDocument, Ρ€Π°ΡΡˆΠΈΡ€ΡΡŽΡ‰ΠΈΠΉ класс XmlNode, ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ для ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ Π½Π°Π΄ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΎΠΌ Π² Ρ†Π΅Π»ΠΎΠΌ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, для Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ Π΅Π³ΠΎ Π² ΠΏΠ°ΠΌΡΡ‚ΡŒ ΠΈΠ»ΠΈ сохранСния XML Π² Ρ„Π°ΠΉΠ»).The XmlDocument class, which extends XmlNode, supports methods for performing operations on the document as a whole (for example, loading it into memory or saving the XML to a file. ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, XmlDocument прСдоставляСт возмоТности для просмотра ΡƒΠ·Π»ΠΎΠ² всСго XML-Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π° ΠΈ выполнСния ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ Π½Π°Π΄ Π½ΠΈΠΌΠΈ. In addition, XmlDocument provides a means to view and manipulate the nodes in the entire XML document. И XmlNode, ΠΈ XmlDocument ΠΎΠ±Π»Π°Π΄Π°ΡŽΡ‚ ΡƒΠ»ΡƒΡ‡ΡˆΠ΅Π½Π½ΠΎΠΉ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒΡŽ, Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½Π½ΠΎΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒΡŽ ΠΈ содСрТат ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ ΠΈ свойства, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π΅.Both XmlNode and XmlDocument have performance and usability enhancements and have methods and properties to:

  • ΠŸΠΎΠ»ΡƒΡ‡Π°Ρ‚ΡŒ доступ ΠΊ DOM-спСцифичным ΡƒΠ·Π»Π°ΠΌ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΠΊ ΡƒΠ·Π»Π°ΠΌ элСмСнтов, ΡƒΠ·Π»Π°ΠΌ ссылок Π½Π° сущности ΠΈ Ρ‚.Β ΠΏ., ΠΈ ΠΈΠ·ΠΌΠ΅Π½ΡΡ‚ΡŒ эти ΡƒΠ·Π»Ρ‹.Access and modify nodes specific to the DOM, such as element nodes, entity reference nodes, and so on.

  • ΠŸΠΎΠ»ΡƒΡ‡Π°Ρ‚ΡŒ Ρ†Π΅Π»Ρ‹Π΅ ΡƒΠ·Π»Ρ‹ ΠΏΠΎΠΌΠΈΠΌΠΎ содСрТащСйся Π² Π½ΠΈΡ… ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ тСкста Π² ΡƒΠ·Π»Π΅ элСмСнта.Retrieve entire nodes, in addition to the information the node contains, such as the text in an element node.

    ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅

    Для ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ Π½Π΅ трСбуСтся структуризация ΠΈΠ»ΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅, прСдоставляСмыС модСлью DOM, классы XmlReader ΠΈ XmlWriter обСспСчат ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ²Ρ‹ΠΉ доступ ΠΊ XML Π±Π΅Π· ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΈ ΠΊΡΡˆΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡ. If an application does not require the structure or editing capabilities provided by the DOM, the XmlReader and XmlWriter classes provide non-cached, forward-only stream access to XML. Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ свСдСния см. Π² Ρ€Π°Π·Π΄Π΅Π»Π°Ρ… XmlReader ΠΈ XmlWriter.For more information, see XmlReader and XmlWriter.

ΠžΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ Node ΠΎΠ±Π»Π°Π΄Π°ΡŽΡ‚ Π½Π°Π±ΠΎΡ€ΠΎΠΌ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² ΠΈ свойств, Π° Ρ‚Π°ΠΊΠΆΠ΅ Ρ…ΠΎΡ€ΠΎΡˆΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Ρ… Π±Π°Π·ΠΎΠ²Ρ‹Ρ… характСристик.Node objects have a set of methods and properties, as well as basic and well-defined characteristics. Π’ΠΎΡ‚ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΈΠ· этих характСристик:Some of these characteristics are:

  • Π£ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΡƒΠ·Π»Π° Π΅ΡΡ‚ΡŒ ΠΎΠ΄ΠΈΠ½ Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΈΠΉ ΡƒΠ·Π΅Π», Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ ΡƒΠ·Π΅Π», находящийся нСпосрСдствСнно Π½Π°Π΄ Π΄Π°Π½Π½Ρ‹ΠΌ.Nodes have a single parent node, a parent node being a node directly above them. ЕдинствСнный ΡƒΠ·Π΅Π», Π½Π΅ ΠΈΠΌΠ΅ΡŽΡ‰ΠΈΠΉ родитСля — ΠΊΠΎΡ€Π½Π΅Π²ΠΎΠΉ ΡƒΠ·Π΅Π» Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ это ΡƒΠ·Π΅Π» Π²Π΅Ρ€Ρ…Π½Π΅Π³ΠΎ уровня, содСрТащий сам Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ ΠΈ Π΅Π³ΠΎ Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚Ρ‹.The only nodes that do not have a parent is the Document root, as it is the top-level node and contains the document itself and document fragments.

  • Π£ Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²Π° ΡƒΠ·Π»ΠΎΠ² ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ нСсколько Π΄ΠΎΡ‡Π΅Ρ€Π½ΠΈΡ… ΡƒΠ·Π»ΠΎΠ², Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ ΡƒΠ·Π»ΠΎΠ², располоТСнных нСпосрСдствСнно ΠΏΠΎΠ΄ Π½ΠΈΠΌΠΈ.Most nodes can have multiple child nodes, which are nodes directly below them. Π”Π°Π»Π΅Π΅ слСдуСт список Ρ‚ΠΈΠΏΠΎΠ² ΡƒΠ·Π»ΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠ³ΡƒΡ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ Π΄ΠΎΡ‡Π΅Ρ€Π½ΠΈΠ΅ ΡƒΠ·Π»Ρ‹:The following is a list of node types that can have child nodes.

    • DocumentDocument

    • DocumentFragmentDocumentFragment

    • EntityReferenceEntityReference

    • Π­Π»Π΅ΠΌΠ΅Π½Ρ‚Element

    • Attribute (XElement Dynamic Property) (Attribute (динамичСскоС свойство XElement))Attribute

    Π£Π·Π»Ρ‹ XmlDeclaration, Notation, Entity, CDATASection, Text, Comment, ProcessingInstruction ΠΈ DocumentType Π½Π΅ ΠΌΠΎΠ³ΡƒΡ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ Π΄ΠΎΡ‡Π΅Ρ€Π½ΠΈΡ… ΡƒΠ·Π»ΠΎΠ². The XmlDeclaration, Notation, Entity, CDATASection, Text, Comment, ProcessingInstruction, and DocumentType nodes do not have child nodes.

  • Π£Π·Π»Ρ‹, находящиСся Π½Π° ΠΎΠ΄Π½ΠΎΠΌ ΡƒΡ€ΠΎΠ²Π½Π΅ наслСдования, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΡƒΠ·Π»Ρ‹ book ΠΈ pubinfo Π½Π° нашСй схСмС, Π½Π°Π·Ρ‹Π²Π°ΡŽΡ‚ΡΡ ΠΎΠ΄Π½ΠΎΡƒΡ€ΠΎΠ²Π½Π΅Π²Ρ‹ΠΌΠΈ.Nodes that are at the same level, represented in the diagram by the book and pubinfo nodes, are siblings.

Одна ΠΈΠ· характСристик ΠΌΠΎΠ΄Π΅Π»ΠΈ DOM — способ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ΠΎΠ².One characteristic of the DOM is how it handles attributes. Атрибуты Π½Π΅ ΡΠ²Π»ΡΡŽΡ‚ΡΡ ΡƒΠ·Π»Π°ΠΌΠΈ, состоящими Π² Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΈΡ…, Π΄ΠΎΡ‡Π΅Ρ€Π½ΠΈΡ… ΠΈ ΠΎΠ΄Π½ΠΎΡƒΡ€ΠΎΠ²Π½Π΅Π²Ρ‹Ρ… связях.Attributes are not nodes that are part of the parent, child, and sibling relationships. Атрибуты ΡΡ‡ΠΈΡ‚Π°ΡŽΡ‚ΡΡ ΡΠΎΠ±ΡΡ‚Π²Π΅Π½Π½ΠΎΡΡ‚ΡŒΡŽ ΡƒΠ·Π»Π° элСмСнта ΠΈ ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡŽΡ‚ собой ΠΏΠ°Ρ€Ρƒ «имя-Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅Β».Attributes are considered a property of the element node and are made up of a name and a value pair. НапримСр, Ссли XML-Π΄Π°Π½Π½Ρ‹Π΅ ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡŽΡ‚ собой ΠΊΠΎΠ½ΡΡ‚Ρ€ΡƒΠΊΡ†ΠΈΡŽ format="dollar, ΡΠ²ΡΠ·Π°Π½Π½ΡƒΡŽ с элСмСнтом price, слово format являСтся ΠΈΠΌΠ΅Π½Π΅ΠΌ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Π°, Π° Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Π° format являСтся dollar.For example, if you have XML data consisting of format="dollar» associated with the element price, the word format is the name, and the value of the format attribute is dollar. Π§Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ format="dollar" ΡƒΠ·Π»Π° price, Π²ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ΡΡŒ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠΌ GetAttribute, ΠΊΠΎΠ³Π΄Π° курсор располоТСн Π² ΡƒΠ·Π»Π΅ элСмСнта price.To retrieve the format="dollar" attribute of the price node, you call the GetAttribute method when the cursor is located at the price element node. Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ свСдСния см. Π² ΡΡ‚Π°Ρ‚ΡŒΠ΅ Доступ ΠΊ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Π°ΠΌ Π² ΠΌΠΎΠ΄Π΅Π»ΠΈ DOM.For more information, see Accessing Attributes in the DOM.

По ΠΌΠ΅Ρ€Π΅ считывания XML-Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π° Π² ΠΏΠ°ΠΌΡΡ‚ΡŒ ΡΠΎΠ·Π΄Π°ΡŽΡ‚ΡΡ ΡƒΠ·Π»Ρ‹.As XML is read into memory, nodes are created. Π£Π·Π»Ρ‹ Π±Ρ‹Π²Π°ΡŽΡ‚ Ρ€Π°Π·Π½Ρ‹Ρ… Ρ‚ΠΈΠΏΠΎΠ². However, not all nodes are the same type. ΠŸΡ€Π°Π²ΠΈΠ»Π° ΠΈ синтаксис XML-элСмСнта ΠΎΡ‚Π»ΠΈΡ‡Π°ΡŽΡ‚ΡΡ ΠΎΡ‚ ΠΏΡ€Π°Π²ΠΈΠ» ΠΈ синтаксиса инструкции ΠΏΠΎ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅.An element in XML has different rules and syntax than a processing instruction. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ ΠΏΠΎ ΠΌΠ΅Ρ€Π΅ считывания Ρ€Π°Π·Π½ΠΎΠΎΠ±Ρ€Π°Π·Π½Ρ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ… ΠΊΠ°ΠΆΠ΄ΠΎΠΌΡƒ ΡƒΠ·Π»Ρƒ присваиваСтся Ρ‚ΠΈΠΏ.Therefore, as various data is read, a node type is assigned to each node. Π’ΠΈΠΏ ΡƒΠ·Π»Π° опрСдСляСт Π΅Π³ΠΎ характСристики ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ.This node type determines the characteristics and functionality of the node.

Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ свСдСния ΠΎ Ρ‚ΠΈΠΏΠ°Ρ… ΡƒΠ·Π»ΠΎΠ², создаваСмых Π² памяти, см. Π² ΡΡ‚Π°Ρ‚ΡŒΠ΅ Π’ΠΈΠΏΡ‹ XML-ΡƒΠ·Π»ΠΎΠ².For more information on the types of nodes generated in memory, see Types of XML Nodes. Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ свСдСния ΠΎΠ± ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°Ρ…, создаваСмых Π² Π΄Π΅Ρ€Π΅Π²Π΅ ΡƒΠ·Π»ΠΎΠ², см. Π² ΡΡ‚Π°Ρ‚ΡŒΠ΅ БопоставлСниС ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎΠΉ ΠΈΠ΅Ρ€Π°Ρ€Ρ…ΠΈΠΈ с XML-Π΄Π°Π½Π½Ρ‹ΠΌΠΈ.For more information on the objects created in the node tree, see Mapping the Object Hierarchy to XML Data.

ΠšΠΎΡ€ΠΏΠΎΡ€Π°Ρ†ΠΈΡ ΠœΠ°ΠΉΠΊΡ€ΠΎΡΠΎΡ„Ρ‚ Ρ€Π°ΡΡˆΠΈΡ€ΠΈΠ»Π° API-интСрфСйсы, доступныС Π² DOM ΡƒΡ€ΠΎΠ²Π½Π΅ΠΉ 1 ΠΈ 2 W3C, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ±Π»Π΅Π³Ρ‡ΠΈΡ‚ΡŒ Ρ€Π°Π±ΠΎΡ‚Ρƒ с XML-Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°ΠΌΠΈ.Microsoft has extended the APIs that are available in the World Wide Web Consortium (W3C) DOM Level 1 and Level 2 to make it easier to work with an XML document. Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ классы, ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ ΠΈ свойства ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ совмСстимы со стандартами W3C ΠΈ Π΄ΠΎΠ±Π°Π²Π»ΡΡŽΡ‚ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΡƒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ ΠΏΠΎ ΡΡ€Π°Π²Π½Π΅Π½ΠΈΡŽ с возмоТностями W3C XML DOM.While fully supporting the W3C standards, the additional classes, methods, and properties add functionality beyond what can be done using the W3C XML DOM. НовыС классы ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ доступ ΠΊ рСляционным Π΄Π°Π½Π½Ρ‹ΠΌ, ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‚ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ синхронизации с Π΄Π°Π½Π½Ρ‹ΠΌΠΈ ADO.NET, ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ дСлая эти Π΄Π°Π½Π½Ρ‹Π΅ доступными Π² Π²ΠΈΠ΄Π΅ XML.New classes enable you to access relational data, giving you methods for synchronizing with ADO.NET data, simultaneously exposing data as XML. Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ свСдСния см. Π² ΡΡ‚Π°Ρ‚ΡŒΠ΅ ΠΎ синхронизации DataSet с XmlDataDocument.For more information, see Synchronizing a DataSet with an XmlDataDocument.

МодСль DOM Ρ‡Ρ€Π΅Π·Π²Ρ‹Ρ‡Π°ΠΉΠ½ΠΎ ΠΏΠΎΠ»Π΅Π·Π½Π° для считывания XML-Π΄Π°Π½Π½Ρ‹Ρ… Π² ΠΏΠ°ΠΌΡΡ‚ΡŒ, измСнСния ΠΈΡ… структуры, добавлСния ΠΈ удалСния ΡƒΠ·Π»ΠΎΠ², измСнСния Π΄Π°Π½Π½Ρ‹Ρ…, ΠΏΡ€ΠΈΠ½Π°Π΄Π»Π΅ΠΆΠ°Ρ‰ΠΈΡ… ΡƒΠ·Π»Ρƒ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, тСкста, содСрТащСгося Π² Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π΅).The DOM is most useful for reading XML data into memory to change its structure, to add or remove nodes, or to modify the data held by a node as in the text contained by an element. Однако ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‚ ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ классы, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π² Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ситуациях Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚ быстрСС ΠΌΠΎΠ΄Π΅Π»ΠΈ DOM.However, other classes are available that are faster than the DOM in other scenarios. ΠšΠ»Π°ΡΡΡ‹ XmlReader ΠΈ XmlWriter ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‚ быстрый ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ²Ρ‹ΠΉ доступ ΠΊ XML Π±Π΅Π· ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΈ ΠΊΡΡˆΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡ.For fast, non-cached, forward-only stream access to XML, use the XmlReader and XmlWriter. Если Π²Π°ΠΌ Π½ΡƒΠΆΠ΅Π½ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ»ΡŒΠ½Ρ‹ΠΉ доступ с модСлью курсора ΠΈ XPath, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ класс XPathNavigator.If you need random access with a cursor model and XPath, use the XPathNavigator class.

Π‘ΠΌ. Ρ‚Π°ΠΊΠΆΠ΅See also

Java ME Clients for XML Web Services

Mobile Devices and Web Services

7th WSEAS International Conference on APPLIED COMPUTER SCIENCE, Venice, Italy, November 21-23, 2007 322 Mobile Devices and Web Services TOMAS KOZEL, ANTONIN SLABY Univerzity of Hradec Kralove Department

More information

Mobile Operating Systems. Week I

Mobile Operating Systems Week I Overview Introduction Mobile Operating System Structure Mobile Operating System Platforms Java ME Platform Palm OS Symbian OS Linux OS Windows Mobile OS BlackBerry OS iphone

More information

Development of Java ME

Y39PDA Development of Java ME application České vysoké učení technické v Praze Fakulta ElektrotechnickÑ Content What is Java ME Low Level a High Level API What is JSR LBS Java ME app. life-cycle 2/29 Is

More information

Location-Based Information Systems

Location-Based Information Systems Developing Real-Time Tracking Applications Miguel A Labrador Alfredo J Perez Pedro M Wightman CRC Press Taylor & Francis Group Boca Raton London New York CRC Press Is

More information

1 Mobile Data Mining on Small

1 Mobile Data Mining on Small Devices Through Web Services Domenico Talia and Paolo Trunfio DEIS, University of Calabria Via Pietro Bucci 41C 87036 Rende (CS), Italy 1.1 INTRODUCTION Analysis of data is

More information

Mobile Application Development

Mobile Application Development Development Process and Portability Christoph Denzler University of Applied Sciences Northwestern Switzerland Institute for Mobile and Distributed Systems Learning Target

More information

WEB SERVICES. Revised 9/29/2015

WEB SERVICES Revised 9/29/2015 This Page Intentionally Left Blank Table of Contents Web Services using WebLogic… 1 Developing Web Services on WebSphere… 2 Developing RESTful Services in Java v1.1…

More information

PROGRESS Portal Access Whitepaper

PROGRESS Portal Access Whitepaper Maciej Bogdanski, MichaΕ‚ Kosiedowski, Cezary Mazurek, Marzena Rabiega, Malgorzata Wolniewicz Poznan Supercomputing and Networking Center April 15, 2004 1 Introduction

More information

Mobile and Dynamic Web Services

Mobile and Dynamic Web Services Elena SΓ‘nchez-Nielsen, Sandra MartΓ­n-Ruiz, Jorge RodrΓ­guez-Pedrianes Dpto. E.I.O. y ComputaciΓ³n Escuela TΓ©cnica Superior de IngenierΓ­a InformΓ‘tica Universidad de La Laguna,

More information

Developing Java Web Services

Page 1 of 5 Developing Java Web Services Hands On 35 Hours Online 5 Days In-Classroom A comprehensive look at the state of the art in developing interoperable web services on the Java EE platform. Students

More information

Java Web Services Training

Java Web Services Training Duration: 5 days Class Overview A comprehensive look at the state of the art in developing interoperable web services on the Java EE 6 platform. Students learn the key standards

More information

Microsoft.NET Mobile Web

Π‘ΠͺΠ›Π“ΠΠ Π‘ΠšΠ ΠΠšΠΠ”Π•ΠœΠ˜Π― НА ΠΠΠ£ΠšΠ˜Π’Π•. BULGARIAN ACADEMY OF SCIENCES ΠŸΠ ΠžΠ‘Π›Π•ΠœΠ˜ НА Π’Π•Π₯ΠΠ˜Π§Π•Π‘ΠšΠΠ’Π ΠšΠ˜Π‘Π•Π ΠΠ•Π’Π˜ΠšΠ И Π ΠžΠ‘ΠžΠ’Π˜ΠšΠΠ’Π, 54 PROBLEMS OF ENGINEERING CYBERNETICS AND ROBOTICS, 54 Бофия. 2004. Sofia Microsoft.NET

More information

Introduction to Testing Webservices

Introduction to Testing Webservices Author: Vinod R Patil Abstract Internet revolutionized the way information/data is made available to general public or business partners. Web services complement this

More information

Creating Web Services in NetBeans

Creating Web Services in NetBeans Fulvio Frati [email protected] Sesar Lab http://ra.crema.unimi.it 1 Outline Web Services Overview Creation of a Web Services Server Creation of different Web Services

More information

2sms SMS API Overview

2sms SMS API Overview Do you, or your customers, use any of the following software solutions in your business? If the answer is Yes, then 2sms provides the extensive SMS API Library that gives your software

More information

Server Monitoring Using Android Devices

Server Monitoring Using Android Devices Negar Shakeribehbahani, Nor Azlina Abd Rahman, Kamalanathan Shanmugam, Payam Nami Asia Pacific University of Technology and Innovation Kuala Lumpur, Malaysia [email protected]

More information

NetBeans IDE Field Guide

NetBeans IDE Field Guide Copyright 2005 Sun Microsystems, Inc. All rights reserved. Table of Contents Extending J2EE Applications with Web Services…1 Consuming Existing Web Services…2 Implementing

More information

ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠ² дСскрипторов развСртывания web.xml — Mkyong.com

Автор mkyong |

ΠŸΡ€ΠΎΡΠΌΠΎΡ‚Ρ€Π΅Π½ΠΎ: 282 814 | +180 pv / w

web.xml — это Ρ„Π°ΠΉΠ» ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ, ΠΎΠΏΠΈΡΡ‹Π²Π°ΡŽΡ‰ΠΈΠΉ, ΠΊΠ°ΠΊ слСдуСт Ρ€Π°Π·Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒ Π²Π΅Π±-ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅. Π’ΠΎΡ‚ 5 web.xml ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠ², просто для справки.

1. ДСскриптор развСртывания сСрвлСта 3.1

XML-схСма Java EE 7, пространство ΠΈΠΌΠ΅Π½ http://xmlns.jcp.org/xml/ns/javaee/

web.xml

 


  

2. ДСскриптор развСртывания сСрвлСта 3.0

XML-схСма Java EE 6, пространство ΠΈΠΌΠ΅Π½ — http://java.sun.com/xml/ns/javaee

web.xml

 
<Π²Π΅Π±-ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ xmlns = "http: // java.sun.com/xml/ns/javaee "
xmlns: xsi = "http://www.w3.org/2001/XMLSchema-instance"
xsi: schemaLocation = "http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd "
version = "3.0">

  

3. ДСскриптор развСртывания сСрвлСта 2.5

XML-схСма Java EE 5, пространство ΠΈΠΌΠ΅Π½ http://java.sun.com/xml/ns/javaee

web.xml

 
<Π²Π΅Π±-ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ xmlns = "http://java.sun.com/xml/ns/javaee"
xmlns: xsi = "http: // www.w3.org/2001/XMLSchema-instance "
xsi: schemaLocation = "http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd "
version = "2.5">

  

4. ДСскриптор развСртывания сСрвлСта 2.4

Π‘Ρ…Π΅ΠΌΠ° XML J2EE 1.4, пространство ΠΈΠΌΠ΅Π½ http://java.sun.com/xml/ns/j2ee

web.xml

 
<Π²Π΅Π±-ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ xmlns = "http://java.sun.com/xml/ns/j2ee"
xmlns: xsi = "http://www.w3.org/2001/XMLSchema-instance"
xsi: schemaLocation = "http: // java.sun.com/xml/ns/j2ee
http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd "
version = "2.4">

   Π’Π΅Π±-ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Servlet 2.4 

  

5. ДСскриптор развСртывания сСрвлСта 2.3

Π‘Ρ…Π΅ΠΌΠ° DTD J2EE 1.3. Π­Ρ‚ΠΎΡ‚ Ρ„Π°ΠΉΠ» web.xml слишком старый, Π½Π°ΡΡ‚ΠΎΡΡ‚Π΅Π»ΡŒΠ½ΠΎ рСкомСндуСтся ΠΎΠ±Π½ΠΎΠ²ΠΈΡ‚ΡŒ Π΅Π³ΠΎ.

web.xml

 
Π’Π΅Π±-ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ 


   Π’Π΅Π±-ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Servlet 2.3 

  

Π’Π°ΠΆΠ½Ρ‹Π΅ измСнСния Π² Java Servlet
ΠŸΠΎΡΠ΅Ρ‚ΠΈΡ‚Π΅ эту Π²ΠΈΠΊΠΈ ΠΏΠΎ сСрвлСтам, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ сводку Π²Π°ΠΆΠ½Ρ‹Ρ… ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ с Servlet 2.3 Π΄ΠΎ 3.0.

Бсылки

  1. Wikipedia — ДСскриптор развСртывания
  2. Wikipedia — Java Servlet Wiki
  3. Oracle — докумСнтация web.xml
  4. Oracle — схСмы XML для дСскрипторов развСртывания Java EE
  5. Google App Engine web.xml для Java
  6. JSR-000315 Π‘Π΅Ρ€Π²Π»Π΅Ρ‚ JavaTM 3.0

web.xml

Π Π΅Π΄Π°ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π½Π° GitHub

Π€Π°ΠΉΠ» дСскриптора Π²Π΅Π±-прилоТСния web.xml прСдставляСт собой ядро ​​вСб-прилоТСния Java, поэтому ΠΎΠ½ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΈΡ‚
Ρ‡Ρ‚ΠΎ ΠΎΠ½ Ρ‚Π°ΠΊΠΆΠ΅ являСтся Ρ‡Π°ΡΡ‚ΡŒΡŽ ядра Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΠ° Struts. Π’ Ρ„Π°ΠΉΠ»Π΅ web.xml Struts опрСдСляСт свой FilterDispatcher,
класс Servlet Filter, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΡƒΠ΅Ρ‚ структуру Struts ΠΈ ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π΅Ρ‚ всС запросы. Π­Ρ‚ΠΎΡ‚ Ρ„ΠΈΠ»ΡŒΡ‚Ρ€ ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ
ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²Π»ΠΈΡΡŽΡ‚ Π½Π° Ρ‚ΠΎ, ΠΊΠ°ΠΊΠΈΠ΅ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ Ρ„Π°ΠΉΠ»Ρ‹ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ Π·Π°Π³Ρ€ΡƒΠΆΠ°ΡŽΡ‚ΡΡ ΠΈ ΠΊΠ°ΠΊ Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊ
Π΄ΠΎΠ»ΠΆΠ΅Π½ вСсти сСбя.

ΠŸΡ€ΠΎΡΡ‚ΠΎΠΉ ΠΏΡ€ΠΈΠΌΠ΅Ρ€

Настройка web.xml для ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹ — это вопрос добавлСния Ρ„ΠΈΠ»ΡŒΡ‚Ρ€Π° ΠΈ сопоставлСния Ρ„ΠΈΠ»ΡŒΡ‚Ρ€ΠΎΠ².

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ Ρ„ΠΈΠ»ΡŒΡ‚Ρ€Π° (web.xml)

  <вСрсия Π²Π΅Π±-прилоТСния = "2.4"
xmlns = "http://java.sun.com/xml/ns/j2ee"
xmlns: xsi = "http://www.w3.org/2001/XMLSchema-instance"
xsi: schemaLocation = "http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">

    <Ρ„ΠΈΠ»ΡŒΡ‚Ρ€>
         struts2 
         ΠΎΡ€Π³.apache.struts2.dispatcher.filter.StrutsPrepareAndExecuteFilter 
    

    
         struts2 
         / * 
    

    


  

ИзмСнСн ΠΏΠ°ΠΊΠ΅Ρ‚ Ρ„ΠΈΠ»ΡŒΡ‚Ρ€ΠΎΠ² Π² Struts> = 2.5

Начиная со Struts 2.5 всС Ρ„ΠΈΠ»ΡŒΡ‚Ρ€Ρ‹ Π±Ρ‹Π»ΠΈ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Ρ‰Π΅Π½Ρ‹ Π² Π²Π΅Ρ€Ρ…Π½ΠΈΠΉ ΠΏΠ°ΠΊΠ΅Ρ‚, Ссли Π²Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅ ΡΡ‚Π°Ρ€ΡƒΡŽ Π²Π΅Ρ€ΡΠΈΡŽ, Π²Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ старый ΠΏΠ°ΠΊΠ΅Ρ‚,
см. ΠΏΡ€ΠΈΠΌΠ΅Ρ€:

  <вСрсия Π²Π΅Π±-прилоТСния = "2.4 дюйма
xmlns = "http://java.sun.com/xml/ns/j2ee"
xmlns: xsi = "http://www.w3.org/2001/XMLSchema-instance"
xsi: schemaLocation = "http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">

    <Ρ„ΠΈΠ»ΡŒΡ‚Ρ€>
         struts2 
         org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter 
    ...
  

ИзмСнСна структура Ρ„ΠΈΠ»ΡŒΡ‚Ρ€Π° Π² стойках> = 2.1.3

Π§Ρ‚ΠΎΠ±Ρ‹ Ρ€Π°Π·Π΄Π΅Π»ΠΈΡ‚ΡŒ Ρ„Π°Π·Ρ‹ диспСтчСра, FilterDispatcher устарСл, начиная с Struts 2.1.3. Если Π²Ρ‹ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚Π΅ со старыми
вСрсии, Π²Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ

  ...
    <Ρ„ΠΈΠ»ΡŒΡ‚Ρ€>
         struts2 
         org.apache.struts2.dispatcher.FilterDispatcher 
    ...
  

Π‘ΠΌ. Плагин SiteMesh, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡƒΠ·Π½Π°Ρ‚ΡŒ, ΠΊΠΎΠ³Π΄Π° ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Π΅ Ρ„ΠΈΠ»ΡŒΡ‚Ρ€Ρ‹ для ΠΏΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²ΠΊΠΈ
ΠΈ этап исполнСния

Π˜ΡΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Π΅ URL-адрСса

Π’ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΌ Π²Ρ‹ΡˆΠ΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΌΡ‹ сопоставили диспСтчСр Struts 2 с / * , поэтому Struts 2 ΠΈΠΌΠ΅Π΅Ρ‚ Ρ‚Ρ€Π΅Ρ‰ΠΈΠ½Ρƒ Π½Π° всСх входящих запросах.Π­Ρ‚ΠΎ связано с Ρ‚Π΅ΠΌ, Ρ‡Ρ‚ΠΎ Struts 2 обслуТиваСт статичСский ΠΊΠΎΠ½Ρ‚Π΅Π½Ρ‚ ΠΈΠ· своих Ρ„Π°ΠΉΠ»ΠΎΠ² jar, Π²ΠΊΠ»ΡŽΡ‡Π°Ρ Ρ„Π°ΠΉΠ»Ρ‹ JavaScript Dojo (ΠΏΡ€ΠΈ использовании S2.0,
ΠΈΠ»ΠΈ ΠΏΠ»Π°Π³ΠΈΠ½ Dojo Π² S2.1 +) ΠΈ ΡˆΠ°Π±Π»ΠΎΠ½Ρ‹ FreeMarker для Ρ‚Π΅Π³ΠΎΠ² Struts 2, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΡΠΎΠ·Π΄Π°ΡŽΡ‚ HTML.

Если ΠΌΡ‹ ΠΈΠ·ΠΌΠ΅Π½ΠΈΠΌ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ Ρ„ΠΈΠ»ΡŒΡ‚Ρ€Π° Π½Π° Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ Π΄Ρ€ΡƒΠ³ΠΎΠ΅, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ /*.html , ΠΌΡ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ это ΡƒΡ‡Π΅ΡΡ‚ΡŒ ΠΈ ΠΈΠ·Π²Π»Π΅Ρ‡ΡŒ
ΠΊΠΎΠ½Ρ‚Π΅Π½Ρ‚, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ обслуТиваСтся ΠΈΠ· jar-Ρ„Π°ΠΉΠ»ΠΎΠ² Struts 2, ΠΈΠ»ΠΈ ΠΊΠ°ΠΊΠΎΠ³ΠΎ-Π»ΠΈΠ±ΠΎ Π΄Ρ€ΡƒΠ³ΠΎΠ³ΠΎ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ.

Начиная с Struts 2.1.7, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²ΠΈΡ‚ΡŒ список шаблонов, Ρ€Π°Π·Π΄Π΅Π»Π΅Π½Π½Ρ‹Ρ… запятыми, для ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΏΡ€ΠΈ сопоставлСнии с
URL-адрСс запроса, ΠΌΠΈΠΌΠΎ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΡ€ΠΎΡ…ΠΎΠ΄ΠΈΡ‚ΡŒ Ρ„ΠΈΠ»ΡŒΡ‚Ρ€.Π­Ρ‚ΠΎ дСлаСтся с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π° ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ struts.action.excludePattern,
Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π² вашСм struts.xml:

  <распорки>
    
    ...


  

Taglib, ΠΏΡ€ΠΈΠΌΠ΅Ρ€

Как ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ, настройка Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ Ρ‚Π΅Π³ΠΎΠ² Π½Π΅ трСбуСтся ΠΈ Π½Π΅ рСкомСндуСтся. Taglib Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ Π² struts-core.jar , ΠΈ
ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠΈΡ‚ это автоматичСски.

Если ΠΏΠΎ ΠΊΠ°ΠΊΠΎΠΉ-Π»ΠΈΠ±ΠΎ ΠΏΡ€ΠΈΡ‡ΠΈΠ½Π΅ конфигурация Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ Ρ‚Π΅Π³ΠΎΠ² Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠ° Π² web.xml, ΠΈΠ·Π²Π»Π΅ΠΊΠΈΡ‚Π΅ Ρ„Π°ΠΉΠ» TLD ΠΈΠ· struts-core.jar
META-INF ΠΈ Π΄ΠΎΠ±Π°Π²ΡŒΡ‚Π΅ элСмСнт taglib Π² web.xml .

  
    

    
        / с 
        /WEB-INF/struts-tags.tld 
    

  

ΠŸΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΠ΅ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ FileManager ΠΈ FileManagerFactory

Если Π΅ΡΡ‚ΡŒ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΡΡ‚ΡŒ Π² ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠΉ Ρ„Π°ΠΉΠ»ΠΎΠ²ΠΎΠΉ систСмы сСрвСра ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€,VFS Π² JBoss), Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ свой собствСнный
вСрсия FileManager. Но ΠΎΠ½ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ зарСгистрирован Π² Β«Π½Π°Ρ‡Π°Π»Π΅Β» для ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΈ Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎΠΉ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ всСго Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΠ°.

Π§Ρ‚ΠΎΠ±Ρ‹ Π·Π°Ρ€Π΅Π³ΠΈΡΡ‚Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ свой собствСнный FileManger, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ это с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ , ΠΊΠ°ΠΊ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Π½ΠΈΠΆΠ΅:

  <Ρ„ΠΈΠ»ΡŒΡ‚Ρ€>
      struts2 
      org.apache.struts2.dispatcher.filter.StrutsPrepareAndExecuteFilter 
     
         <имя-ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°> распорки.fileManager 
          com.company.MyFileManager 
     

  

Π’Ρ‹ Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π·Π°Ρ€Π΅Π³ΠΈΡΡ‚Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ свой собствСнный FileManagerFactory с , см. ΠŸΡ€ΠΈΠΌΠ΅Ρ€:

  <Ρ„ΠΈΠ»ΡŒΡ‚Ρ€>
      struts2 
      org.apache.struts2.dispatcher.filter.StrutsPrepareAndExecuteFilter 
     
         <имя-ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°> распорки.fileManagerFactory 
          com.company.MyFileManagerFactory 
     

  

ВзглянитС Π½Π° Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ — DefaultFileManager.java ΠΈ DefaultFileManagerFactory.java , Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ½ΡΡ‚ΡŒ, ΠΊΠ°ΠΊ ΠΈ ΠΏΠΎΡ‡Π΅ΠΌΡƒ.

ΠŸΠΎΡΡ‚Π°Π²Ρ‰ΠΈΠΊ нСстандартной ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ

Для ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ конфигурирования прилоТСния ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ собствСнный ConfigurationProvider .Для этого ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅
configProviders (это ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ список ΠΈΠΌΠ΅Π½ классов, Ρ€Π°Π·Π΄Π΅Π»Π΅Π½Π½Ρ‹Ρ… запятыми) , ΠΊΠ°ΠΊ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Π½ΠΈΠΆΠ΅:

  <Ρ„ΠΈΠ»ΡŒΡ‚Ρ€>
      struts2 
      org.apache.struts2.dispatcher.filter.StrutsPrepareAndExecuteFilter 
     
          configProviders 
          com.company.MyConfigurationProvider 
     

  

Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ свСдСния см. Π’ Ρ€Π°Π·Π΄Π΅Π»Π΅ Β«ΠŸΠΎΡΡ‚Π°Π²Ρ‰ΠΈΠΊ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ ΠΈ конфигурация».

web.xml Π‘ΠΏΡ€Π°Π²ΠΎΡ‡Π½ΠΎΠ΅ руководство для Tomcat

web.xml Π‘ΠΏΡ€Π°Π²ΠΎΡ‡Π½ΠΎΠ΅ руководство для Tomcat

Π’Π²Π΅Π΄Π΅Π½ΠΈΠ΅

Π€Π°ΠΉΠ» дСскриптора развСртывания web.xml описываСт, ΠΊΠ°ΠΊ Ρ€Π°Π·Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒ Π²Π΅Π±-ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π² ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π΅ сСрвлСтов, Ρ‚Π°ΠΊΠΎΠΌ ΠΊΠ°ΠΊ Tomcat.

Π­Ρ‚ΠΎΡ‚ Ρ„Π°ΠΉΠ» трСбуСтся для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ прилоТСния , ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ Π²Ρ‹ Ρ€Π°Π·Π²Π΅Ρ€Ρ‚Ρ‹Π²Π°Π΅Ρ‚Π΅ Π½Π° Tomcat. Π’Ρ‹ Π½Π°ΠΉΠ΄Π΅Ρ‚Π΅ Π΅Π³ΠΎ Π² jsp-examples, servlet-examples ΠΈ ROOT-прилоТСниях, прСдставлСнных Π½Π° Π½ΠΎΠ²ΠΎΠΌ Π²Π΅Π±-сайтС Tomcat, Π° Ρ‚Π°ΠΊΠΆΠ΅ Π² ΠΊΠ°ΠΆΠ΄ΠΎΠΌ Π·Π°Π³Ρ€ΡƒΠΆΠ°Π΅ΠΌΠΎΠΌ Π²Π°ΠΌΠΈ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ Π²Π΅Π±-прилоТСния, Π²ΠΊΠ»ΡŽΡ‡Π°Ρ Ρ„Π°ΠΉΠ»Ρ‹ WAR.

РасполоТСниС Ρ„Π°ΠΉΠ»Π° всСгда ΠΎΠ΄Π½ΠΎ ΠΈ Ρ‚ΠΎ ΠΆΠ΅: ΠΊΠΎΡ€Π΅Π½ΡŒ прилоТСния / WEB-INF / web.xml

Как ΠΌΠΈΠ½ΠΈΠΌΡƒΠΌ, Ρ„Π°ΠΉΠ» Π΄ΠΎΠ»ΠΆΠ΅Π½ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ дСскриптор XML, Π° Ρ‚Π°ΠΊΠΆΠ΅ ΠΎΡ‚ΠΊΡ€Ρ‹Π²Π°ΡŽΡ‰ΠΈΠΉ ΠΈ Π·Π°ΠΊΡ€Ρ‹Π²Π°ΡŽΡ‰ΠΈΠΉ Ρ‚Π΅Π³ .

Π’ΠΎΡ‚ ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΉ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Π² стилС XSD для Tomcat 6.0. Для Π΄Ρ€ΡƒΠ³ΠΈΡ… вСрсий (7.0, 5.5, 5.0 ΠΈ Ρ‚. Π”.) И для сравнСния объявлСний XSD ΠΈ DTD см. Web.xml DTD ΠΈ XSD.


<Π²Π΅Π±-ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ xmlns = "http://java.sun.com/xml/ns/j2ee"
     xmlns: xsi = "http: // www.w3.org/2001/XMLSchema-instance "
     xsi: schemaLocation = "http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
     version = "2.5">


 

Π’Π½ΡƒΡ‚Ρ€ΠΈ Ρ‚Π΅Π³Π° ΠΌΠΎΠΆΠ½ΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ряд Π΄Ρ€ΡƒΠ³ΠΈΡ… элСмСнтов. Они ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎ описаны Π½ΠΈΠΆΠ΅.

ΠŸΠΎΠ΄Ρ€ΠΎΠ±Π½Ρ‹ΠΉ справочник — Ρ‰Π΅Π»ΠΊΠ½ΠΈΡ‚Π΅ Ρ‚Π΅Π³ для получСния Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ



<Π²Π΅Π±-ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ xmlns = "http://java.sun.com/xml/ns/j2ee"
xmlns: xsi = «http: // www.w3.org/2001/XMLSchema-instance »

xsi: schemaLocation = «http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd»

version = «2.4»>







ΠŸΡ€ΠΈΠΌΠ΅Ρ€ прилоТСния

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ прилоТСния, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для ΠΈΠ³Ρ€Ρ‹ с Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌΠΈ функциями Tomcat



<распространяСмый />



<конфигурация-сСанса>

120







Π½Π΅ ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ Π΄ΠΎΡ‡Π΅Ρ€Π½ΠΈΠΌ ΠΏΠΎ ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΡŽ ΠΊ Π² Π±ΠΎΠ»Π΅Π΅ Ρ€Π°Π½Π½ΠΈΡ… вСрсиях, Π½ΠΎ трСбуСтся начиная с Tomcat 7 ->

для каТдого web.xml ->





mytags

<располоТСниС-Ρ‚Π΅Π³Π°> / WEB-INF / jsp / mytaglib.tld





->









* .jsp

/ WEB-INF / jspf / prelude1.jspf

/WEB-INF/jspf/coda1.jspf







<ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€-контСкст>

Π’ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ ΠΎΡ‚Π»Π°Π΄ΠΊΡƒ для прилоТСния
ΠΎΡ‚Π»Π°Π΄ΠΊΠ° истина




<описаниС> АдрСс элСктронной ΠΏΠΎΡ‡Ρ‚Ρ‹ администратора, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹ΠΉ для ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΠΈ ΠΎΡ‚Ρ‡Π΅Ρ‚ΠΎΠ² ΠΎΠ± ΠΎΡˆΠΈΠ±ΠΊΠ°Ρ….
Π²Π΅Π±-мастСр адрСс@somedomain.com





<Π²Ρ…ΠΎΠ΄>

webmasterName

Мисс.Π’. ΠœΠ°ΡΡ‚Π΅Ρ€

java.lang.String





cms / defaultUserSettings / recordsPerPage

30

java.lang.Integer





cms / enableXMLExport

лоТь

java.lang.Boolean





cms / enableEmailNotifications

истина

java.lang.Boolean







<сСрвлСт>

ΠŸΡ€ΠΎΡΡ‚ΠΎΠΉ

SimpleServlet

Π­Ρ‚ΠΎ простой сСрвлСт Hello World



<ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅-сСрвлСта>

ΠŸΡ€ΠΎΡΡ‚ΠΎΠΉ

/ servlet / SimpleServlet



<сСрвлСт>



cms

com.metawerx.servlets.ContentManagementSystem

Π­Ρ‚ΠΎΡ‚ сСрвлСт ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π΅Ρ‚ запросы для CMS (это ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€ Π² Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π΅ MVC)




ΠΎΡ‚Π»Π°Π΄ΠΊΠ° истина



Π΄Π΅Ρ‚Π°Π»ΡŒ 2



5

0:00, 6:00, 12:00, 18:00 Π­Ρ‚ΠΎΡ‚ Ρ‚Π΅Π³ дСйствитСлСн Ρ‚ΠΎΠ»ΡŒΠΊΠΎ для смолы ->



<ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅-сСрвлСта>



cms

* .cms





<сСрвлСт>

пСрСзаписчик

com.metawerx.servlets.URLRewriter



<ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅-сСрвлСта>



пСрСзаписчик

/ content / *



<ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅-сСрвлСта>



пСрСзаписчик

/ admin / RewriterStatistics





<сСрвлСт>

pathjsp

поиск ΠΏΡƒΡ‚ΠΈ.jsp



<ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅-сСрвлСта>



pathjsp

/ shop / item / *







<Ρ„ΠΈΠ»ΡŒΡ‚Ρ€>

Π£ΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²ΠΊΡƒ символов

Ρ„ΠΈΠ»ΡŒΡ‚Ρ€Ρ‹.SetCharacterEncodingFilter


ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²ΠΊΠ° EUC_JP






Π£ΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²ΠΊΡƒ символов

/ *



<Ρ„ΠΈΠ»ΡŒΡ‚Ρ€>

Π—Π°ΠΏΡ€ΠΎΡΠΈΡ‚ΡŒ Ρ„ΠΈΠ»ΡŒΡ‚Ρ€ Π΄Π°ΠΌΠΏΠ΅Ρ€Π°

Ρ„ΠΈΠ»ΡŒΡ‚Ρ€Ρ‹.RequestDumperFilter





Π—Π°ΠΏΡ€ΠΎΡΠΈΡ‚ΡŒ Ρ„ΠΈΠ»ΡŒΡ‚Ρ€ Π΄Π°ΠΌΠΏΠ΅Ρ€Π°

/ *







<ΡΠ»ΡƒΡˆΠ°Ρ‚Π΅Π»ΡŒ>

<класс-ΡΠ»ΡƒΡˆΠ°Ρ‚Π΅Π»Ρ> com.metawerx.listener.ContextListener
<ΡΠ»ΡƒΡˆΠ°Ρ‚Π΅Π»ΡŒ>
com.metawerx.listener.SessionListener







<Ρ€ΠΎΠ»ΡŒ-бСзопасности>

<имя-Ρ€ΠΎΠ»ΠΈ> администратор



<Ρ€ΠΎΠ»ΡŒ-бСзопасности>

cms_editors



<ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠ΅-Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡ‚ΡŒ>

ΠžΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠ΅ бСзопасности для ΠΏΠ°ΠΏΠΊΠΈ / private

<коллСкция Π²Π΅Π±-рСсурсов>

ЗащищСнная ΠΎΠ±Π»Π°ΡΡ‚ΡŒ

/ private / *





Π£Π”ΠΠ›Π˜Π’Π¬

ΠŸΠžΠ›Π£Π§Π˜Π’Π¬

POST

PUT

->





<имя-Ρ€ΠΎΠ»ΠΈ> администратор

cms_editors







FORM


/ login.jsp
/error.jsp



->





BASIC

Π’Ρ…ΠΎΠ΄ для Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€Π°



<ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠ΅-Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡ‚ΡŒ>

<коллСкция Π²Π΅Π±-рСсурсов>

ВсС ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅

/ *

<ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠ΅-Π΄Π°Π½Π½Ρ‹Ρ…-ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ>

ΠšΠžΠΠ€Π˜Π”Π•ΠΠ¦Π˜ΠΠ›Π¬ΠΠž







<страница-ошибка>

404

<располоТСниС> / error404.jsp



<страница-ошибка>

java.lang.Throwable

/errorThrowable.jsp









xls

ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ / vnd.мс-Excel









<ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅-кодирования-локального>

ja

Shift_JIS















<список Ρ„Π°ΠΉΠ»ΠΎΠ² привСтствия>



index.swf

заставка.jsp

index.html

index.htm

index.jsp

Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Π°Ρ информация

Web.xml Filter Mapping Π² JSP Servlet с ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠΌ

  • Home
  • Testing

      • Back
      • Agile Testing
      • BugZilla
      • Cucumber
      • Database Testing
      • ETL Testing
      • Jmeter
      • Jmeter
      • Назад
      • JUnit
      • LoadRunner
      • Π ΡƒΡ‡Π½ΠΎΠ΅ тСстированиС
      • МобильноС тСстированиС
      • Mantis
      • ΠŸΠΎΡ‡Ρ‚Π°Π»ΡŒΠΎΠ½
      • QTP
      • Назад
      • Π¦Π΅Π½Ρ‚Ρ€ качСства (ALM)
      • RPA
      • SAP Testing
      • Selenium
      • SoapUI
      • Π£ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ тСстированиСм
      • TestLink
  • SAP

      • Назад
      • ABAP
      • APO
      • ΠΠ°Ρ‡ΠΈΠ½Π°ΡŽΡ‰ΠΈΠΉ
      • Basis
      • BODS
      • BI
      • BPC
      • CO
      • Назад
      • CRM
      • Crystal Reports
      • FICO
      • HANA
      • HR
      • QM
      • Заработная ΠΏΠ»Π°Ρ‚Π°
      • Назад
      • PI / PO
      • PP
      • SD
      • SAPUI5
      • Π‘Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡ‚ΡŒ
      • ΠœΠ΅Π½Π΅Π΄ΠΆΠ΅Ρ€ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠΉ
      • Successfactors
      • SAP Tutorials
  • Π˜Π½Ρ‚Π΅Ρ€Π½Π΅Ρ‚

      • Назад
        • Apache
        • AngularJS
        • ASP.Net
        • C
        • C #
        • C ++
        • CodeIgniter
        • DBMS
        • JavaScript
        • Назад
        • Java
        • JSP
        • Kotlin
        • Linux
        • MariaDB
        • MS Access
        • MYSQL
        • Node. js
        • Perl
        • Назад
        • PHP
        • PL / SQL
        • PostgreSQL
        • Python
        • ReactJS
        • Ruby & Rails
        • Scala
        • SQL
        • SQLite
        • Назад
        • SQL Server
        • UML
        • VB.Net
        • VBScript
        • Π’Π΅Π±-слуТбы
        • WPF
    • ΠžΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ ΠΈΠ·ΡƒΡ‡ΠΈΡ‚Π΅!

        • Назад
        • БухгалтСрский ΡƒΡ‡Π΅Ρ‚
        • Алгоритмы
        • Android
        • Π‘Π»ΠΎΠΊΡ‡Π΅ΠΉΠ½
        • БизнСс-Π°Π½Π°Π»ΠΈΡ‚ΠΈΠΊ
        • Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ Π²Π΅Π±-сайта
        • ΠžΠ±Π»Π°Ρ‡Π½Ρ‹Π΅ вычислСния
        • COBOL
        • Π”ΠΈΠ·Π°ΠΉΠ½ компилятора
        • Назад
        • ВстроСнныС систСмы
        • ЭтичСский Π²Π·Π»ΠΎΠΌ
        • Π£Ρ‡Π΅Π±Π½ΠΈΠΊΠΈ Excel
        • ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Go
        • IoT
        • ITIL
        • Jenkins
        • MIS
        • Π‘Π΅Ρ‚ΡŒ
        • ΠžΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½Π°Ρ систСма
        • Назад
        • ΠŸΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²ΠΊΠ°
        • PMP
        • Photoshop
        • Π£ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°ΠΌΠΈ
        • ΠžΠ±Π·ΠΎΡ€Ρ‹
        • Salesforce
        • SEO
        • Π Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ обСспСчСния
        • VBA

        900 79

    • Big Data

        • Назад
        • AWS
        • BigData
        • Cassandra
        • Cognos
        • Π₯Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅ Π΄Π°Π½Π½Ρ‹Ρ…
        • DevOps
        • HBase
        • Назад
        • Hivearate
        • MongoDB
        • NiFi

    Наборы инструмСнтов ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ интСрфСйса XML с ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΌ исходным ΠΊΠΎΠ΄ΠΎΠΌ Π½Π° Java

    Luxor

    Luxor — это бСсплатный Π½Π°Π±ΠΎΡ€ инструмСнтов языка ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ интСрфСйса XML (XUL) с ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΌ исходным ΠΊΠΎΠ΄ΠΎΠΌ, Π²Ρ‹ΠΏΡƒΡ‰Π΅Π½Π½Ρ‹ΠΉ Π² Ρ€Π°ΠΌΠΊΠ°Ρ… Бтандартная общСствСнная лицСнзия GNU (GPL), которая позволяСт ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΠ΅ интСрфСйсы с использованиСм XML ΠΈ Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ свСрхлСгкий ΠΌΠ½ΠΎΠ³ΠΎΠΏΠΎΡ‚ΠΎΡ‡Π½Ρ‹ΠΉ Π²Π΅Π±-сСрвСр, ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ ΠΏΠΎΡ€Ρ‚Π°Π»Π°, ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ шаблонов (Velocity), ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€ сцСнариСв (Python) ΠΈ ΠΌΠ½ΠΎΠ³ΠΎΠ΅ Π΄Ρ€ΡƒΠ³ΠΎΠ΅.

    ΠŸΠ΅Ρ€Π΅ΠΉΡ‚ΠΈ Π² Luxor

    SwiXml

    SwiXml, это нСбольшой ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ создания графичСского интСрфСйса ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ для ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ ΠΈ Π°ΠΏΠΏΠ»Π΅Ρ‚ΠΎΠ² Java. ГрафичСскиС ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΠ΅ интСрфСйсы описаны Π² XML-Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ…, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π°Π½Π°Π»ΠΈΠ·ΠΈΡ€ΡƒΡŽΡ‚ΡΡ Π²ΠΎ врСмя выполнСния ΠΈ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΡƒΡŽΡ‚ΡΡ Π² ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ javax.swing.

    ΠŸΠ΅Ρ€Π΅ΠΉΡ‚ΠΈ ΠΊ SwiXml

    XUI

    XUI — это срСда Java ΠΈ XML для создания ΠΌΠ½ΠΎΠ³ΠΎΡ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹Ρ… клиСнтских, Π½Π°ΡΡ‚ΠΎΠ»ΡŒΠ½Ρ‹Ρ… ΠΈ ΠΌΠΎΠ±ΠΈΠ»ΡŒΠ½Ρ‹Ρ… ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ. Π€Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊ ΠΌΠΎΠΆΠ΅Ρ‚ ΡΡΠΊΠΎΠ½ΠΎΠΌΠΈΡ‚ΡŒ Π΄ΠΎ 60% ΠΊΠΎΠ΄Π°, ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΠ³ΠΎ для создания прилоТСния.Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠΌ являСтся Ρ€Π΅Π°Π»ΡŒΠ½Π°Ρ экономия Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ Π½Π° Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ ΠΈ обслуТиваниС, Π° Ρ‚Π°ΠΊΠΆΠ΅ большая ΡΡ‚Π°Π±ΠΈΠ»ΡŒΠ½ΠΎΡΡ‚ΡŒ.

    ΠŸΠ΅Ρ€Π΅ΠΉΡ‚ΠΈ ΠΊ XUI

    ГрафичСский интСрфСйс Beryl XML

    Π‘ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° графичСского интСрфСйса ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ Beryl XML Π±Ρ‹Π»Π° написана для упрощСния Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ графичСских ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΡ… интСрфСйсов с использованиСм Swing Π½Π° Java. Он позволяСт Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΠ΅ интСрфСйсы Π² Π²ΠΈΠ΄Π΅ Ρ€Π°Π·ΠΌΠ΅Ρ‚ΠΊΠΈ XML. Π­Ρ‚ΠΎ ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ‚ Π²Π°ΠΌ ΠΈΠ·Π±Π΅ΠΆΠ°Ρ‚ΡŒ Π½Π΅Π½ΡƒΠΆΠ½ΠΎΠ³ΠΎ бСспорядка Π² исходном ΠΊΠΎΠ΄Π΅ — ΠΊΠΎΠ΄ Swing, ΡΠΌΠ΅ΡˆΠ°Π½Π½Ρ‹ΠΉ с Π»ΠΎΠ³ΠΈΠΊΠΎΠΉ прилоТСния, ΠΌΠΎΠΆΠ΅Ρ‚ ΡΡ‚Π°Ρ‚ΡŒ нСприятным ΠΈ Ρ‚Ρ€ΡƒΠ΄Π½Ρ‹ΠΌ для чтСния бСспорядком ΠΏΠΎ ΠΌΠ΅Ρ€Π΅ увСличСния Ρ€Π°Π·ΠΌΠ΅Ρ€Π° прилоТСния.Π‘ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° поставляСтся с конструктором Π²ΠΈΠ·ΡƒΠ°Π»ΡŒΠ½Ρ‹Ρ… ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΡƒΠΏΡ€ΠΎΡ‰Π°Π΅Ρ‚ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ.

    ΠŸΠ΅Ρ€Π΅ΠΉΡ‚ΠΈ ΠΊ Beryl XML GUI

    Purnama XUI

    Набор Ρ‚Π΅Π³ΠΎΠ² XUI — это Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ XML, ΠΎΠΏΠΈΡΡ‹Π²Π°ΡŽΡ‰ΠΈΠΉ графичСскиС ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΠ΅ интСрфСйсы. Π‘Π°ΠΌ ΠΏΠΎ сСбС этот Π½Π°Π±ΠΎΡ€ Ρ‚Π΅Π³ΠΎΠ² Π½Π΅ ΠΎΡ‡Π΅Π½ΡŒ ΠΏΠΎΠ»Π΅Π·Π΅Π½. Однако с интСрфСйсом ΠΏΡ€ΠΈΠΊΠ»Π°Π΄Π½ΠΎΠ³ΠΎ программирования ΠΎΠ½ становится ΠΌΠΎΡ‰Π½Ρ‹ΠΌ кроссплатформСнным ΠΈ кросс-языковым языком сцСнариСв, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰ΠΈΠΌ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ графичСскиС интСрфСйсы Π±Π΅Π· Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π°.

    ΠŸΠ΅Ρ€Π΅ΠΉΡ‚ΠΈ ΠΊ Purnama XUI

    SwingML

    SwingML — это ΠΏΠΎΠΏΡ‹Ρ‚ΠΊΠ° ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ язык Ρ€Π°Π·ΠΌΠ΅Ρ‚ΠΊΠΈ для Π²ΠΈΠ·ΡƒΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Π² Π²Π΅Π±-Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π΅ с графичСскими ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΠΌΠΈ интСрфСйсами Π½Π° основС JFC / Swing.

    ΠŸΠ΅Ρ€Π΅ΠΉΡ‚ΠΈ ΠΊ SwingML

    UIHierarchy

    UIHierarchy — это Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°, которая ΡƒΠΏΡ€ΠΎΡ‰Π°Π΅Ρ‚ созданиС ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΡ… интСрфСйсов. Основная идСя состоит Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡƒΡΠΈΠ»ΠΈΡ‚ΡŒ ΠΌΡ‹ΡΠ»Π΅Π½Π½ΡƒΡŽ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½Ρƒ ΠΈΠ΅Ρ€Π°Ρ€Ρ…ΠΈΠΈ Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ² графичСского интСрфСйса ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ, написав ΠΊΠΎΠ΄ Ρ‚Π°ΠΊΠΈΠΌ ΠΆΠ΅ логичСским способом. Код становится Π½Π°ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΡ€ΠΎΡ‰Π΅ для понимания, Π½Π°ΠΌΠ½ΠΎΠ³ΠΎ ΠΊΠΎΡ€ΠΎΡ‡Π΅ ΠΈ ΠΏΡ€ΠΎΡ‰Π΅ Π² обслуТивании. ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, UIHierarchy ΠΌΠΎΠΆΠ΅Ρ‚ эффСктивно ΠΌΠ°Π½ΠΈΠΏΡƒΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΈΡ‚ΠΎΠ³ΠΎΠ²Ρ‹ΠΌΠΈ иСрархиями ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ².
    [Π­Ρ‚ΠΎ Π²ΡΠΏΠΎΠΌΠΎΠ³Π°Ρ‚Π΅Π»ΡŒΠ½Π°Ρ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ интСрфСйса, Π½ΠΎ Π½Π° этом сайтС Π½Π΅Ρ‚ подходящСй ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΈ.Π£ UIHierarchy Π΅ΡΡ‚ΡŒ нСбольшой XML-ΠΌΠΎΠ΄ΡƒΠ»ΡŒ, Π½ΠΎ ΠΎΠ½ Π½Π΅ являСтся основным фокусом.]

    ΠŸΠ΅Ρ€Π΅ΠΉΡ‚ΠΈ ΠΊ UIHierarchy

    thinlet

    Thinlet — это Π½Π°Π±ΠΎΡ€ инструмСнтов графичСского интСрфСйса, ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹ΠΉ класс Java, Π°Π½Π°Π»ΠΈΠ·ΠΈΡ€ΡƒΡŽΡ‰ΠΈΠΉ ΠΈΠ΅Ρ€Π°Ρ€Ρ…ΠΈΡŽ ΠΈ свойства графичСского интСрфСйса ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ, ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π΅Ρ‚ взаимодСйствиС с ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΌ ΠΈ Π²Ρ‹Π·Ρ‹Π²Π°Π΅Ρ‚ бизнСс-Π»ΠΎΠ³ΠΈΠΊΡƒ. РаздСляСт графичСскоС прСдставлСниС (описанноС Π² Ρ„Π°ΠΉΠ»Π΅ XML) ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ прилоТСния (написанныС ΠΊΠ°ΠΊ ΠΊΠΎΠ΄ Java).
    Π•Π³ΠΎ сТатый Ρ€Π°Π·ΠΌΠ΅Ρ€ составляСт 38 ΠšΠ‘, ΠΈ ΠΎΠ½ Π»ΠΈΡ†Π΅Π½Π·ΠΈΡ€ΠΎΠ²Π°Π½ LGPL.
    Thinlet Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ с Java 1.1 (JVM Π±Ρ€Π°ΡƒΠ·Π΅Ρ€ΠΎΠ² ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ) Π΄ΠΎ 1.4, Personal Java ΠΈ Personal (Basis) Profile. Π‘Π²ΠΈΠ½Π³ Π½Π΅ трСбуСтся.

    ΠŸΠ΅Ρ€Π΅ΠΉΡ‚ΠΈ Π² thinlet

    jXUL

    ΠŸΡ€ΠΎΠ΅ΠΊΡ‚ jXUL — это ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ с ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΌ исходным ΠΊΠΎΠ΄ΠΎΠΌ для ΠΈΠ½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΠΈ языка XUL Π² ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡƒ Java

    ΠŸΠ΅Ρ€Π΅ΠΉΡ‚ΠΈ ΠΊ jXUL

    KoalaGML

    GUI KoalaGML, KoalaGML
    909 Π―Π·Ρ‹ΠΊ Ρ€Π°Π·ΠΌΠ΅Ρ‚ΠΊΠΈ позволяСт Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°ΠΌ быстро ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ графичСскиС ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΠ΅ интСрфСйсы ΠΏΡƒΡ‚Π΅ΠΌ написания XML-Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡŽΡ‚ структуру ΠΈ содСрТимоС интСрфСйсов.Π­Ρ‚ΠΎ ΠΈ язык Ρ€Π°Π·ΠΌΠ΅Ρ‚ΠΊΠΈ, ΠΈ Π½Π°Π±ΠΎΡ€ инструмСнтов для Π³Π΅Π½Π΅Ρ€Π°Ρ†ΠΈΠΈ ΠΊΠΎΠ΄Π° графичСского интСрфСйса ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ Java ΠΈΠ· Ρ€Π°Π·ΠΌΠ΅Ρ‚ΠΊΠΈ. Π’Π΄ΠΎΡ…Π½ΠΎΠ²Π»Π΅Π½Π½Ρ‹ΠΉ Java Server Pages (JSP), koalaGML состоит ΠΈΠ· Π±ΠΎΠ³Π°Ρ‚ΠΎΠ³ΠΎ ΠΈ постоянно растущСго Π½Π°Π±ΠΎΡ€Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ, Π² Ρ‚ΠΎΠΌ числС: сСансовых ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ², настраиваСмого ΠΈΠΌΠΏΠΎΡ€Ρ‚Π°, ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠΉ, настраиваСмых Ρ„ΠΎΡ€ΠΌ ошибок, ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΠΊΠΈ элСмСнтов (с Ρ‚Π°Π±Π»ΠΈΡ†Π°ΠΌΠΈ ala HTML) ΠΈ ΠΎΠ³Ρ€ΠΎΠΌΠ½ΠΎΠ³ΠΎ Π½Π°Π±ΠΎΡ€Π° Π²ΠΈΠ΄ΠΆΠ΅Ρ‚Ρ‹.

    ΠŸΠ΅Ρ€Π΅ΠΉΡ‚ΠΈ ΠΊ KoalaGML

    WidgetServer

    WidgetServer — это сСрвСрная срСда графичСского интСрфСйса ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ Java / XML, которая позволяСт ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡŽ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ ΠΊΠ°ΠΊ ΠΌΠΎΠ½ΠΎΠ»ΠΈΡ‚Π½ΠΎΠ΅ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Swing, ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Swing ΠΊΠ»ΠΈΠ΅Π½Ρ‚ / сСрвСр ΠΈΠ»ΠΈ ΠΊΠ°ΠΊ Π²Π΅Π±-сайт. ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π±Π΅Π· ΠΊΠ°ΠΊΠΈΡ…-Π»ΠΈΠ±ΠΎ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ.Он Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ ΡΠΌΠ΅ΡˆΠ°Π½Π½Ρ‹ΠΉ Ρ€Π΅ΠΆΠΈΠΌ развСртывания, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ ΠΎΠ΄ΠΈΠ½ сСрвСр для ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠ³ΠΎ обслуТивания ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΠΎΠ² Swing ΠΈ Web-ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΠΎΠ². ΠŸΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ° ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ XML ΠΈΠ»ΠΈ Π΅Π΄ΠΈΠ½Ρ‹ΠΉ Java API для опрСдСлСния графичСского интСрфСйса прилоТСния нСзависимо ΠΎΡ‚ Ρ†Π΅Π»Π΅Π²ΠΎΠΉ клиСнтской Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΈ. Он прСдоставляСт ΠΎΠ±Ρ‰ΠΈΠΉ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹ΠΉ интСрфСйс Π½Π° основС Π²ΠΈΠ΄ΠΆΠ΅Ρ‚ΠΎΠ² для графичСских интСрфСйсов Web ΠΈ Swing, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π½Π΅ позволяСт Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΡƒ Π±ΠΎΡ€ΠΎΡ‚ΡŒΡΡ с HTML ΠΈ HTTP ΠΈΠ»ΠΈ Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΠΌΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π°ΠΌΠΈ Swing. ΠŸΡ€ΠΎΠ΅ΠΊΡ‚ Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ ΠΏΠΎΡΡ‚Ρ€ΠΎΠΈΡ‚Π΅Π»ΡŒ графичСского интСрфСйса ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ, основанный Π½Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΠ°.

    ΠŸΠ΅Ρ€Π΅ΠΉΡ‚ΠΈ ΠΊ WidgetServer

    Laszlo

    Laszlo — это ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ° с ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΌ исходным ΠΊΠΎΠ΄ΠΎΠΌ для Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΈ доставки ΠΏΠΎΠ»Π½ΠΎΡ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹Ρ… Π˜Π½Ρ‚Π΅Ρ€Π½Π΅Ρ‚-ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Π²ΠΎ Π²ΡΠ΅ΠΌΠΈΡ€Π½ΡƒΡŽ ΠΏΠ°ΡƒΡ‚ΠΈΠ½Ρƒ. Он Π²Ρ‹ΠΏΡƒΡ‰Π΅Π½ ΠΏΠΎΠ΄ Π»ΠΈΡ†Π΅Π½Π·ΠΈΠ΅ΠΉ Common Public License, сСртифицированной OSI.
    ΠŸΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ° Laszlo состоит ΠΈΠ· языка LZX ΠΈ сСрвСра ΠΏΡ€Π΅Π·Π΅Π½Ρ‚Π°Ρ†ΠΈΠΉ Laszlo.
    LZX — это язык описания XML ΠΈ JavaScript, ΠΏΠΎΡ…ΠΎΠΆΠΈΠΉ ΠΏΠΎ Π΄ΡƒΡ…Ρƒ Π½Π° XUL ΠΈ XAML. LZX обСспСчиваСт Π΄Π΅ΠΊΠ»Π°Ρ€Π°Ρ‚ΠΈΠ²Π½Ρ‹ΠΉ процСсс Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Π½Π° основС тСкста, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ быстроС созданиС ΠΏΡ€ΠΎΡ‚ΠΎΡ‚ΠΈΠΏΠΎΠ² ΠΈ Π»ΡƒΡ‡ΡˆΠΈΠ΅ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠΈ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ обСспСчСния.Π‘Π΅Ρ€Π²Π΅Ρ€ ΠΏΡ€Π΅Π·Π΅Π½Ρ‚Π°Ρ†ΠΈΠΉ Laszlo (LPS) — это сСрвлСт Java, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΡƒΠ΅Ρ‚ прилоТСния LZX Π² исполняСмыС Π΄Π²ΠΎΠΈΡ‡Π½Ρ‹Π΅ Ρ„Π°ΠΉΠ»Ρ‹ для Ρ†Π΅Π»Π΅Π²Ρ‹Ρ… срСд выполнСния. Π’ настоящСС врСмя Laszlo Π½Π°Ρ†Π΅Π»Π΅Π½ Π½Π° Flash Player. LPS ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΡƒΠ΅Ρ‚ прилоТСния LZX Π² Π±Π°ΠΉΡ‚-ΠΊΠΎΠ΄ SWF для Flash Player, обслуТиваСт ΠΈ ΠΊΡΡˆΠΈΡ€ΡƒΠ΅Ρ‚ эти скомпилированныС прилоТСния Π² любом Π²Π΅Π±-Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π΅, ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‰Π΅ΠΌ Flash 5 ΠΈΠ»ΠΈ Π±ΠΎΠ»Π΅Π΅ позднюю Π²Π΅Ρ€ΡΠΈΡŽ, ΠΈ выполняСт прокси-запросы ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ для Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΡ… источников Π΄Π°Π½Π½Ρ‹Ρ… XML ΠΈ Π²Π΅Π±-слуТб.

    Go To Laszlo

    gui4j

    gui4j — это срСда для описания графичСских интСрфСйсов Java Swing ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ Π² XML.ГрафичСский ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΠΉ интСрфСйс создаСтся динамичСски Π½Π° основС ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠΉ XML. КаТдоС ΠΎΠΊΠ½ΠΎ графичСского интСрфСйса ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ связано Ρ€ΠΎΠ²Π½ΠΎ с ΠΎΠ΄Π½ΠΈΠΌ XML-Ρ„Π°ΠΉΠ»ΠΎΠΌ Π²Π΅Ρ€Ρ…Π½Π΅Π³ΠΎ уровня. ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ XML-Ρ„Π°ΠΉΠ» ΠΌΠΎΠΆΠ΅Ρ‚ динамичСски Π²ΠΊΠ»ΡŽΡ‡Π°Ρ‚ΡŒ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ XML-Ρ„Π°ΠΉΠ»Ρ‹ для ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΈ слоТных ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠΉ графичСского интСрфСйса. ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ XML-Ρ„Π°ΠΉΠ» связан с Java-ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠΌ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ дСйствуСт ΠΊΠ°ΠΊ ΠšΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€ ΠΈ МодСль для GUI. ΠœΠ΅ΠΆΠ΄Ρƒ графичСским интСрфСйсом ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ ΠΈ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€ΠΎΠΌ сущСствуСт сильноС Ρ€Π°Π·Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΡƒΡ€ΠΎΠ²Π½Π΅ΠΉ: опрСдСлСния графичСского интСрфСйса Π² Ρ„Π°ΠΉΠ»Π°Ρ… XML ΠΌΠΎΠ³ΡƒΡ‚ ΠΎΠ±Ρ€Π°Ρ‰Π°Ρ‚ΡŒΡΡ ΠΊΠΎ всСм ΠΌΠ΅Ρ‚ΠΎΠ΄Π°ΠΌ Java ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€Π°, Π½ΠΎ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ Java Π½Π΅ ΠΌΠΎΠ³ΡƒΡ‚ Π½Π°ΠΏΡ€ΡΠΌΡƒΡŽ ΠΎΠ±Ρ€Π°Ρ‰Π°Ρ‚ΡŒΡΡ ΠΊ ΠΊΠ°ΠΊΠΈΠΌ-Π»ΠΈΠ±ΠΎ элСмСнтам графичСского интСрфСйса.Бобытия ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ для запуска ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ Π² графичСском интСрфСйсС.

    ΠŸΠ΅Ρ€Π΅ΠΉΡ‚ΠΈ ΠΊ gui4j

    XAMJ

    XAMJ — это ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΠΉ интСрфСйс XML ΠΈ язык Ρ€Π°Π·ΠΌΠ΅Ρ‚ΠΊΠΈ, тСсно ΠΈΠ½Ρ‚Π΅Π³Ρ€ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ с Java. Он развСртываСтся Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π½ΠΎ JNLP Π±Π΅Π· нСобходимости ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΈΠ»ΠΈ ΡƒΠΏΠ°ΠΊΠΎΠ²Ρ‹Π²Π°Ρ‚ΡŒ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅.

    ΠŸΠ΅Ρ€Π΅ΠΉΡ‚ΠΈ ΠΊ XAMJ

    JAXX

    JAXX позволяСт ΠΏΠΈΡΠ°Ρ‚ΡŒ простыС Ρ„Π°ΠΉΠ»Ρ‹ XML, ΠΎΠΏΠΈΡΡ‹Π²Π°ΡŽΡ‰ΠΈΠ΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹ ΠΈ ΠΈΡ… взаимодСйствиС, Π° Π·Π°Ρ‚Π΅ΠΌ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ эти Ρ„Π°ΠΉΠ»Ρ‹ XML Π² ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹Π΅ классы Java.JAXX ΠΏΡ€Π΅Π΄Π»Π°Π³Π°Π΅Ρ‚ Ρ‡Ρ€Π΅Π·Π²Ρ‹Ρ‡Π°ΠΉΠ½ΠΎ ΠΌΠΎΡ‰Π½Ρ‹Π΅ сцСнарии ΠΈ привязку Π΄Π°Π½Π½Ρ‹Ρ…, ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΡƒ Ρ‚Π°Π±Π»ΠΈΡ† стилСй CSS ΠΈ ΠΌΠ½ΠΎΠ³ΠΈΠ΅ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½Π½Ρ‹Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ.

    ΠŸΠ΅Ρ€Π΅ΠΉΡ‚ΠΈ ΠΊ JAXX

    wazaabi

    WAZAABI — это ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ с ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΌ исходным ΠΊΠΎΠ΄ΠΎΠΌ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ обСспСчиваСт Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ прСимущСства для создания ΠΏΠΎΠ»Π½ΠΎΡ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹Ρ… клиСнтских ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Java ΠΈ J2EE Π½Π° основС Eclipse RCP. Wazaabi Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ Π² сСбя срСду графичСского интСрфСйса ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ, которая прСдоставляСт Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°ΠΌ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π°Π΅ΠΌΡ‹Ρ… ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ XUL ΠΊ Eclipse RCP ΠΈ Π½Π°Π±ΠΎΡ€ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΡΠ²ΡΠ·Ρ‹Π²Π°ΡŽΡ‚ клиСнтскиС срСдства просмотра ΠΈ Ρ„ΠΎΡ€ΠΌΡ‹ Π½Π° основС XUL с бизнСс-ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π°ΠΌΠΈ Π½Π° сторонС сСрвСра.

    ΠŸΠ΅Ρ€Π΅ΠΉΡ‚ΠΈ ΠΊ wazaabi

    CookSwing

    CookSwing — это Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°, которая создаСт графичСский интСрфСйс Java Swing ΠΈΠ· XML-Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ². Он ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ всС ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹ Swing, всС Swing LayoutManager (Π²ΠΊΠ»ΡŽΡ‡Π°Ρ ΠΌΠ°ΠΊΠ΅Ρ‚ JGoodies Forms), всС ΡΠ»ΡƒΡˆΠ°Ρ‚Π΅Π»ΠΈ, всС Π³Ρ€Π°Π½ΠΈΡ†Ρ‹ Swing (Π²ΠΊΠ»ΡŽΡ‡Π°Ρ составныС Π³Ρ€Π°Π½ΠΈΡ†Ρ‹), Π° Ρ‚Π°ΠΊΠΆΠ΅ ΠΈΠ½Ρ‚Π΅Ρ€Π½Π°Ρ†ΠΈΠΎΠ½Π°Π»ΠΈΠ·Π°Ρ†ΠΈΡŽ ΠΈ Π»ΠΎΠΊΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΡŽ. Π’Π°ΠΊΠΆΠ΅ поддСрТиваСтся Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ XML для шаблонного ΠΌΠ°ΠΊΠ΅Ρ‚Π° ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ интСрфСйса. CookSwing Ρ‚Π°ΠΊΠΆΠ΅ Π²Ρ‹Ρ…ΠΎΠ΄ΠΈΡ‚ Π·Π° Ρ€Π°ΠΌΠΊΠΈ простого Swing, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΌΠ½ΠΎΠ³ΠΈΠ΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹ Swing Ρ‚Ρ€Π΅Π±ΡƒΡŽΡ‚ довольно слоТных ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ.БвязываниС Java с ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π°ΠΌΠΈ, созданными CookSwing, ΠΎΡ‡Π΅Π½ΡŒ просто.
    Одно ΠΈΠ· основных прСимущСств CookSwing ΠΏΠΎ ΡΡ€Π°Π²Π½Π΅Π½ΠΈΡŽ с Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ инструмСнтами XUL — это простота Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡ. Он ΠΈΠΌΠ΅Π΅Ρ‚ ΠΌΠΎΠ΄ΡƒΠ»ΡŒΠ½ΡƒΡŽ ΠΊΠΎΠ½ΡΡ‚Ρ€ΡƒΠΊΡ†ΠΈΡŽ ΠΈ ΠΏΡ€Π΅Π΄Π»Π°Π³Π°Π΅Ρ‚ большиС возмоТности ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ. CookSwing Ρ‚Π°ΠΊΠΆΠ΅ Ρ…ΠΎΡ€ΠΎΡˆΠΎ Π·Π°Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½ с Π΅Π³ΠΎ ΠΈΠ½Π½ΠΎΠ²Π°Ρ†ΠΈΠΎΠ½Π½Ρ‹ΠΌ tagdoc ΠΈ мноТСством ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠ² ΠΈ дСмонстраций.

    ΠŸΠ΅Ρ€Π΅ΠΉΡ‚ΠΈ ΠΊ CookSwing

    web.xml — Java-Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° — Community Wiki

    web.xml — Java-Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° — Community Wiki

    ΠŸΠ΅Ρ€Π΅ΠΉΡ‚ΠΈ Π² ΠΊΠΎΠ½Π΅Ρ† Π±Π°Π½Π½Π΅Ρ€Π°

    ΠŸΠ΅Ρ€Π΅ΠΉΡ‚ΠΈ ΠΊ Π½Π°Ρ‡Π°Π»Ρƒ Π±Π°Π½Π½Π΅Ρ€Π°

    ΠŸΠ΅Ρ€Π΅ΠΉΡ‚ΠΈ ΠΊ ΠΊΠΎΠ½Ρ†Ρƒ ΠΌΠ΅Ρ‚Π°Π΄Π°Π½Π½Ρ‹Ρ…

    ΠŸΠ΅Ρ€Π΅ΠΉΡ‚ΠΈ ΠΊ Π½Π°Ρ‡Π°Π»Ρƒ ΠΌΠ΅Ρ‚Π°Π΄Π°Π½Π½Ρ‹Ρ…

    1. xml version = «1.0 «encoding =» UTF-8 «?>
    2. < Π²Π΅Π±-ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ xmlns: xsi = «http://www.w3.org/2001/XMLSchema-instance»
    3. xmlns = «http://java.sun.com/xml/ns/javaee» xmlns: web = «http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd»
    4. xsi: schemaLocation = «http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd»
    5. id = «WebApp_ID» version = «2.5» >
    6. < ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Π΅ΠΌΠΎΠ΅ имя > SharedHanaWeb ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Π΅ΠΌΠΎΠ΅ имя >
    7. < список привСтствСнного Ρ„Π°ΠΉΠ»Π° >
    8. < привСтствСнный Ρ„Π°ΠΉΠ» > index.html привСтствСнный Ρ„Π°ΠΉΠ» >
    9. список привСтствСнного Ρ„Π°ΠΉΠ»Π° >
    10. < сСрвлСт >
    11. < описаниС > описаниС >
    12. < ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Π΅ΠΌΠΎΠ΅ имя > CalcViewDataReaderServlet ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Π΅ΠΌΠΎΠ΅ имя >
    13. < имя-сСрвлСта > CalcViewDataReaderServlet имя-сСрвлСта >
    14. < servlet-class > ΠΊΠΎΠΌ.sap.hana.integration.servlet.CalcViewDataReaderServlet класс сСрвлСта >
    15. сСрвлСт >
    16. < ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ сСрвлСтов >
    17. < имя-сСрвлСта > CalcViewDataReaderServlet имя-сСрвлСта >
    18. < url-pattern > / CalcViewDataReaderServlet url-pattern >
    19. ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ сСрвлСтов >
    20. < сСрвлСт >
    21. < описаниС > описаниС >
    22. < ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Π΅ΠΌΠΎΠ΅ имя > RemotingServlet ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Π΅ΠΌΠΎΠ΅ имя >
    23. < имя сСрвлСта > RemotingServlet имя сСрвлСта >
    24. < servlet-class > ΠΊΠΎΠΌ.sap.core.jdbc.remoteaccess.server.RemotingServlet servlet-class >
    25. сСрвлСт >
    26. < ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ сСрвлСтов >
    27. < имя сСрвлСта > RemotingServlet имя сСрвлСта >
    28. < url-pattern > / RemotingServlet / * url-pattern >
    29. ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ сСрвлСтов >
    30. ΠΏΠΎΠ΄Π΄Π΅Π»ΠΊΠ° ΠΈ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ Π² цСлях бСзопасности.Π‘Π΅Ρ€Π²Π»Π΅Ρ‚ ΡƒΠ΄Π°Π»Π΅Π½Π½ΠΎΠ³ΠΎ доступа
    31. ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ Π½Π°Π»ΠΈΡ‡ΠΈΠ΅ Ρ„ΠΈΠ»ΡŒΡ‚Ρ€Π° ΠΈ выдаст ΠΎΡˆΠΈΠ±ΠΊΡƒ, Ссли ΠΎΠ½ Π½Π΅ зарСгистрирован! — >
    32. < Ρ„ΠΈΠ»ΡŒΡ‚Ρ€ >
    33. < имя-Ρ„ΠΈΠ»ΡŒΡ‚Ρ€Π° > RestCSRF имя-Ρ„ΠΈΠ»ΡŒΡ‚Ρ€Π° >
    34. < класс Ρ„ΠΈΠ»ΡŒΡ‚Ρ€Π° > com.sap.core.js.csrf.RestCsrfPreventionFilter класс Ρ„ΠΈΠ»ΡŒΡ‚Ρ€Π° >
    35. Ρ„ΠΈΠ»ΡŒΡ‚Ρ€ >
    36. < ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ Ρ„ΠΈΠ»ΡŒΡ‚Ρ€ΠΎΠ² >
    37. < имя-Ρ„ΠΈΠ»ΡŒΡ‚Ρ€Π° > RestCSRF имя-Ρ„ΠΈΠ»ΡŒΡ‚Ρ€Π° >
    38. < имя сСрвлСта > RemotingServlet имя сСрвлСта >
    39. ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ Ρ„ΠΈΠ»ΡŒΡ‚Ρ€ΠΎΠ² >
    40. < рСсурс-ссылка >
    41. < res-ref-name > jdbc / DefaultDB res-ref-name >
    42. < res-type > javax.sql.DataSource res-type >
    43. рСсурс-ссылка >
    44. < ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠ΅ бСзопасности >
    45. < ΠšΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΡ Π²Π΅Π±-рСсурсов >
    46. < имя Π²Π΅Π±-рСсурса > Π—Π°Ρ‰ΠΈΡ‰Π΅Π½Π½Ρ‹ΠΉ Ρ‚ΡƒΠ½Π½Π΅Π»ΡŒ имя Π²Π΅Π±-рСсурса >
    47. < url-pattern > / RemotingServlet / * url-pattern >
    48. ΠšΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΡ Π²Π΅Π±-рСсурсов >
    49. < ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠ΅ Π°ΡƒΡ‚Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ >
    50. < имя-Ρ€ΠΎΠ»ΠΈ > jdbc_remote_access_admin имя-Ρ€ΠΎΠ»ΠΈ >
    51. ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠ΅ Π°ΡƒΡ‚Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ >
    52. ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠ΅ бСзопасности >
    53. < Π»ΠΎΠ³ΠΈΠ½-конфигурация >
    54. < auth-method > BASIC auth-method >
    55. Π»ΠΎΠ³ΠΈΠ½-конфигурация >
    56. < Ρ€ΠΎΠ»ΡŒ бСзопасности >
    57. < описаниС > Администраторы описаниС >
    58. < имя-Ρ€ΠΎΠ»ΠΈ > jdbc_remote_access_admin имя-Ρ€ΠΎΠ»ΠΈ >
    59. Ρ€ΠΎΠ»ΡŒ бСзопасности >
    60. Π²Π΅Π±-ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ >

    {«serverDuration»: 82, «requestCorrelationId»: «3d3933a9bbaf4772»}
    .

Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ

Π’Π°Ρˆ адрСс email Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Π½. ΠžΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ поля ΠΏΠΎΠΌΠ΅Ρ‡Π΅Π½Ρ‹ *