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Β».
ΠΠ°ΠΆΠ½ΡΠ΅ ΡΠΎΡΠΊΠΈ:
- DiskFileItemFactory ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΊΠ»Π°ΡΡΠΎΠΌ Factory ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ Π΄Π»Ρ FileItem. ΠΠΎΠ³Π΄Π° Apache ΠΎΡΡΡΠ΅ΡΡΠ²Π»ΡΠ΅Ρ ΡΡΠ΅Π½ΠΈΠ΅ ΠΌΡΠ»ΡΡΠΈΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ½ΠΎΠ³ΠΎ ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠ³ΠΎ ΠΈ Π³Π΅Π½Π΅ΡΠΈΡΡΠ΅Ρ FileItem, ΡΡΠ° ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ ΡΠΎΡ ΡΠ°Π½ΡΠ΅Ρ ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠ΅ ΡΠ°ΠΉΠ»Π° Π»ΠΈΠ±ΠΎ Π² ΠΏΠ°ΠΌΡΡΠΈ, Π»ΠΈΠ±ΠΎ Π½Π° Π΄ΠΈΡΠΊΠ΅ ΠΊΠ°ΠΊ Π²ΡΠ΅ΠΌΠ΅Π½Π½ΡΠΉ ΡΠ°ΠΉΠ», Π² Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΠΎΡ ΡΠ°Π·ΠΌΠ΅ΡΠ° ΠΏΠΎΡΠΎΠ³Π°. ΠΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ DiskFileItemFactory ΠΈΠΌΠ΅Π΅Ρ ΠΏΠΎΡΠΎΠ³ΠΎΠ²ΡΠΉ ΡΠ°Π·ΠΌΠ΅Ρ 10 ΠΠ ΠΈ ΡΠΎΠ·Π΄Π°Π΅Ρ Π²ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ ΡΠ°ΠΉΠ»Ρ Π²ΠΎ Π²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΌ ΠΊΠ°ΡΠ°Π»ΠΎΠ³Π΅, Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅ΠΌΠΎΠΌ System.getProperty (Β«java.io.tmpdirΒ»). ΠΠ±Π° ΡΡΠΈ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΡΡΡΠ°ΠΈΠ²Π°ΡΡ, ΠΈ Π»ΡΡΡΠ΅ Π²ΡΠ΅Π³ΠΎ ΠΈΡ Π½Π°ΡΡΡΠΎΠΈΡΡ Π΄Π»Ρ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΡΡΠ²Π΅Π½Π½ΠΎΠ³ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ. ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΏΠΎΠ»ΡΡΠΈΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ Ρ ΡΠ°Π·ΡΠ΅ΡΠ΅Π½ΠΈΡΠΌΠΈ, Π΅ΡΠ»ΠΈ Ρ ΡΡΠ΅ΡΠ½ΠΎΠΉ Π·Π°ΠΏΠΈΡΠΈ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΠΎΠΉ Π΄Π»Ρ Π·Π°ΠΏΡΡΠΊΠ° Π‘Π΅ΡΠ²Π΅ΡΠ°, Π½Π΅Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ ΠΏΡΠ°Π² Π΄Π»Ρ Π·Π°ΠΏΠΈΡΠΈ ΡΠ°ΠΉΠ»ΠΎΠ² Π²ΠΎ Π²ΡΠ΅ΠΌΠ΅Π½Π½ΡΠΉ ΠΊΠ°ΡΠ°Π»ΠΎΠ³.
- Π’ΡΠ°ΡΠ΅Π»ΡΠ½ΠΎ Π²ΡΠ±ΠΈΡΠ°ΠΉΡΠ΅ ΠΏΠΎΡΠΎΠ³ΠΎΠ²ΡΠΉ ΡΠ°Π·ΠΌΠ΅Ρ Π² Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΠΎΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΠΏΠ°ΠΌΡΡΠΈ. Π₯ΡΠ°Π½Π΅Π½ΠΈΠ΅ Π±ΠΎΠ»ΡΡΠΎΠ³ΠΎ ΠΎΠ±ΡΠ΅ΠΌΠ° Π² ΠΏΠ°ΠΌΡΡΠΈ ΠΌΠΎΠΆΠ΅Ρ ΠΏΡΠΈΠ²Π΅ΡΡΠΈ ΠΊ java.lang.OutOfMemory , Π² ΡΠΎ Π²ΡΠ΅ΠΌΡ ΠΊΠ°ΠΊ ΡΠ»ΠΈΡΠΊΠΎΠΌ ΠΌΠ°Π»Π΅Π½ΡΠΊΠΈΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΠΌΠΎΠ³ΡΡ ΠΏΡΠΈΠ²Π΅ΡΡΠΈ ΠΊ ΠΏΠΎΡΠ²Π»Π΅Π½ΠΈΡ Π±ΠΎΠ»ΡΡΠΎΠ³ΠΎ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²Π° Π²ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ ΡΠ°ΠΉΠ»ΠΎΠ².
- Apache Commons File Upload ΡΠ°ΠΊΠΆΠ΅ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ FileCleaningTracker Π΄Π»Ρ ΡΠ΄Π°Π»Π΅Π½ΠΈΡ Π²ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ ΡΠ°ΠΉΠ»ΠΎΠ², ΡΠΎΠ·Π΄Π°Π½Π½ΡΡ DiskFileItemFactory. FileCleaningTracker ΡΠ΄Π°Π»ΡΠ΅Ρ Π²ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ ΡΠ°ΠΉΠ»Ρ, ΠΊΠ°ΠΊ ΡΠΎΠ»ΡΠΊΠΎ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΠΉ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡ File ΡΠΎΠ±ΠΈΡΠ°Π΅ΡΡΡ ΠΌΡΡΠΎΡΠΎΠΌ. ΠΡΠΎ Π΄ΠΎΡΡΠΈΠ³Π°Π΅ΡΡΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ Π±ΠΎΠ»Π΅Π΅ ΡΠΈΡΡΠΎΠ³ΠΎ ΠΏΠΎΡΠΎΠΊΠ°, ΠΊΠΎΡΠΎΡΡΠΉ ΡΠΎΠ·Π΄Π°Π΅ΡΡΡ ΠΏΡΠΈ Π·Π°Π³ΡΡΠ·ΠΊΠ΅ FileCleaner. ΠΡΠ»ΠΈ Π²Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΠ΅ ΡΡΡ ΡΡΠ½ΠΊΡΠΈΡ, Π½Π΅ Π·Π°Π±ΡΠ΄ΡΡΠ΅ ΠΏΡΠ΅ΠΊΡΠ°ΡΠΈΡΡ ΡΡΡ ΡΠ΅ΠΌΡ, ΠΊΠΎΠ³Π΄Π° Π·Π°ΠΊΠΎΠ½ΡΠΈΡΡΡ Π²Π°ΡΠ΅ Π²Π΅Π±-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅.
- Π‘ΠΎΡ ΡΠ°Π½ΡΠΉΡΠ΅ Π½Π°ΡΡΡΠ°ΠΈΠ²Π°Π΅ΠΌΡΠ΅ Π΄Π°Π½Π½ΡΠ΅, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΊΠ°ΡΠ°Π»ΠΎΠ³ Π·Π°Π³ΡΡΠ·ΠΊΠΈ, ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡΠ½ΡΠΉ ΡΠ°Π·ΠΌΠ΅Ρ ΡΠ°ΠΉΠ»Π°, ΠΏΠΎΡΠΎΠ³ΠΎΠ²ΡΠΉ ΡΠ°Π·ΠΌΠ΅Ρ ΠΈ Ρ. Π. Π ΡΠ°ΠΉΠ»Π°Ρ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ, ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ ΡΠ°Π·ΡΠΌΠ½ΡΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ, Π΅ΡΠ»ΠΈ ΠΎΠ½ΠΈ Π½Π΅ Π½Π°ΡΡΡΠΎΠ΅Π½Ρ.
- Π Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡΠ΅ΡΡΡ ΠΏΡΠΎΠ²Π΅ΡΡΡΡ ΡΠ°Π·ΠΌΠ΅Ρ, ΡΠΈΠΏ ΠΈ Π΄ΡΡΠ³ΠΈΠ΅ ΡΠ²Π΅Π΄Π΅Π½ΠΈΡ ΠΎ ΡΠ°ΠΉΠ»Π°Ρ Π² ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΠΈΠΈ Ρ ΡΡΠ΅Π±ΠΎΠ²Π°Π½ΠΈΡΠΌΠΈ Π²Π°ΡΠ΅Π³ΠΎ ΠΏΡΠΎΠ΅ΠΊΡΠ°, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΡΠ°Π·ΡΠ΅ΡΠΈΡΡ Π·Π°Π³ΡΡΠ·ΠΊΡ ΡΠΎΠ»ΡΠΊΠΎ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠΉ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠ³ΠΎ ΡΠ°Π·ΠΌΠ΅ΡΠ° ΠΈ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΡ ΡΠΈΠΏΠΎΠ², Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ JPEG, PNG ΠΈ Ρ. Π.
ΠΡΠΈΠΌΠ΅Ρ Π·Π°Π³ΡΡΠ·ΠΊΠΈ ΡΠ°ΠΉΠ»Π° Π² ΡΠ΅ΡΠ²Π»Π΅ΡΠ΅ Java ΠΈ JSP
ΠΠΎΡ ΠΏΠΎΠ»Π½ΡΠΉ ΠΊΠΎΠ΄ Π΄Π»Ρ Π·Π°Π³ΡΡΠ·ΠΊΠΈ ΡΠ°ΠΉΠ»ΠΎΠ² Π² Π²Π΅Π±-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Java Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ Servlet ΠΈ JSP. ΠΡΠΎΡ ΠΏΡΠΈΠΌΠ΅Ρ Π·Π°Π³ΡΡΠ·ΠΊΠΈ ΡΠ°ΠΉΠ»Π° ΡΡΠ΅Π±ΡΠ΅Ρ ΡΠ΅ΡΡΡΠ΅Ρ ΡΠ°ΠΉΠ»ΠΎΠ²:
- index.jsp, ΠΊΠΎΡΠΎΡΡΠΉ ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ HTML-ΠΊΠΎΠ½ΡΠ΅Π½Ρ Π΄Π»Ρ Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ ΡΠΎΡΠΌΡ, ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ Π²ΡΠ±ΠΈΡΠ°ΡΡ ΠΈ Π·Π°Π³ΡΡΠΆΠ°ΡΡ ΡΠ°ΠΉΠ» Π½Π° ΡΠ΅ΡΠ²Π΅Ρ.
- Π‘Π΅ΡΠ²Π»Π΅Ρ FileUploader, ΠΊΠΎΡΠΎΡΡΠΉ ΠΎΠ±ΡΠ°Π±Π°ΡΡΠ²Π°Π΅Ρ Π·Π°ΠΏΡΠΎΡ Π½Π° Π·Π°Π³ΡΡΠ·ΠΊΡ ΡΠ°ΠΉΠ»Π° ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΡ Apache FileUpload Π΄Π»Ρ Π°Π½Π°Π»ΠΈΠ·Π° Π΄Π°Π½Π½ΡΡ ΠΌΠ½ΠΎΠ³ΠΎΡΠ»Π΅ΠΌΠ΅Π½ΡΠ½ΠΎΠΉ ΡΠΎΡΠΌΡ
- web.xml Π΄Π»Ρ Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ ΡΠ΅ΡΠ²Π»Π΅ΡΠ° ΠΈ JSP Π² Π²Π΅Π±-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ Java.
- 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 |
Β
|
ΠΠΎΠ΄Π΅Π»Ρ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ² XML-Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠΎΠ² (DOM) | Microsoft Docs
-
000Z» data-article-date-source=»ms.date»>03/30/2017 - Π§ΡΠ΅Π½ΠΈΠ΅ Π·Π°Π½ΠΈΠΌΠ°Π΅Ρ 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.
Π‘ΡΡΠ»ΠΊΠΈ
- Wikipedia — ΠΠ΅ΡΠΊΡΠΈΠΏΡΠΎΡ ΡΠ°Π·Π²Π΅ΡΡΡΠ²Π°Π½ΠΈΡ
- Wikipedia — Java Servlet Wiki
- Oracle — Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡ web.xml
- Oracle — ΡΡ Π΅ΠΌΡ XML Π΄Π»Ρ Π΄Π΅ΡΠΊΡΠΈΠΏΡΠΎΡΠΎΠ² ΡΠ°Π·Π²Π΅ΡΡΡΠ²Π°Π½ΠΈΡ Java EE
- Google App Engine web.xml Π΄Π»Ρ Java
- 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»>
<ΡΠ°ΡΠΏΡΠΎΡΡΡΠ°Π½ΡΠ΅ΠΌΡΠΉ />
<ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡ-ΡΠ΅Π°Π½ΡΠ°>
Π½Π΅ ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΠΎ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±ΡΡΡ Π΄ΠΎΡΠ΅ΡΠ½ΠΈΠΌ ΠΏΠΎ ΠΎΡΠ½ΠΎΡΠ΅Π½ΠΈΡ ΠΊ
Π΄Π»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ web.xml ->
<ΡΠ°ΡΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅-ΡΠ΅Π³Π°> / WEB-INF / jsp / mytaglib.tld
->
<ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ-ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡ>
<ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅> ΠΠ΄ΡΠ΅Ρ ΡΠ»Π΅ΠΊΡΡΠΎΠ½Π½ΠΎΠΉ ΠΏΠΎΡΡΡ Π°Π΄ΠΌΠΈΠ½ΠΈΡΡΡΠ°ΡΠΎΡΠ°, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΠΉ Π΄Π»Ρ ΠΎΡΠΏΡΠ°Π²ΠΊΠΈ ΠΎΡΡΠ΅ΡΠΎΠ² ΠΎΠ± ΠΎΡΠΈΠ±ΠΊΠ°Ρ
.
<Π²Ρ
ΠΎΠ΄>
<ΡΠ΅ΡΠ²Π»Π΅Ρ>
<ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅-ΡΠ΅ΡΠ²Π»Π΅ΡΠ°>
<ΡΠ΅ΡΠ²Π»Π΅Ρ>
0:00, 6:00, 12:00, 18:00 ΠΡΠΎΡ ΡΠ΅Π³ Π΄Π΅ΠΉΡΡΠ²ΠΈΡΠ΅Π»Π΅Π½ ΡΠΎΠ»ΡΠΊΠΎ Π΄Π»Ρ ΡΠΌΠΎΠ»Ρ ->
<ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅-ΡΠ΅ΡΠ²Π»Π΅ΡΠ°>
<ΡΠ΅ΡΠ²Π»Π΅Ρ>
<ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅-ΡΠ΅ΡΠ²Π»Π΅ΡΠ°>
<ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅-ΡΠ΅ΡΠ²Π»Π΅ΡΠ°>
<ΡΠ΅ΡΠ²Π»Π΅Ρ>
<ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅-ΡΠ΅ΡΠ²Π»Π΅ΡΠ°>
<ΡΠΈΠ»ΡΡΡ>
<ΡΠΈΠ»ΡΡΡ>
<ΡΠ»ΡΡΠ°ΡΠ΅Π»Ρ>
<ΠΊΠ»Π°ΡΡ-ΡΠ»ΡΡΠ°ΡΠ΅Π»Ρ> com.metawerx.listener.ContextListener
<ΡΠ»ΡΡΠ°ΡΠ΅Π»Ρ>
<ΡΠΎΠ»Ρ-Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡΠΈ>
<ΠΈΠΌΡ-ΡΠΎΠ»ΠΈ> Π°Π΄ΠΌΠΈΠ½ΠΈΡΡΡΠ°ΡΠΎΡ
<ΡΠΎΠ»Ρ-Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡΠΈ>
<ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΠ΅-Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡΡ>
<ΠΊΠΎΠ»Π»Π΅ΠΊΡΠΈΡ Π²Π΅Π±-ΡΠ΅ΡΡΡΡΠΎΠ²>
->
<ΠΈΠΌΡ-ΡΠΎΠ»ΠΈ> Π°Π΄ΠΌΠΈΠ½ΠΈΡΡΡΠ°ΡΠΎΡ
->
<ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΠ΅-Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡΡ>
<ΠΊΠΎΠ»Π»Π΅ΠΊΡΠΈΡ Π²Π΅Π±-ΡΠ΅ΡΡΡΡΠΎΠ²>
<ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΠ΅-Π΄Π°Π½Π½ΡΡ
-ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ>
<ΡΡΡΠ°Π½ΠΈΡΠ°-ΠΎΡΠΈΠ±ΠΊΠ°>
<ΡΠ°ΡΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅> / error404.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
Luxor
ΠΠ΅ΡΠ΅ΠΉΡΠΈ Π² Luxor SwiXml
ΠΠ΅ΡΠ΅ΠΉΡΠΈ ΠΊ SwiXml XUI
ΠΠ΅ΡΠ΅ΠΉΡΠΈ ΠΊ XUI ΠΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠΉ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ Beryl XML
ΠΠ΅ΡΠ΅ΠΉΡΠΈ ΠΊ Beryl XML GUI Purnama XUI
ΠΠ΅ΡΠ΅ΠΉΡΠΈ ΠΊ Purnama XUI SwingML
ΠΠ΅ΡΠ΅ΠΉΡΠΈ ΠΊ SwingML UIHierarchy
ΠΠ΅ΡΠ΅ΠΉΡΠΈ ΠΊ UIHierarchy thinlet
ΠΠ΅ΡΠ΅ΠΉΡΠΈ Π² thinlet jXUL
ΠΠ΅ΡΠ΅ΠΉΡΠΈ ΠΊ jXUL KoalaGMLΠΠ΅ΡΠ΅ΠΉΡΠΈ ΠΊ KoalaGML WidgetServer
ΠΠ΅ΡΠ΅ΠΉΡΠΈ ΠΊ WidgetServer Laszlo
Go To Laszlo gui4j
ΠΠ΅ΡΠ΅ΠΉΡΠΈ ΠΊ gui4j XAMJ
ΠΠ΅ΡΠ΅ΠΉΡΠΈ ΠΊ XAMJ JAXX
ΠΠ΅ΡΠ΅ΠΉΡΠΈ ΠΊ JAXX wazaabi
ΠΠ΅ΡΠ΅ΠΉΡΠΈ ΠΊ wazaabi CookSwing
ΠΠ΅ΡΠ΅ΠΉΡΠΈ ΠΊ CookSwing web.xml — Java-ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ° — Community Wikiweb.xml — Java-ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ° — Community Wiki ΠΠ΅ΡΠ΅ΠΉΡΠΈ Π² ΠΊΠΎΠ½Π΅Ρ Π±Π°Π½Π½Π΅ΡΠ° ΠΠ΅ΡΠ΅ΠΉΡΠΈ ΠΊ Π½Π°ΡΠ°Π»Ρ Π±Π°Π½Π½Π΅ΡΠ° ΠΠ΅ΡΠ΅ΠΉΡΠΈ ΠΊ ΠΊΠΎΠ½ΡΡ ΠΌΠ΅ΡΠ°Π΄Π°Π½Π½ΡΡ ΠΠ΅ΡΠ΅ΠΉΡΠΈ ΠΊ Π½Π°ΡΠ°Π»Ρ ΠΌΠ΅ΡΠ°Π΄Π°Π½Π½ΡΡ
{«serverDuration»: 82, «requestCorrelationId»: «3d3933a9bbaf4772»} |