ΠŸΠΎΠΌΠΎΡ‰ΡŒ Π² написании студСнчСских Ρ€Π°Π±ΠΎΡ‚
АнтистрСссовый сСрвис

Π Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° Π²Π΅Π±-прилоТСния

ΠšΡƒΡ€ΡΠΎΠ²Π°ΡΠŸΠΎΠΌΠΎΡ‰ΡŒ Π² Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΠΈΠ£Π·Π½Π°Ρ‚ΡŒ ΡΡ‚ΠΎΠΈΠΌΠΎΡΡ‚ΡŒΠΌΠΎΠ΅ΠΉ Ρ€Π°Π±ΠΎΡ‚Ρ‹

Для ΡƒΠΌΠ΅Π½ΡŒΡˆΠ΅Π½ΠΈΡ стоимости ΠΈ ΡƒΠ²Π΅Π»ΠΈΡ‡Π΅Π½ΠΈΡ скорости проСктирования ΠΈ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΊΠΎΡ€ΠΏΠΎΡ€Π°Ρ‚ΠΈΠ²Π½ΠΎΠ³ΠΎ прилоТСния ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ° J2EE ΠΏΡ€Π΅Π΄Π»Π°Π³Π°Π΅Ρ‚ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π½Ρ‹ΠΉ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ ΠΊ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡŽ, Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅, сборкС ΠΈ Π²Π½Π΅Π΄Ρ€Π΅Π½ΠΈΡŽ ΠΊΠΎΡ€ΠΏΠΎΡ€Π°Ρ‚ΠΈΠ²Π½Ρ‹Ρ… ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ. ΠŸΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ° J2EE ΠΏΡ€Π΅Π΄Π»Π°Π³Π°Π΅Ρ‚ модСль ΠΌΠ½ΠΎΠ³ΠΎΡƒΡ€ΠΎΠ²Π½Π΅Π²ΠΎΠ³ΠΎ распрСдСлСнного прилоТСния, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎΠ³ΠΎ использования ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ², ΠΈΠ½Ρ‚Π΅Π³Ρ€ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ ΠΎΠ±ΠΌΠ΅Π½ Π΄Π°Π½Π½Ρ‹ΠΌΠΈ Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ XML… Π§ΠΈΡ‚Π°Ρ‚ΡŒ Π΅Ρ‰Ρ‘ >

Π Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° Π²Π΅Π±-прилоТСния (Ρ€Π΅Ρ„Π΅Ρ€Π°Ρ‚, курсовая, Π΄ΠΈΠΏΠ»ΠΎΠΌ, ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒΠ½Π°Ρ)

Π£ Π»ΡŽΠ±ΠΎΠ³ΠΎ сколько-Π½ΠΈΠ±ΡƒΠ΄ΡŒ большого прСдприятия ΠΏΠΎ ΠΌΠ΅Ρ€Π΅ Π΅Π³ΠΎ развития со Π²Ρ€Π΅ΠΌΠ΅Π½Π΅ΠΌ Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ‚ ΠΏΠΎΡ‚Ρ€Π΅Π±Π½ΠΎΡΡ‚ΡŒ Π² ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π΅ ΠΈ ΠΎΡ‚слСТивании сСтСвой активности Π΅Π³ΠΎ ΡƒΠ·Π»ΠΎΠ², сСрвСров ΠΈ ΠΏΡ€ΠΎΡ‡ΠΈΡ… сСтСвых устройств. Π’ ΠΌΠΈΡ€Π΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ обСспСчСния сущСствуСт Π½Π΅ΠΌΠ°Π»ΠΎ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠΉ ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎΠ³ΠΎ Ρ€ΠΎΠ΄Π° Π·Π°Π΄Π°Ρ‡ ΠΈ, ΠΊΠ°ΠΊ ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ, Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΈΠ· Π½ΠΈΡ… Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ прСдприятиСм. Однако часто систСмным администраторам Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ спСцифичСский Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π», Π½Π΅ Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΠ΅ΠΌΡ‹ΠΉ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΌΠΈ прилоТСниями. Π—Π°Π΄Π°Ρ‡Π΅ΠΉ Π΄Π°Π½Π½ΠΎΠ³ΠΎ курсового ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° являСтся Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° Π²Π΅Π±-прилоТСния (язык программирования — Java, Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΈ: J2EE, JSP, Javascript, MS SQL Server, JDBC, JNDI, AJAX, ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ — Apache-Tomcat), ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‰Π΅Π³ΠΎ ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎΠΌΡƒ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŽ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎ ΡΠ΅Ρ‚Π΅Π²ΠΎΠΉ активности ΡƒΠ·Π»ΠΎΠ² прСдприятия, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ ΠΎΠ½ΠΎ ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚ ΠΈΠ· ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎ ΡƒΠΊΠ°Π·Π°Π½Π½Ρ‹Ρ… источников.

ΠŸΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π΄ΠΎΠ»ΠΆΠ½ΠΎ ΡƒΠ΄ΠΎΠ²Π»Π΅Ρ‚Π²ΠΎΡ€ΡΡ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ трСбованиям:

Π‘ΠΊΡ€Ρ‹Π²Π°Ρ‚ΡŒ ΠΎΡ‚ ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎΠ³ΠΎ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎ Ρ‚ΠΎΠΌ, ΠΎΡ‚ΠΊΡƒΠ΄Π° ΠΏΠΎΠ»ΡƒΡ‡Π°ΡŽΡ‚ΡΡ Π΄Π°Π½Π½Ρ‹Π΅ ΠΎ ΡΠ΅Ρ‚Π΅Π²ΠΎΠΉ активности ΡƒΠ·Π»ΠΎΠ² прСдприятия;

Π’Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ ΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ страниц, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°ΡŽΡ‚ΡΡ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠΈ с Π³Ρ€Π°Ρ„ΠΈΠΊΠ°ΠΌΠΈ сСтСвой активности, Π² Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡ‚ΠΈ ΠΎΡ‚ Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€Π°;

ΠŸΠΎΠ·Π²ΠΎΠ»ΡΡ‚ΡŒ Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ страниц, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°ΡŽΡ‚ΡΡ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠΈ с Π³Ρ€Π°Ρ„ΠΈΠΊΠ°ΠΌΠΈ сСтСвой активности;

Π’Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ автоматичСскоС ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ структуры страниц, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°ΡŽΡ‚ΡΡ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠΈ с Π³Ρ€Π°Ρ„ΠΈΠΊΠ°ΠΌΠΈ сСтСвой активности, послС нСпосрСдствСнного рСдактирования этих страниц.

1. НазначСниС ΠΈ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΠΈ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π½Π½ΠΎΠ³ΠΎ прилоТСния

1.1 ΠžΡΠ½ΠΎΠ²Π½Ρ‹Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΈ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΠΈ, Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΠ΅ΠΌΡ‹Π΅ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΠΌ

ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ интСрфСйс java ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π“Π»Π°Π²Π½ΠΎΠΉ Π·Π°Π΄Π°Ρ‡Π΅ΠΉ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π½Π½ΠΎΠ³ΠΎ прилоТСния являлось ΠΎΠ±Π»Π΅Π³Ρ‡Π΅Π½ΠΈΠ΅ Ρ€Π°Π±ΠΎΡ‚Ρ‹ систСмных администраторов ΠΏΠΎ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŽ активности сСтСвых ΠΈ ΠΏΠ΅Ρ€ΠΈΡ„Π΅Ρ€ΠΈΠΉΠ½Ρ‹Ρ… устройств прСдприятия. ΠŸΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ взаимодСйствуСт Π²ΠΎ Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½Π΅ΠΉ сСти прСдприятия со ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹ΠΌ сСрвСром PRTG Server, ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚ ΠΎΡ‚ Π½Π΅Π³ΠΎ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎΠ± Π°ΠΊΡ‚ивности сСтСвых ΠΈ ΠΏΠ΅Ρ€ΠΈΡ„Π΅Ρ€ΠΈΠΉΠ½Ρ‹Ρ… устройств ΠΈ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Π΅Ρ‚ эту ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ Π½Π° ΡΠ²ΠΎΠΈΡ… страницах.

ВторостСпСнными Π·Π°Π΄Π°Ρ‡Π°ΠΌΠΈ ΡΠ²Π»ΡΡŽΡ‚ΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ администрирования сСнсоров — ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ², ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‰ΠΈΡ… ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎΠ± Π°ΠΊΡ‚ивности устройства Π² Π²ΠΈΠ΄Π΅ изобраТСния Π³Ρ€Π°Ρ„ΠΈΠΊΠ° Π² Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΠΌ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ. А ΠΈΠΌΠ΅Π½Π½ΠΎ: администратор прилоТСния ΠΈΠΌΠ΅Π΅Ρ‚ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ, Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΈ ΡƒΠ΄Π°Π»ΡΡ‚ΡŒ страницы с ΡΠ΅Π½ΡΠΎΡ€Π°ΠΌΠΈ, ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ, Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΈ ΡƒΠ΄Π°Π»ΡΡ‚ΡŒ сСнсоры Π½Π° ΡΡ‚ΠΈΡ… страницах.

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

1.2 Π‘Ρ…Π΅ΠΌΠ° сцСнария Ρ€Π°Π±ΠΎΡ‚Ρ‹ прилоТСния ΠΈ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡ‚вия Π΅Π³ΠΎ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚

На ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ схСмС ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΡ‘Π½ сцСнарий Ρ€Π°Π±ΠΎΡ‚Ρ‹ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ Π²Π΅Π±-прилоТСния:

Рис. 1

Администратор ΠΈΠ»ΠΈ ΠΊΠΎΠ½Π΅Ρ‡Π½Ρ‹ΠΉ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΡŽΡ‚ запрос ΠΊ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡŽ, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ Π² ΡΠ²ΠΎΡŽ ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ Π·Π°ΠΏΡ€Π°ΡˆΠΈΠ²Π°Π΅Ρ‚ Π΄Π°Π½Π½Ρ‹Π΅ Ρƒ ΡΠ΅Ρ€Π²Π΅Ρ€Π° PRTG ΠΈ Π°Π΄Ρ€Π΅ΡΡƒΠ΅Ρ‚ ΠΈΡ… ΠΏΠΎ Π·Π°ΠΏΡ€ΠΎΡΡƒ. Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ администратор ΠΈΠΌΠ΅Π΅Ρ‚ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ содСрТимоС страниц с ΡΠ΅Π½ΡΠΎΡ€Π°ΠΌΠΈ ΠΈ ΡƒΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒ этими страницами.

На ΡΡ‚Ρ€Π°Π½ΠΈΡ†Π°Ρ… с ΡΠ΅Π½ΡΠΎΡ€Π°ΠΌΠΈ с ΡƒΠΊΠ°Π·Π°Π½Π½Ρ‹ΠΌΠΈ ΠΈΠ½Ρ‚Π΅Ρ€Π²Π°Π»Π°ΠΌΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‚ΡΡ сцСнарии Π½Π° ΡΠ·Ρ‹ΠΊΠ΅ JavsScript для обновлСния содСрТимого сСнсоров ΠΈ ΡΠΎΠ΄Π΅Ρ€ΠΆΠΈΠΌΠΎΠ³ΠΎ самой страницы.

Π’ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ Ρƒ ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎΠ³ΠΎ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ создаётся Π²ΠΏΠ΅Ρ‡Π°Ρ‚Π»Π΅Π½ΠΈΠ΅ измСнСния Π³Ρ€Π°Ρ„ΠΈΠΊΠΎΠ² Π² Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΠΌ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ ΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ содСрТимого страницы (Π² ΡΠ»ΡƒΡ‡Π°Π΅, ΠΊΠΎΠ³Π΄Π° ΠΊΠ°ΠΊΠΎΠΉ-Π»ΠΈΠ±ΠΎ сСнсор Π½Π΅Π°ΠΊΡ‚ΡƒΠ°Π»Π΅Π½).

2. ОписаниС срСдств Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ прилоТСния

2.1 Π―Π·Ρ‹ΠΊ программирования Java

Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ языка Java — это Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΎΠ΄ΠΈΠ½ ΠΈΠ· ΡΠ°ΠΌΡ‹Ρ… Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… шагов Π²ΠΏΠ΅Ρ€Π΅Π΄ Π² ΠΎΠ±Π»Π°ΡΡ‚ΠΈ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ срСд программирования Π·Π° ΠΏΠΎΡΠ»Π΅Π΄Π½ΠΈΠ΅ 20 Π»Π΅Ρ‚. Π―Π·Ρ‹ΠΊ HTML (Hypertext Markup Language — язык Ρ€Π°Π·ΠΌΠ΅Ρ‚ΠΊΠΈ гипСртСкста) Π±Ρ‹Π» Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌ для статичСского размСщСния страниц Π²ΠΎ «Π’сСмирной ΠΏΠ°ΡƒΡ‚ΠΈΠ½Π΅» WWW (World Wide Web). Π―Π·Ρ‹ΠΊ Java потрСбовался для качСствСнного скачка Π² ΡΠΎΠ·Π΄Π°Π½ΠΈΠΈ ΠΈΠ½Ρ‚Π΅Ρ€Π°ΠΊΡ‚ΠΈΠ²Π½Ρ‹Ρ… ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚ΠΎΠ² для сСти Internet.

Π’Ρ€ΠΈ ΠΊΠ»ΡŽΡ‡Π΅Π²Ρ‹Ρ… элСмСнта объСдинились Π² Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΈ языка Java ΠΈ ΡΠ΄Π΅Π»Π°Π»ΠΈ Π΅Π΅ Π² ΠΊΠΎΡ€Π½Π΅ ΠΎΡ‚Π»ΠΈΡ‡Π½ΠΎΠΉ ΠΎΡ‚ Π²ΡΠ΅Π³ΠΎ, ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰Π΅Π³ΠΎ Π½Π° ΡΠ΅Π³ΠΎΠ΄Π½ΡΡˆΠ½ΠΈΠΉ дСнь.

Java прСдоставляСт для ΡˆΠΈΡ€ΠΎΠΊΠΎΠ³ΠΎ использования свои Π°ΠΏΠΏΠ»Π΅Ρ‚Ρ‹ (applets) — нСбольшиС, Π½Π°Π΄Π΅ΠΆΠ½Ρ‹Π΅, Π΄ΠΈΠ½Π°ΠΌΠΈΡ‡Π½Ρ‹Π΅, Π½Π΅ Π·Π°Π²ΠΈΡΡΡ‰ΠΈΠ΅ ΠΎΡ‚ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹ Π°ΠΊΡ‚ΠΈΠ²Π½Ρ‹Π΅ сСтСвыС прилоТСния, встраиваСмыС Π² ΡΡ‚Ρ€Π°Π½ΠΈΡ†Ρ‹ Web. АпплСты Java ΠΌΠΎΠ³ΡƒΡ‚ Π½Π°ΡΡ‚Ρ€Π°ΠΈΠ²Π°Ρ‚ΡŒΡΡ ΠΈ Ρ€Π°ΡΠΏΡ€ΠΎΡΡ‚Ρ€Π°Π½ΡΡ‚ΡŒΡΡ потрСбитСлям с Ρ‚Π°ΠΊΠΎΠΉ ΠΆΠ΅ Π»Π΅Π³ΠΊΠΎΡΡ‚ΡŒΡŽ, ΠΊΠ°ΠΊ Π»ΡŽΠ±Ρ‹Π΅ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Ρ‹ HTML.

Java высвобоТдаСт ΠΌΠΎΡ‰ΡŒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠΉ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ, сочСтая простой ΠΈ Π·Π½Π°ΠΊΠΎΠΌΡ‹ΠΉ синтаксис с Π½Π°Π΄Π΅ΠΆΠ½ΠΎΠΉ ΠΈ ΡƒΠ΄ΠΎΠ±Π½ΠΎΠΉ Π² Ρ€Π°Π±ΠΎΡ‚Π΅ срСдой Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ. Π­Ρ‚ΠΎ позволяСт ΡˆΠΈΡ€ΠΎΠΊΠΎΠΌΡƒ ΠΊΡ€ΡƒΠ³Ρƒ программистов быстро ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ Π½ΠΎΠ²Ρ‹Π΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠΈ Π½ΠΎΠ²Ρ‹Π΅ Π°ΠΏΠΏΠ»Π΅Ρ‚Ρ‹.

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

Π―Π·Ρ‹ΠΊ Java зародился ΠΊΠ°ΠΊ Ρ‡Π°ΡΡ‚ΡŒ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° создания ΠΏΠ΅Ρ€Π΅Π΄ΠΎΠ²ΠΎΠ³ΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ обСспСчСния (ПО) для Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… Π±Ρ‹Ρ‚ΠΎΠ²Ρ‹Ρ… ΠΏΡ€ΠΈΠ±ΠΎΡ€ΠΎΠ². РСализация ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° Π±Ρ‹Π»Π° Π½Π°Ρ‡Π°Ρ‚Π° Π½Π° ΡΠ·Ρ‹ΠΊΠ΅ Π‘++, Π½ΠΎ Π²ΡΠΊΠΎΡ€Π΅ Π²ΠΎΠ·Π½ΠΈΠΊ ряд ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ, Π½Π°ΠΈΠ»ΡƒΡ‡ΡˆΠΈΠΌ срСдством Π±ΠΎΡ€ΡŒΠ±Ρ‹ с ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌΠΈ Π±Ρ‹Π»ΠΎ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ самого инструмСнта — языка программирования. Π‘Ρ‚Π°Π»ΠΎ ΠΎΡ‡Π΅Π²ΠΈΠ΄Π½Ρ‹ΠΌ, Ρ‡Ρ‚ΠΎ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠΎ-нСзависимый язык программирования, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰ΠΈΠΉ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½Π΅ ΠΏΡ€ΠΈΡ…ΠΎΠ΄ΠΈΠ»ΠΎΡΡŒ Π±Ρ‹ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎ для ΠΊΠ°ΠΆΠ΄ΠΎΠΉ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρ‹ ΠΈ ΠΌΠΎΠΆΠ½ΠΎ Π±Ρ‹Π»ΠΎ Π±Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π½Π° Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… процСссорах ΠΏΠΎΠ΄ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹ΠΌΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½Ρ‹ΠΌΠΈ систСмами.

Когда Java оказался Π² Ρ€ΡƒΠΊΠ°Ρ… Internet, стало Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹ΠΌ Π·Π°ΠΏΡƒΡΠΊΠ°Ρ‚ΡŒ Java-Π°ΠΏΠ»Π΅Ρ‚Ρ‹ — нСбольшиС ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, Π·Π°Π³Ρ€ΡƒΠΆΠ°Π΅ΠΌΡ‹Π΅ Ρ‡Π΅Ρ€Π΅Π· Internet. WebRunner Π±Ρ‹Π» ΠΏΠ΅Ρ€Π΅ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½ Π² HotJava ΠΈ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΡ Netscape встала Π½Π° ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΡƒ Java-ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚ΠΎΠ².

ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ Π°ΠΏΠΏΠ»Π΅Ρ‚ — это нСбольшая ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°, динамичСски загруТаСмая ΠΏΠΎ ΡΠ΅Ρ‚ΠΈ — Ρ‚ΠΎΡ‡Π½ΠΎ Ρ‚Π°ΠΊ ΠΆΠ΅, ΠΊΠ°ΠΊ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ°, Π·Π²ΡƒΠΊΠΎΠ²ΠΎΠΉ Ρ„Π°ΠΉΠ» ΠΈΠ»ΠΈ элСмСнт ΠΌΡƒΠ»ΡŒΡ‚ΠΈΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΠΈ. Главная ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΡΡ‚ΡŒ Π°ΠΏΠΏΠ»Π΅Ρ‚ΠΎΠ² Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ ΠΎΠ½ΠΈ ΡΠ²Π»ΡΡŽΡ‚ΡΡ настоящими ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°ΠΌΠΈ, Π° Π½Π΅ ΠΎΡ‡Π΅Ρ€Π΅Π΄Π½Ρ‹ΠΌ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΎΠΌ Ρ„Π°ΠΉΠ»ΠΎΠ² для хранСния ΠΌΡƒΠ»ΡŒΡ‚Ρ„ΠΈΠ»ΡŒΠΌΠΎΠ² ΠΈΠ»ΠΈ ΠΊΠ°ΠΊΠΎΠΉ-Π»ΠΈΠ±ΠΎ Π΄Ρ€ΡƒΠ³ΠΎΠΉ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ. АпплСт Π½Π΅ ΠΏΡ€ΠΎΡΡ‚ΠΎ ΠΏΡ€ΠΎΠΈΠ³Ρ€Ρ‹Π²Π°Π΅Ρ‚ ΠΎΠ΄ΠΈΠ½ ΠΈ Ρ‚ΠΎΡ‚ ΠΆΠ΅ сцСнарий, Π° Ρ€Π΅Π°Π³ΠΈΡ€ΡƒΠ΅Ρ‚ Π½Π° Π΄Π΅ΠΉΡΡ‚вия ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ ΠΈ ΠΌΠΎΠΆΠ΅Ρ‚ динамичСски ΠΌΠ΅Π½ΡΡ‚ΡŒ своС ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅.

ИмСнно броскиС Web-страницы с Π°Π½ΠΈΠΌΠ°Ρ†ΠΈΠ΅ΠΉ ΠΏΡ€ΠΈΠ²Π»Π΅ΠΊΠ»ΠΈ Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ Ρ€Π°Π½Π½ΠΈΡ… ΠΏΡ€ΠΈΠ²Π΅Ρ€ΠΆΠ΅Π½Ρ†Π΅Π² языка Java. ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΠΈ Π½Π΅ ΡΡ€Π°Π·Ρƒ смогли ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ ΠΎΡΠ²ΠΎΠΈΡ‚ΡŒ Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ Ρ€Π΅Π²ΠΎΠ»ΡŽΡ†ΠΈΠΎΠ½Π½Ρ‹Π΅ аспСкты Java, этот язык часто сравнивался с Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ тСхнологиями для Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ динамичСских ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ ΠΈ ΠΏΡ€ΠΎΡΡ‚ΠΎΠ³ΠΎ взаимодСйствия с Web-ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π°ΠΌΠΈ.

Π’ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ задания Π»ΡŽΠ±Ρ‹Ρ… ΡƒΡ€ΠΎΠ²Π½Π΅ΠΉ взаимодСйствия с ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΌ сущСствуСт лишь Π² Ρ‚ΠΎΠΌ случаС, ΠΊΠΎΠ³Π΄Π° ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΠ°Ρ для Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ° прСдоставляСт ΠΏΠΎΠ»Π½ΠΎΡ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΡƒΡŽ срСду программирования.

Π’ Π½Π°ΡˆΠΈ Π΄Π½ΠΈ сущСствуСт ΠΌΠ½ΠΎΠ³ΠΎ систСм программирования, гордящихся Ρ‚Π΅ΠΌ, Ρ‡Ρ‚ΠΎ Π² Π½ΠΈΡ… ΠΎΠ΄Π½ΠΎΠΉ ΠΈ Ρ‚ΠΎΠΉ ΠΆΠ΅ Ρ†Π΅Π»ΠΈ ΠΌΠΎΠΆΠ½ΠΎ Π΄ΠΎΡΡ‚ΠΈΡ‡ΡŒ дСсятком Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… способов. Π’ ΡΠ·Ρ‹ΠΊΠ΅ Java ΠΈΠ·ΠΎΠ±ΠΈΠ»ΠΈΠ΅ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠΉ отсутствуСт. Π‘Ρ‚Ρ€Π΅ΠΌΠ»Π΅Π½ΠΈΠ΅ ΠΊ ΠΏΡ€ΠΎΡΡ‚ΠΎΡ‚Π΅ Π·Π°Ρ‡Π°ΡΡ‚ΡƒΡŽ ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΠ»ΠΎ ΠΊ ΡΠΎΠ·Π΄Π°Π½ΠΈΡŽ нСэффСктивных ΠΈ Π½Π΅Π²Ρ‹Ρ€Π°Π·ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… языков Ρ‚ΠΈΠΏΠ° ΠΊΠΎΠΌΠ°Π½Π΄Π½Ρ‹Ρ… ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€ΠΎΠ². Java ΠΊ Ρ‡ΠΈΡΠ»Ρƒ Ρ‚Π°ΠΊΠΈΡ… языков Π½Π΅ ΠΎΡ‚носится.

Π’ ΠΏΠΎΠΏΡƒΠ»ΡΡ€Π½ΠΎΠΉ Π»ΠΈΡ‚Π΅Ρ€Π°Ρ‚ΡƒΡ€Π΅ Π½Π°ΡˆΠΈΡ… Π΄Π½Π΅ΠΉ, особСнно Ссли Ρ€Π΅Ρ‡ΡŒ Π·Π°Ρ…ΠΎΠ΄ΠΈΡ‚ ΠΎΠ± Internet, стало ΠΌΠΎΠ΄Π½ΠΎΠΉ Ρ‚Π΅ΠΌΠΎΠΉ обсуТдСниС вопросов бСзопасности. Один ΠΈΠ· ΠΊΠ»ΡŽΡ‡Π΅Π²Ρ‹Ρ… ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΠΎΠ² Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ языка Java Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π»ΡΡ Π² ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡Π΅Π½ΠΈΠΈ Π·Π°Ρ‰ΠΈΡ‚Ρ‹ ΠΎΡ‚ Π½Π΅ΡΠ°Π½ΠΊΡ†ΠΈΠΎΠ½ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ доступа. ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π½Π° Java Π½Π΅ ΠΌΠΎΠ³ΡƒΡ‚ Π²Ρ‹Π·Ρ‹Π²Π°Ρ‚ΡŒ Π³Π»ΠΎΠ±Π°Π»ΡŒΠ½Ρ‹Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΈ ΠΏΠΎΠ»ΡƒΡ‡Π°Ρ‚ΡŒ доступ ΠΊ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ»ΡŒΠ½Ρ‹ΠΌ систСмным рСсурсам, Ρ‡Ρ‚ΠΎ обСспСчиваСт Π² Java ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ бСзопасности, нСдоступный для Π΄Ρ€ΡƒΠ³ΠΈΡ… языков.

Java ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡ΠΈΠ²Π°Π΅Ρ‚ программиста Π² Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… ΠΊΠ»ΡŽΡ‡Π΅Π²Ρ‹Ρ… областях ΠΈ Ρ‚Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ способствуСт ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠ΅Π½ΠΈΡŽ ошибок Π½Π° Ρ€Π°Π½Π½ΠΈΡ… стадиях Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹. Π’ Ρ‚ΠΎ ΠΆΠ΅ врСмя Π² Π½Π΅ΠΉ ΠΎΡ‚ΡΡƒΡ‚ΡΡ‚Π²ΡƒΡŽΡ‚ ΠΌΠ½ΠΎΠ³ΠΈΠ΅ источники ошибок, свойствСнных Π΄Ρ€ΡƒΠ³ΠΈΠΌ языкам программирования (строгая типизация, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€).

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

Π‘ΠΎΠ·Π΄Π°Ρ‚Π΅Π»ΠΈ Java Π½Π°Π»ΠΎΠΆΠΈΠ»ΠΈ Π½Π° ΡΠ·Ρ‹ΠΊ ΠΈ Π½Π° ΡΡ€Π΅Π΄Ρƒ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ выполнСния нСсколько ТСстких Ρ‚Ρ€Π΅Π±ΠΎΠ²Π°Π½ΠΈΠΉ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚, ΠΎΠ΄Π½Π°ΠΆΠ΄Ρ‹ написав, всСгда Π·Π°ΠΏΡƒΡΠΊΠ°Ρ‚ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ Π² Π»ΡŽΠ±ΠΎΠΌ мСстС ΠΈ Π² Π»ΡŽΠ±ΠΎΠ΅ врСмя (Π³Π΄Π΅ сущСствуСт Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Π°Ρ Java-машина — Π±Ρ€ΠΎΡƒΠ·Π΅Ρ€Ρ‹ Π½Π° Π²ΡΠ΅Ρ… ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ°Ρ…, OS/2, Netware).

НСобычайная ΡΠΏΠΎΡΠΎΠ±Π½ΠΎΡΡ‚ΡŒ Java ΠΈΡΠΏΠΎΠ»Π½ΡΡ‚ΡŒ свой ΠΊΠΎΠ΄ Π½Π° Π»ΡŽΠ±ΠΎΠΉ ΠΈΠ· ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅ΠΌΡ‹Ρ… ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌ достигаСтся Ρ‚Π΅ΠΌ, Ρ‡Ρ‚ΠΎ Π΅Π΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Ρ‚Ρ€Π°Π½ΡΠ»ΠΈΡ€ΡƒΡŽΡ‚ΡΡ Π² Π½Π΅ΠΊΠΎΠ΅ ΠΏΡ€ΠΎΠΌΠ΅ΠΆΡƒΡ‚ΠΎΡ‡Π½ΠΎΠ΅ прСдставлСниС, Π½Π°Π·Ρ‹Π²Π°Π΅ΠΌΠΎΠ΅ Π±Π°ΠΉΡ‚-ΠΊΠΎΠ΄ΠΎΠΌ (bytecode). Π‘Π°ΠΉΡ‚-ΠΊΠΎΠ΄, Π² ΡΠ²ΠΎΡŽ ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ, ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒΡΡ Π² Π»ΡŽΠ±ΠΎΠΉ систСмС, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ Π΅ΡΡ‚ΡŒ срСда Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ выполнСния Java. НСсмотря Π½Π° Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ Π² Java ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€, Π±Π°ΠΉΡ‚-ΠΊΠΎΠ΄ Π»Π΅Π³ΠΊΠΎ пСрСводится нСпосрСдствСнно Π² «Ρ€ΠΎΠ΄Π½Ρ‹Π΅» ΠΌΠ°ΡˆΠΈΠ½Π½Ρ‹Π΅ ΠΊΠΎΠ΄Ρ‹ (Just In Time compilers) «Π½Π° Π»Π΅Ρ‚Ρƒ». ΠŸΡ€ΠΈ этом достигаСтся ΠΎΡ‡Π΅Π½ΡŒ высокая ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ (Symantec JIT встроСн Π² Netscape Navigator).

Π―Π·Ρ‹ΠΊ Java, хотя ΠΈ Π±ΠΎΠ»Π΅Π΅ слоТный Ρ‡Π΅ΠΌ языки ΠΊΠΎΠΌΠ°Π½Π΄Π½Ρ‹Ρ… ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€ΠΎΠ², всС ΠΆΠ΅ Π½Π΅ΠΈΠ·ΠΌΠ΅Ρ€ΠΈΠΌΠΎ ΠΏΡ€ΠΎΡ‰Π΅ для изучСния, Ρ‡Π΅ΠΌ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ языки программирования, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ C++.

Π‘Ρ€Π΅Π΄Π° Java — это Π½Π΅Ρ‡Ρ‚ΠΎ Π³ΠΎΡ€Π°Π·Π΄ΠΎ большСС, Ρ‡Π΅ΠΌ просто язык программирования. Π’ Π½Π΅Π΅ встроСн Π½Π°Π±ΠΎΡ€ ΠΊΠ»ΡŽΡ‡Π΅Π²Ρ‹Ρ… классов, содСрТащих основныС абстракции Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ ΠΌΠΈΡ€Π°, с ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ придСтся ΠΈΠΌΠ΅Ρ‚ΡŒ Π΄Π΅Π»ΠΎ вашим ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°ΠΌ. Основой популярности Java ΡΠ²Π»ΡΡŽΡ‚ΡΡ встроСнныС классы-абстракции, сдСлавшиС Π΅Π³ΠΎ языком, Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ нСзависимым ΠΎΡ‚ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹. Π‘ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ, ΠΏΠΎΠ΄ΠΎΠ±Π½Ρ‹Π΅ MFC/COM, OWL, VCL, NeXTStep, Motif ΠΈ OpenDoc прСкрасно Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚ Π½Π° ΡΠ²ΠΎΠΈΡ… ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ°Ρ…, ΠΎΠ΄Π½Π°ΠΊΠΎ сСгодня Π³Π»Π°Π²Π½ΠΎΠΉ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠΎΠΉ становится Internet.

БСгодня всС большС ΠΈ Π±ΠΎΠ»ΡŒΡˆΠ΅ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ² хотят ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ распрСдСлСнныС Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΎΠ½Π½Ρ‹Π΅ ΠΊΠΎΡ€ΠΏΠΎΡ€Π°Ρ‚ΠΈΠ²Π½Ρ‹Π΅ прилоТСния ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ прСимущСства Π² ΡΠΊΠΎΡ€ΠΎΡΡ‚ΠΈ, защищСнности ΠΈ Π½Π°Π΄Π΅ΠΆΠ½ΠΎΡΡ‚ΠΈ, обСспСчиваСмыС сСрвСрными тСхнологиями.

Для ΡƒΠΌΠ΅Π½ΡŒΡˆΠ΅Π½ΠΈΡ стоимости ΠΈ ΡƒΠ²Π΅Π»ΠΈΡ‡Π΅Π½ΠΈΡ скорости проСктирования ΠΈ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΊΠΎΡ€ΠΏΠΎΡ€Π°Ρ‚ΠΈΠ²Π½ΠΎΠ³ΠΎ прилоТСния ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ° J2EE ΠΏΡ€Π΅Π΄Π»Π°Π³Π°Π΅Ρ‚ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π½Ρ‹ΠΉ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ ΠΊ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡŽ, Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅, сборкС ΠΈ Π²Π½Π΅Π΄Ρ€Π΅Π½ΠΈΡŽ ΠΊΠΎΡ€ΠΏΠΎΡ€Π°Ρ‚ΠΈΠ²Π½Ρ‹Ρ… ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ. ΠŸΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ° J2EE ΠΏΡ€Π΅Π΄Π»Π°Π³Π°Π΅Ρ‚ модСль ΠΌΠ½ΠΎΠ³ΠΎΡƒΡ€ΠΎΠ²Π½Π΅Π²ΠΎΠ³ΠΎ распрСдСлСнного прилоТСния, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎΠ³ΠΎ использования ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ², ΠΈΠ½Ρ‚Π΅Π³Ρ€ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ ΠΎΠ±ΠΌΠ΅Π½ Π΄Π°Π½Π½Ρ‹ΠΌΠΈ Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ XML, ΡƒΠ½ΠΈΡ„ΠΈΡ†ΠΈΡ€ΠΎΠ²Π°Π½Π½ΡƒΡŽ модСль бСзопасности ΠΈ Π³ΠΈΠ±ΠΊΠΎΠ΅ ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ транзакциями. ΠŸΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΠΈ ΠΈ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΠΈ ΠΎΠ±Π»Π°Π΄Π°ΡŽΡ‚ свободой Π²Ρ‹Π±ΠΎΡ€Π° ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚ΠΎΠ² ΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ ΠΏΠΎΠ»Π½ΠΎ ΡƒΠ΄ΠΎΠ²Π»Π΅Ρ‚Π²ΠΎΡ€ΡΡŽΡ‚ ΠΈΡ… Π΄Π΅Π»ΠΎΠ²Ρ‹Π΅ ΠΈ Ρ‚СхнологичСскиС трСбования.

2.2 РаспрСдСлСнныС ΠΌΠ½ΠΎΠ³ΠΎΡƒΡ€ΠΎΠ²Π½Π΅Π²Ρ‹Π΅ прилоТСния

ΠŸΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ° J2EE ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ модСль ΠΌΠ½ΠΎΠ³ΠΎΡƒΡ€ΠΎΠ²Π½Π΅Π²ΠΎΠ³ΠΎ распрСдСлСнного прилоТСния. ЛогичСски ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Ρ€Π°Π·Π΄Π΅Π»Π΅Π½ΠΎ Π½Π° ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹ Π² ΡΠΎΠΎΡ‚вСтствии с ΠΈΡ… Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒΡŽ. Π Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹, ΡΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‰ΠΈΠ΅ J2EE-ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, установлСны Π½Π° Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π°Ρ… Π² Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡ‚ΠΈ ΠΎΡ‚ ΠΈΡ… ΡƒΡ€ΠΎΠ²Π½Ρ Π² ΠΌΠ½ΠΎΠ³ΠΎΡƒΡ€ΠΎΠ²Π½Π΅Π²ΠΎΠΉ срСдС J2EE, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ Π΄Π°Π½Π½Ρ‹ΠΉ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ ΠΏΡ€ΠΈΠ½Π°Π΄Π»Π΅ΠΆΠΈΡ‚. На Ρ€ΠΈΡΡƒΠ½ΠΊΠ΅ 1 прСдставлСны Π΄Π²Π° J2EE-прилоТСния, Ρ€Π°Π·Π΄Π΅Π»Π΅Π½Π½Ρ‹Π΅ Π½Π° ΡƒΡ€ΠΎΠ²Π½ΠΈ, пСрСчислСнныС Π² ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ спискС.

ΠšΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹ клиСнтского уровня Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚ Π½Π° ΠΊΠ»ΠΈΠ΅Π½Ρ‚ской машинС.

ΠšΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹ Web-уровня Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚ Π½Π° J2EE-сСрвСрС.

ΠšΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹ бизнСс-уровня Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚ Π½Π° J2EE-сСрвСрС.

ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ΅ обСспСчСниС уровня ΠΊΠΎΡ€ΠΏΠΎΡ€Π°Ρ‚ΠΈΠ²Π½ΠΎΠΉ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΉ систСмы (EIS) Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Π½Π° EIS-сСрвСрС.

Π₯отя J2EE-ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ состоит ΠΈΠ· Ρ‚Ρ€Π΅Ρ… ΠΈΠ»ΠΈ Ρ‡Π΅Ρ‚Ρ‹Ρ€Π΅Ρ… ΡƒΡ€ΠΎΠ²Π½Π΅ΠΉ, ΠΏΠΎΠΊΠ°Π·Π°Π½Π½Ρ‹Ρ… Π½Π° Ρ€ΠΈΡΡƒΠ½ΠΊΠ΅ 1, ΠΌΠ½ΠΎΠ³ΠΎΡƒΡ€ΠΎΠ²Π½Π΅Π²Ρ‹Π΅ J2EE-прилоТСния ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ принято Π½Π°Π·Ρ‹Π²Π°Ρ‚ΡŒ Ρ‚Ρ€Π΅Ρ…ΡƒΡ€ΠΎΠ²Π½Π΅Π²Ρ‹ΠΌΠΈ, Ρ‚.ΠΊ. ΠΎΠ½ΠΈ располоТСны Π½Π° Ρ‚Ρ€Π΅Ρ… Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… систСмах: клиСнтский ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€, сСрвСр J2EE ΠΈ ΡΠ΅Ρ€Π²Π΅Ρ€ Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ… ΠΈΠ»ΠΈ ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹ΠΉ сСрвСр. Π’Ρ€Π΅Ρ…ΡƒΡ€ΠΎΠ²Π½Π΅Π²Ρ‹Π΅ прилоТСния, Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‰ΠΈΠ΅ Π΄Π°Π½Π½Ρ‹ΠΌ способом, Ρ€Π°ΡΡˆΠΈΡ€ΡΡŽΡ‚ ΡΡ‚Π°Π½Π΄Π°Ρ€Ρ‚Π½ΡƒΡŽ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρƒ ΠΊΠ»ΠΈΠ΅Π½Ρ‚-сСрвСр, добавляя ΠΌΠ½ΠΎΠ³ΠΎΠΏΠΎΡ‚ΠΎΡ‡Π½Ρ‹ΠΉ сСрвСр ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ ΠΌΠ΅ΠΆΠ΄Ρƒ клиСнтской Ρ‡Π°ΡΡ‚ΡŒΡŽ ΠΈ ΡΠ΅Ρ€Π²Π΅Ρ€ΠΎΠΌ Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ….

Рисунок 2 — ΠœΠ½ΠΎΠ³ΠΎΡƒΡ€ΠΎΠ²Π½Π΅Π²Ρ‹Π΅ прилоТСния

J2EE-ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹

J2EE-прилоТСния состоят ΠΈΠ· ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ². J2EE-ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π° прСдставляСт собой Π·Π°ΠΊΠΎΠ½Ρ‡Π΅Π½Π½Ρ‹ΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹ΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹ΠΉ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ, встроСнный Π² ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ J2EE с ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΌΠΈ классами ΠΈ Ρ„Π°ΠΉΠ»Π°ΠΌΠΈ ΠΈ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΉ с Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π°ΠΌΠΈ. J2EE-спСцификация опрСдСляСт ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ J2EE-ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹:

ΠšΠ»ΠΈΠ΅Π½Ρ‚ΡΠΊΠΈΠ΅ прилоТСния ΠΈ Π°ΠΏΠΏΠ»Π΅Ρ‚Ρ‹ — это ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹, Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‰ΠΈΠ΅ Π½Π° ΠΊΠ»ΠΈΠ΅Π½Ρ‚ской машинС.

ΠšΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹ Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΈ Java-сСрвлСт ΠΈ JavaServer Pages (JSP) — это Web-ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹, Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‰ΠΈΠ΅ Π½Π° ΡΠ΅Ρ€Π²Π΅Ρ€Π΅.

ΠšΠΎΡ€ΠΏΠΎΡ€Π°Ρ‚ΠΈΠ²Π½Ρ‹Π΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹ — это бизнСс-ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹, Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‰ΠΈΠ΅ Π½Π° ΡΠ΅Ρ€Π²Π΅Ρ€Π΅.

J2EE-ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹ ΠΏΠΈΡˆΡƒΡ‚ΡΡ Π½Π° ΡΠ·Ρ‹ΠΊΠ΅ программирования Java ΠΈ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΡƒΡŽΡ‚ся Ρ‚ΠΎΡ‡Π½ΠΎ Ρ‚Π°ΠΊ ΠΆΠ΅, ΠΊΠ°ΠΊ ΠΈ Π»ΡŽΠ±Π°Ρ другая Java-ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°. ΠžΡ‚Π»ΠΈΡ‡ΠΈΠ΅ΠΌ ΠΌΠ΅ΠΆΠ΄Ρƒ J2EE-ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π°ΠΌΠΈ ΠΈ «ΡΡ‚Π°Π½Π΄Π°Ρ€Ρ‚Π½Ρ‹ΠΌΠΈ» классами Java являСтся Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ J2EE-ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹ ΡΠΎΠ±ΠΈΡ€Π°ΡŽΡ‚ΡΡ Π² J2EE-ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, находящССся Π² ΡΡ‚Ρ€ΠΎΠ³ΠΎΠΌ соотвСтствии со ΡΠΏΠ΅Ρ†ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠ΅ΠΉ J2EE, Ρ€Π°Π·Π²Π΅Ρ€Π½ΡƒΡ‚ΠΎΠ΅ для функционирования Π² ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π΅ΠΌ мСстС ΠΈ ΡƒΠΏΡ€Π°Π²Π»ΡΠ΅ΠΌΠΎΠ΅ сСрвСром J2EE.

J2EE-ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Ρ‹ ΠžΠ±Ρ‹Ρ‡Π½ΠΎ ΠΌΠ½ΠΎΠ³ΠΎΡƒΡ€ΠΎΠ²Π½Π΅Π²Ρ‹Π΅ прилоТСния для Ρ‚ΠΎΠ½ΠΊΠΈΡ… ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΠΎΠ² ΠΏΠΈΡΠ°Ρ‚ΡŒ тяТСло, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ ΠΎΠ½ΠΈ Π²ΠΊΠ»ΡŽΡ‡Π°ΡŽΡ‚ Π² ΡΠ΅Π±Ρ ΠΌΠ½ΠΎΠ³ΠΎ строк слоТного ΠΊΠΎΠ΄Π° для управлСния транзакциями ΠΈ ΡΠΎΡΡ‚ояниями, ΠΌΠ½ΠΎΠ³ΠΎΠΏΠΎΡ‚ΠΎΡ‡Π½ΠΎΡΡ‚ΡŒΡŽ, ΠΎΠ±ΠΌΠ΅Π½ΠΎΠΌ рСсурсами ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ комплСксными Π½ΠΈΠ·ΠΊΠΎΡƒΡ€ΠΎΠ²Π½Π΅Π²Ρ‹ΠΌΠΈ Π·Π°Π΄Π°Ρ‡Π°ΠΌΠΈ. Основанная Π½Π° ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π°Ρ… ΠΈ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠΎ-нСзависимая Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π° J2EE ΠΎΠ±Π»Π΅Π³Ρ‡Π°Π΅Ρ‚ написаниС J2EE-ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ бизнСс-Π»ΠΎΠ³ΠΈΠΊΠ° локализуСтся Π² ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π°Ρ… ΠΌΠ½ΠΎΠ³ΠΎΠΊΡ€Π°Ρ‚Π½ΠΎΠ³ΠΎ использования. ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, J2EE-сСрвСр обСспСчиваСт основныС сСрвисы Π² Ρ„ΠΎΡ€ΠΌΠ΅ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π° для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ° ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ². Π’.ΠΊ. Π’Ρ‹ Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Ρ€Π°Π·Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Ρ‚ΡŒ эти сСрвисы ΡΠ°ΠΌΠΎΡΡ‚ΠΎΡΡ‚Π΅Π»ΡŒΠ½ΠΎ, Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡΠΊΠΎΠ½Ρ†Π΅Π½Ρ‚Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒΡΡ Π½Π° Ρ€Π΅ΡˆΠ΅Π½ΠΈΠΈ Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΡ… бизнСс-Π·Π°Π΄Π°Ρ‡.

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

J2EE-ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ со Π²ΡΠ΅ΠΌΠΈ своими модулями поставляСтся Π² Ρ„Π°ΠΉΠ»Π΅ ΠΊΠΎΡ€ΠΏΠΎΡ€Π°Ρ‚ΠΈΠ²Π½ΠΎΠ³ΠΎ Π°Ρ€Ρ…ΠΈΠ²Π° (EAR). EAR-Ρ„Π°ΠΉΠ» являСтся стандартным Java-Π°Ρ€Ρ…ΠΈΠ²ΠΎΠΌ (JAR) с Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠ΅ΠΌ .ear.

ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ EJB JAR-Ρ„Π°ΠΉΠ» содСрТит дСскриптор размСщСния, Ρ„Π°ΠΉΠ»Ρ‹ ΠΊΠΎΡ€ΠΏΠΎΡ€Π°Ρ‚ΠΈΠ²Π½Ρ‹Ρ… ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ² ΠΈ ΡΠ²ΡΠ·Π°Π½Π½Ρ‹Π΅ с Π½ΠΈΠΌΠΈ Ρ„Π°ΠΉΠ»Ρ‹.

ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ JAR-Ρ„Π°ΠΉΠ» клиСнтского прилоТСния содСрТит дСскриптор размСщСния, Ρ„Π°ΠΉΠ»Ρ‹ классов клиСнтского прилоТСния ΠΈ ΡΠ²ΡΠ·Π°Π½Π½Ρ‹Π΅ с Π½ΠΈΠΌΠΈ Ρ„Π°ΠΉΠ»Ρ‹.

ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ WAR-Ρ„Π°ΠΉΠ» содСрТит дСскриптор размСщСния, Ρ„Π°ΠΉΠ»Ρ‹ Web-ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ² ΠΈ ΡΠ²ΡΠ·Π°Π½Π½Ρ‹Π΅ с Π½ΠΈΠΌΠΈ рСсурсы.

ИспользованиС ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ ΠΈ EAR-Ρ„Π°ΠΉΠ»ΠΎΠ² Π΄Π΅Π»Π°Π΅Ρ‚ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΠΉ ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΠΊΡƒ Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… J2EE-ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΈΠ· Ρ‚Π΅Ρ… ΠΆΠ΅ самых ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ². НикакоС Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ΅ ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π½Π΅ Ρ‚рСбуСтся; это вопрос ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΠΊΠΈ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… J2EE-ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ Π² EAR-Ρ„Π°ΠΉΠ»Ρ‹.

2.3 ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ΅ обСспСчСниС

J2EE SDK — нСкоммСрчСскоС практичСскоС ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹ J2EE ΠΈ ΡΠΏΠ΅Ρ†ΠΈΡ„икация, свободно распространяСмыС Sun Microsystems для дСмонстрации, апробирования ΠΈ ΠΎΠ±ΡƒΡ‡Π΅Π½ΠΈΡ. J2EE SDK Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ Π² ΡΠ΅Π±Ρ сСрвСр ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ J2EE, Web-сСрвСр, Ρ€Π΅Π»ΡΡ†ΠΈΠΎΠ½Π½ΡƒΡŽ Π±Π°Π·Ρƒ Π΄Π°Π½Π½Ρ‹Ρ…, Π½Π°Π±ΠΎΡ€ J2EE API ΠΈ ΠΏΠΎΠ»Π½Ρ‹ΠΉ Π½Π°Π±ΠΎΡ€ инструмСнтов для Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΈ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΊΠΈ.

ЦСль J2EE SDK — ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡ‚ΡŒ поставщикам ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚Π° ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ Π΄ΠΎΠ»ΠΆΠ½Π° Π΄Π΅Π»Π°Ρ‚ΡŒ ΠΈΡ… Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΡ Π² ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹Ρ… условиях, ΠΈ Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ Π½Π°Π±ΠΎΡ€ тСстов совмСстимости J2EE для ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ соотвСтствия этих ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚ΠΎΠ² спСцификации. Они Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠ³ΡƒΡ‚ Π·Π°ΠΏΡƒΡΠΊΠ°Ρ‚ΡŒ свои J2EE-прилоТСния Π½Π° J2EE SDK для ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ ΠΏΠΎΠ»Π½ΠΎΠΉ пСрСносимости всСх J2EE-ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚ΠΎΠ² ΠΈ ΠΈΠ½ΡΡ‚Ρ€ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ².

Доступ ΠΊ Π±Π°Π·Π°ΠΌ Π΄Π°Π½Π½Ρ‹Ρ… РСляционная Π±Π°Π·Π° Π΄Π°Π½Π½Ρ‹Ρ… обСспСчиваСт постоянноС мСсто хранСния Π΄Π°Π½Π½Ρ‹Ρ… прилоТСния. Для Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ J2EE Π½Π΅ Ρ‚рСбуСтся ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΈ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ° Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ…. Π­Ρ‚ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ…, ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅ΠΌΡ‹Π΅ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹ΠΌΠΈ J2EE-ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚Π°ΠΌΠΈ, ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ Ρ€Π°Π·Π½Ρ‹ΠΌΠΈ. Бписок Π±Π°Π· Π΄Π°Π½Π½Ρ‹Ρ…, ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅ΠΌΡ‹Ρ… Π² Π΄Π°Π½Π½ΠΎΠΉ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ, ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½ Π² Release Notes, Π²ΠΊΠ»ΡŽΡ‡Π΅Π½Π½ΠΎΠΌ Π² J2EE SDK.

J2EE API

Для запуска J2EE SDK Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π½Π°Π»ΠΈΡ‡ΠΈΠ΅: Java 2 Platform, Standard Edition (J2SE) SDK, которая прСдоставляСт основныС API для создания J2EE-ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ², основныС инструмСнты Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΈ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½ΡƒΡŽ ΠΌΠ°ΡˆΠΈΠ½Ρƒ Java. J2EE SDK прСдоставляСт описанныС Π½ΠΈΠΆΠ΅ API, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Π΅ Π² J2EE-прилоТСниях.

JDBC API 2.0

JDBC API позволяСт Π²Ρ‹Π·Ρ‹Π²Π°Ρ‚ΡŒ SQL-ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ ΠΈΠ· ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² языка программирования Java. JDBC API ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Ρ‚Π°ΠΊΠΆΠ΅ Π² ΠΊΠΎΡ€ΠΏΠΎΡ€Π°Ρ‚ΠΈΠ²Π½Ρ‹Ρ… ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π°Ρ… ΠΏΡ€ΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΈ установлСнной ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ пСрсистСнции, управляСмой ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΎΠΌ, ΠΈΠ»ΠΈ ΠΏΡ€ΠΈ ΠΎΠ±Ρ€Π°Ρ‰Π΅Π½ΠΈΠΈ ΠΊ Π±Π°Π·Π΅ Π΄Π°Π½Π½Ρ‹Ρ… ΠΈΠ· ΡΠ΅ΡΡΠΈΠΎΠ½Π½ΠΎΠ³ΠΎ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π°. ΠŸΡ€ΠΈ пСрсистСнции, управляСмой ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΎΠΌ, ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ доступа ΠΊ Π±Π°Π·Π΅ Π΄Π°Π½Π½Ρ‹Ρ… ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°ΡŽΡ‚ΡΡ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΎΠΌ, Ρ‚. Π΅. рСализация ΠΊΠΎΡ€ΠΏΠΎΡ€Π°Ρ‚ΠΈΠ²Π½ΠΎΠ³ΠΎ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π° Π½Π΅ ΡΠΎΠ΄Π΅Ρ€ΠΆΠΈΡ‚ ΠΊΠΎΠ΄Π° JDBC ΠΈΠ»ΠΈ SQL-ΠΊΠΎΠΌΠ°Π½Π΄. Π’Π°ΠΊΠΆΠ΅, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ использованиС JDBC API Π² ΡΠ΅Ρ€Π²Π»Π΅Ρ‚Π΅ ΠΈΠ»ΠΈ JSP-страницС для прямого доступа ΠΊ Π±Π°Π·Π΅ Π΄Π°Π½Π½Ρ‹Ρ…, минуя ΠΊΠΎΡ€ΠΏΠΎΡ€Π°Ρ‚ΠΈΠ²Π½Ρ‹ΠΉ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚.

JDBC API состоит ΠΈΠ· Π΄Π²ΡƒΡ… частСй: интСрфСйса ΠΏΡ€ΠΈΠΊΠ»Π°Π΄Π½ΠΎΠ³ΠΎ уровня, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΠΎΠ³ΠΎ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π°ΠΌΠΈ прилоТСния для доступа ΠΊ Π±Π°Π·Π΅ Π΄Π°Π½Π½Ρ‹Ρ…, ΠΈ ΠΈΠ½Ρ‚СрфСйса поставщика сСрвиса, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΠΎΠ³ΠΎ для ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ JDBC-Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€Π° ΠΊ J2EE-ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ΅.

ВСхнология Java Servlet

ВСхнология Java Servlet позволяСт ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ классы сСрвлСтов. Класс сСрвлСта Ρ€Π°ΡΡˆΠΈΡ€ΡΠ΅Ρ‚ возмоТности сСрвСров, доступныС хост-прилоТСниям ΠΏΡ€ΠΈ использовании ΠΈΠΌΠΈ ΠΌΠΎΠ΄Π΅Π»ΠΈ программирования «Π·Π°ΠΏΡ€ΠΎΡ — ΠΎΡ‚Π²Π΅Ρ‚». Π₯отя сСрвлСты ΠΌΠΎΠ³ΡƒΡ‚ ΠΎΡ‚Π²Π΅Ρ‡Π°Ρ‚ΡŒ Π½Π° Π·Π°ΠΏΡ€ΠΎΡΡ‹ любого Ρ‚ΠΈΠΏΠ°, ΠΎΠ½ΠΈ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ Π² ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡΡ…, ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅ΠΌΡ‹Ρ… Web-сСрвСрами.

ВСхнология JavaServer Pages

ВСхнология JavaServer Pages позволяСт Π²ΡΡ‚Ρ€Π°ΠΈΠ²Π°Ρ‚ΡŒ Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚Ρ‹ ΠΊΠΎΠ΄Π° сСрвлСта прямо Π² Ρ‚СкстовыС Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Ρ‹. JSP-страница прСдставляСт собой тСкстовый Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ содСрТит Π΄Π²Π° Ρ‚ΠΈΠΏΠ° тСкста: статичныС ΡˆΠ°Π±Π»ΠΎΠ½Π½Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ прСдставлСны Π² Π»ΡŽΠ±ΠΎΠΌ тСкстовом Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π΅, Ρ‚Π°ΠΊΠΎΠΌ ΠΊΠ°ΠΊ HTML, WML ΠΈ XML, Π° Ρ‚Π°ΠΊΠΆΠ΅ JSP-элСмСнты, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡŽΡ‚ способ построСния Π΄ΠΈΠ½Π°ΠΌΠΈΡ‡Π½ΠΎΠ³ΠΎ содСрТимого страницы.

Java Naming and Directory Interface

JNDI обСспСчиваСт Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΈΠΌΠ΅Π½ ΠΈ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ΠΎΠ². Π˜Π½Ρ‚Π΅Ρ€Ρ„Π΅ΠΉΡ прСдоставляСт прилоТСниям ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ для стандартных ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ с ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π°ΠΌΠΈ, Ρ‚Π°ΠΊΠΈΡ… ΠΊΠ°ΠΊ Π½Π°Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ΠΎΠ² ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°ΠΌ ΠΈ ΠΏΠΎΠΈΡΠΊ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² ΠΏΠΎ ΠΈΡ… Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Π°ΠΌ. Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ JNDI, J2EE-ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠΎΡ…Ρ€Π°Π½ΡΡ‚ΡŒ ΠΈ Π²ΠΎΡΡΡ‚Π°Π½Π°Π²Π»ΠΈΠ²Π°Ρ‚ΡŒ Π»ΡŽΠ±Ρ‹Π΅ Ρ‚ΠΈΠΏΡ‹ ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½Π½Ρ‹Ρ… Java-ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ².

ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ JNDI Π½Π΅ Π·Π°Π²ΠΈΡΠΈΡ‚ ΠΎΡ‚ ΠΊΠ°ΠΊΠΎΠΉ Π±Ρ‹ Ρ‚ΠΎ Π½ΠΈ Π±Ρ‹Π»ΠΎ спСциализированной Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ, прилоТСния ΠΌΠΎΠ³ΡƒΡ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ JNDI для доступа ΠΊ ΠΌΠ½ΠΎΠ³ΠΎΡ‡ΠΈΡΠ»Π΅Π½Π½Ρ‹ΠΌ сСрвисам ΠΈΠΌΠ΅Π½ ΠΈ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ΠΎΠ², Π²ΠΊΠ»ΡŽΡ‡Π°Ρ Ρ‚Π°ΠΊΠΈΠ΅ сСрвисы, ΠΊΠ°ΠΊ LDAP, NDS, DNS ΠΈ NIS. Π­Ρ‚ΠΎ позволяСт J2EE-прилоТСниям ΡΠΎΡΡƒΡ‰Π΅ΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ с Ρ‚Ρ€Π°Π΄ΠΈΡ†ΠΈΠΎΠ½Π½Ρ‹ΠΌΠΈ прилоТСниями ΠΈ ΡΠΈΡΡ‚Π΅ΠΌΠ°ΠΌΠΈ.

3. Π‘Ρ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Π° Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ… прилоТСния

Π‘Π°Π·Π° Π΄Π°Π½Π½Ρ‹Ρ… прилоТСния ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½Π° для хранСния ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Ρ… Π² ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ сущностСй ΠΈ Π±Ρ‹ΡΡ‚Ρ€ΠΎΠ³ΠΎ доступа ΠΊ Π½ΠΈΠΌ. Π­Ρ‚ΠΈ сущности — «ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅» ΠΈ «ΡΡ‚Ρ€Π°Π½ΠΈΡ†Π°». Π‘ΡƒΡ‰Π½ΠΎΡΡ‚ΡŒ «ΡΡ‚Ρ€Π°Π½ΠΈΡ†Π°» ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для хранСния ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ ΠΎ ΡΡ‚Ρ€Π°Π½ΠΈΡ†Π°Ρ… с Π³Ρ€Π°Ρ„ΠΈΠΊΠ°ΠΌΠΈ, ΠΎΡ‚Ρ€Π°ΠΆΠ°ΡŽΡ‰ΠΈΠΌΠΈ ΡΠ΅Ρ‚Π΅Π²ΡƒΡŽ Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎΡΡ‚ΡŒ устройств. Π‘ΡƒΡ‰Π½ΠΎΡΡ‚ΡŒ «ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅» ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для хранСния ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ ΠΎΠ± ΠΎΠ΄Π½ΠΎΠΌ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠΌ сСнсорС — ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠΌ ΠΌΠΎΠ΄ΡƒΠ»Π΅, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π½Π° ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎΠΌ сСрвСрС осущСствляСт ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒ Π·Π° ΡƒΠΊΠ°Π·Π°Π½Π½Ρ‹ΠΌ устройством ΠΈΠ»ΠΈ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΠΌ.

Рисунок 3 — Π‘Ρ…Π΅ΠΌΠ° Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ… прилоТСния Π’Π°Π±Π»ΠΈΡ†Π° graphics содСрТит ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎΠ± ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°Ρ… сущности «ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅». Π’ Ρ‚Π°Π±Π»ΠΈΡ†Π΅ 1 ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Ρ‹ описания Π΅Ρ‘ ΠΏΠΎΠ»Π΅ΠΉ.

Π’Π°Π±Π»ΠΈΡ†Π° 1 — Π‘ΡƒΡ‰Π½ΠΎΡΡ‚ΡŒ «Π˜Π·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅»

ownId

int

Π£Π½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΉ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°

id

int

Π˜Π΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ сСнсора Π½Π° ΡΠ΅Ρ€Π²Π΅Ρ€Π΅

host

int

Бсылка Π½Π° IP-адрСс ΠΈ ΠΏΠΎΡ€Ρ‚ сСрвСра, с ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ Π³Ρ€Π°Ρ„ΠΈΠΊΠ° сСнсора

subid

int

Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ сСнсора Π½Π° ΡΠ΅Ρ€Π²Π΅Ρ€Π΅

width

int

Ѐиксированная ΡˆΠΈΡ€ΠΈΠ½Π° изобраТСния с Π³Ρ€Π°Ρ„ΠΈΠΊΠΎΠΌ (ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ null)

height

int

Ѐиксированная высота изобраТСния с Π³Ρ€Π°Ρ„ΠΈΠΊΠΎΠΌ (ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ null)

color

int

Бсылка Π½Π° Ρ†Π²Π΅Ρ‚, ΡƒΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‰ΠΈΠΉ Π½Π° ΡΡ‚атус сСнсора

name

varchar (50)

Имя сСнсора

row

int

Π‘Ρ‚Ρ€ΠΎΠΊΠ°, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ находится ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ сСнсора Π½Π° ΡΡ‚Ρ€Π°Π½ΠΈΡ†Π΅

col

int

Π‘Ρ‚ΠΎΠ»Π±Π΅Ρ†, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ находится ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ сСнсора Π½Π° ΡΡ‚Ρ€Π°Π½ΠΈΡ†Π΅

page

int

Бсылка Π½Π° ΡΡ‚Ρ€Π°Π½ΠΈΡ†Ρƒ, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ ΠΏΡ€ΠΈΠ½Π°Π΄Π»Π΅ΠΆΠΈΡ‚ сСнсор

interval

int

Π˜Π½Ρ‚Π΅Ρ€Π²Π°Π» (Π² ΡΠ΅ΠΊΡƒΠ½Π΄Π°Ρ…) обновлСния изобраТСния сСнсора

Π’Π°Π±Π»ΠΈΡ†Π° pages содСрТит ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎΠ± ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°Ρ… сущности «ΡΡ‚Ρ€Π°Π½ΠΈΡ†Π°». Π’ Ρ‚Π°Π±Π»ΠΈΡ†Π΅ 2 ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Ρ‹ описания Π΅Ρ‘ ΠΏΠΎΠ»Π΅ΠΉ.

Π’Π°Π±Π»ΠΈΡ†Π° 2 — Π‘ΡƒΡ‰Π½ΠΎΡΡ‚ΡŒ «Π‘Ρ‚Ρ€Π°Π½ΠΈΡ†Π°»

id

int

Π£Π½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΉ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°

name

varchar (50)

Имя страницы

url

varchar (50)

Π£Π½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΉ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ страницы ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΊΠΎΡ€Π½Π΅Π²ΠΎΠΉ ΠΏΠ°ΠΏΠΊΠΈ Π²Π΅Π±-прилоТСния

rowsc

int

ΠšΠΎΠ»ΠΈΡ‡Π΅ΡΡ‚Π²ΠΎ строк с ΡΠ΅Π½ΡΠΎΡ€Π°ΠΌΠΈ Π½Π° ΡΡ‚Ρ€Π°Π½ΠΈΡ†Π΅

colsc

int

ΠšΠΎΠ»ΠΈΡ‡Π΅ΡΡ‚Π²ΠΎ столбцов с ΡΠ΅Π½ΡΠΎΡ€Π°ΠΌΠΈ Π½Π° ΡΡ‚Ρ€Π°Π½ΠΈΡ†Π΅

interval

int

Π˜Π½Ρ‚Π΅Ρ€Π²Π°Π» (Π² ΡΠ΅ΠΊΡƒΠ½Π΄Π°Ρ…) обновлСния страницы

Π’Π°Π±Π»ΠΈΡ†Π° colors содСрТит список Ρ†Π²Π΅Ρ‚ΠΎΠ² для отобраТСния статуса сСнсора. Π’ Ρ‚Π°Π±Π»ΠΈΡ†Π΅ 3 ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Ρ‹ описания Π΅Ρ‘ ΠΏΠΎΠ»Π΅ΠΉ.

Π’Π°Π±Π»ΠΈΡ†Π° 3 — Π‘ΠΏΡ€Π°Π²ΠΎΡ‡Π½ΠΈΠΊ «Π¦Π²Π΅Ρ‚Π°»

id

int

Π£Π½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΉ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°

color

varchar (50)

НазваниС Ρ†Π²Π΅Ρ‚Π°

Π’Π°Π±Π»ΠΈΡ†Π° hosts содСрТит список адрСсов сСрвСров для получСния сСнсоров. Π’ Ρ‚Π°Π±Π»ΠΈΡ†Π΅ 4 ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Ρ‹ описания Π΅Ρ‘ ΠΏΠΎΠ»Π΅ΠΉ.

Π’Π°Π±Π»ΠΈΡ†Π° 4 — Π‘ΠΏΡ€Π°Π²ΠΎΡ‡Π½ΠΈΠΊ «Π₯осты»

id

int

Π£Π½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΉ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°

host

varchar (50)

IP-адрСс ΠΈ ΠΏΠΎΡ€Ρ‚

4. ОписаниС интСрфСйса Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π½Π½ΠΎΠ³ΠΎ прилоТСния

ΠŸΠ΅Ρ€Π²ΠΎΠ½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎ интСрфСйс Π±Ρ‹Π» описан Π² Π²ΠΈΠ΄Π΅ html-страниц (рисунок 4).

Рисунок 4 — Π’Π½Π΅ΡˆΠ½ΠΈΠΉ Π²ΠΈΠ΄ страницы с Π³Ρ€Π°Ρ„ΠΈΠΊΠ°ΠΌΠΈ Π”Π°Π»Π΅Π΅ содСрТимоС html-страниц Π±Ρ‹Π»ΠΎ пСрСнСсСно Π½Π° ΡΡ‚Ρ€Π°Π½ΠΈΡ†Ρ‹ JSP ΠΈ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ ΠΎΡ‚Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΎ. ВсСго Π² ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ нСсколько JSP-страниц ΠΈ ΡΠ΅Ρ€Π²Π»Π΅Ρ‚ΠΎΠ². Π‘Ρ‚Ρ€Π°Π½ΠΈΡ†Π° pagesmanager. jsp ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½Π° для управлСния страницами с Π³Ρ€Π°Ρ„ΠΈΠΊΠ°ΠΌΠΈ. ΠŸΡ€ΠΈ ΠΎΠ±Ρ€Π°Ρ‰Π΅Π½ΠΈΠΈ ΠΊ Π½Π΅ΠΉ страница провСряСт Π½Π°Π»ΠΈΡ‡ΠΈΠ΅ Π² ΡΠ΅ΡΡΠΈΠΈ ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΈ страниц с ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΡΠΌΠΈ Π³Ρ€Π°Ρ„ΠΈΠΊΠΎΠ² ΠΈ, Ссли Π½Π΅ ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠΈΠ²Π°Π΅Ρ‚ Π΅Ρ‘ Ρ‚Π°ΠΌ, Ρ‚ΠΎ ΠΎΠ±Ρ€Π°Ρ‰Π°Π΅Ρ‚ся Π·Π° Π½Π΅ΠΉ ΠΊ ΡΠ΅Ρ€Π²Π»Π΅Ρ‚Ρƒ by.beloil.servlets.Edit. Π”Π°Π»Π΅Π΅ ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ Ρ†ΠΈΠΊΠ»Π° forEach, Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΠ΅ΠΌΠΎΠ³ΠΎ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΎΠΉ Ρ‚Π΅Π³ΠΎΠ² JSTL размСчаСтся Ρ‚Π°Π±Π»ΠΈΡ†Π° с ΠΈΠΌΠ΅Π½Π°ΠΌΠΈ страниц ΠΈ ΡΡΡ‹Π»ΠΊΠ°ΠΌΠΈ для ΠΈΡ… ΠΏΡ€ΠΎΡΠΌΠΎΡ‚Ρ€Π°, рСдактирования ΠΈ ΡƒΠ΄Π°Π»Π΅Π½ΠΈΡ. ПослС Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ находится ссылка для добавлСния Π½ΠΎΠ²ΠΎΠΉ страницы.

Рисунок 5 — ΠœΠ΅Π½Π΅Π΄ΠΆΠ΅Ρ€ страниц Π‘Ρ‚Ρ€Π°Π½ΠΈΡ†Π° pageedit. jsp ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½Π° для рСдактирования ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠΉ страницы с ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΡΠΌΠΈ Π³Ρ€Π°Ρ„ΠΈΠΊΠΎΠ². ΠŸΡ€ΠΈ ΠΎΠ±Ρ€Π°Ρ‰Π΅Π½ΠΈΠΈ ΠΊ ΡΡ‚Ρ€Π°Π½ΠΈΡ†Π΅ pageedit. jsp ΠΎΠ½Π° ΠΈΠ·Π²Π»Π΅ΠΊΠ°Π΅Ρ‚ ΠΈΠ· ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² запроса имя страницы с ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΡΠΌΠΈ Π³Ρ€Π°Ρ„ΠΈΠΊΠΎΠ² для рСдактирования ΠΈ Π·Π°Ρ‚Π΅ΠΌ обращаСтся ΠΊ ΡΠ΅Ρ€Π²Π»Π΅Ρ‚Ρƒ by.beloil.servlets.Main Π·Π° ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠΌ, ΠΈΠ½ΠΊΠ°ΠΏΡΡƒΠ»ΠΈΡ€ΡƒΡŽΡ‰ΠΈΠΌ Π΄Π°Π½Π½Ρ‹Π΅ этой страницы ΠΈ Ρ€Π°Π·ΠΌΠ΅Ρ‡Π°Π΅Ρ‚ Ρ„ΠΎΡ€ΠΌΡƒ для рСдактирования Π΅Ρ‘ ΡΠΎΠ΄Π΅Ρ€ΠΆΠΈΠΌΠΎΠ³ΠΎ. На Ρ„ΠΎΡ€ΠΌΠ΅ ΠΈΠΌΠ΅ΡŽΡ‚ΡΡ поля для Π²Π²ΠΎΠ΄Π° количСства строк ΠΈ ΡΡ‚ΠΎΠ»Π±Ρ†ΠΎΠ² с ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΡΠΌΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π±ΡƒΠ΄ΡƒΡ‚ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Ρ‚ΡŒΡΡ Π½Π° ΡΡ‚Ρ€Π°Π½ΠΈΡ†Π΅ с ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΡΠΌΠΈ Π³Ρ€Π°Ρ„ΠΈΠΊΠΎΠ². Π•ΡΡ‚ΡŒ Ρ‚Π°ΠΊΠΆΠ΅ ΠΏΠΎΠ»Π΅ для Π²Π²ΠΎΠ΄Π° ΠΈΠ½Ρ‚Π΅Ρ€Π²Π°Π»Π° обновлСния содСрТимого страницы с ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΡΠΌΠΈ Π³Ρ€Π°Ρ„ΠΈΠΊΠΎΠ² Π² ΡΠ»ΡƒΡ‡Π°Π΅, ΠΊΠΎΠ³Π΄Π° Π΅Ρ‘ ΡΠΎΠ΄Π΅Ρ€ΠΆΠΈΠΌΠΎΠ΅ Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Π»ΠΎΡΡŒ. ПослС ΠΏΠΎΠ»Π΅ΠΉ Π²Π²ΠΎΠ΄Π° располоТСна ΠΊΠ½ΠΎΠΏΠΊΠ° обновлСния структуры страницы, которая посылаСт Π΄Π°Π½Π½Ρ‹Π΅ Ρ„ΠΎΡ€ΠΌΡ‹ сСрвлСту by.beloil.servlets.Edit. ПослС Ρ„ΠΎΡ€ΠΌΡ‹ обновлСния страницы с ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΡΠΌΠΈ Π³Ρ€Π°Ρ„ΠΈΠΊΠΎΠ² находится ссылка для Π²ΠΎΠ·Π²Ρ€Π°Ρ‚Π° ΠΊ ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅Ρ€Ρƒ страниц. НиТС располоТСна Ρ‚Π°Π±Π»ΠΈΡ†Π° с Ρ„ΠΎΡ€ΠΌΠ°ΠΌΠΈ для рСдактирования ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ячСйки-сСнсора страницы с ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΡΠΌΠΈ Π³Ρ€Π°Ρ„ΠΈΠΊΠΎΠ². КаТдая такая Ρ„ΠΎΡ€ΠΌΠ° содСрТит поля для Π²Π²ΠΎΠ΄Π° ΠΈΠΌΠ΅Π½ΠΈ сСнсора, Π΅Π³ΠΎ ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½ΠΎΠ³ΠΎ ΠΈ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ΠΎΠ², ΠΈΠ½Ρ‚Π΅Ρ€Π²Π°Π»Π° (Π² ΡΠ΅ΠΊΡƒΠ½Π΄Π°Ρ…) обновлСния изобраТСния Π³Ρ€Π°Ρ„ΠΈΠΊΠ°, фиксированных высоты ΠΈ ΡˆΠΈΡ€ΠΈΠ½Ρ‹ изобраТСния, арСса сСрвСра для получСния изобраТСния ΠΈ Ρ†Π²Π΅Ρ‚Π° статуса сСнсора. Π”Π°Π½Π½Ρ‹Π΅ с ΡΡ‚ΠΈΡ… Ρ„ΠΎΡ€ΠΌ ΠΎΡ‚ΠΏΡ€Π°Π²Π»ΡΡŽΡ‚ΡΡ ΠΏΠΎ Π½Π°ΠΆΠ°Ρ‚ΠΈΡŽ клавиши Enter ΠΏΠΎ Π»ΡŽΠ±ΠΎΠΌΡƒ ΠΈΠ· ΠΏΠΎΠ»Π΅ΠΉ Ρ„ΠΎΡ€ΠΌΡ‹ ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ сцСнария Π½Π° JavaScript.

Рисунок 6 — Π Π΅Π΄Π°ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ страницы с ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΡΠΌΠΈ Π³Ρ€Π°Ρ„ΠΈΠΊΠΎΠ² Π‘Ρ‚Ρ€Π°Π½ΠΈΡ†Π° addpage. jsp ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½Π° для добавлСния Π½ΠΎΠ²ΠΎΠΉ страницы с ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΡΠΌΠΈ Π³Ρ€Π°Ρ„ΠΈΠΊΠΎΠ². Она ΠΈΠΌΠ΅Π΅Ρ‚ Ρ„ΠΎΡ€ΠΌΡƒ с ΠΏΠΎΠ»ΡΠΌΠΈ для Π²Π²ΠΎΠ΄Π° ΠΈΠΌΠ΅Π½ΠΈ Π½ΠΎΠ²ΠΎΠΉ страницы, количСства столбцов ΠΈ ΡΡ‚Ρ€ΠΎΠΊ, ΠΈ ΠΈΠ½Ρ‚Π΅Ρ€Π²Π°Π»Π° обновлСния страницы. Π”Π°Π½Π½Ρ‹Π΅ Ρ„ΠΎΡ€ΠΌΡ‹ ΠΏΠΎ Π½Π°ΠΆΠ°Ρ‚ΠΈΡŽ ΠΊΠ½ΠΎΠΏΠΊΠΈ Add ΠΎΡ‚ΠΏΡ€Π°Π²Π»ΡΡŽΡ‚ΡΡ сСрвлСту by.beloil.servlets.Edit, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Ρ€Π°Π·ΠΌΠ΅Ρ‰Π°Π΅Ρ‚ страницу Π² Π±Π°Π·Π΅ Π΄Π°Π½Π½Ρ‹Ρ… прилоТСния. На ΡΡ‚ΠΎΠΉ страницС Ρ‚Π°ΠΊΠΆΠ΅ имССтся ссылка для Π²ΠΎΠ·Π²Ρ€Π°Ρ‚Π° ΠΊ ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅Ρ€Ρƒ страниц.

Рисунок 7 — Π”ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ Π½ΠΎΠ²ΠΎΠΉ страницы с ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΡΠΌΠΈ Π³Ρ€Π°Ρ„ΠΈΠΊΠΎΠ² Π‘Ρ‚Ρ€Π°Π½ΠΈΡ†Ρ‹ с ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΡΠΌΠΈ Π³Ρ€Π°Ρ„ΠΈΠΊΠΎΠ² Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΡƒΡŽΡ‚ΡΡ Π² ΠΌΠ΅Ρ‚ΠΎΠ΄Π΅ addPage сСрвлСта by.beloil.servlets.Main, Ρ€Π°Π·ΠΌΠ΅Ρ‰Π°ΡŽΡ‚ΡΡ Π² ΠΊΠΎΡ€Π½Π΅Π²ΠΎΠΌ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π΅ сСрвСра ΠΈ Π΄Π΅ΠΉΡΡ‚Π²ΡƒΡŽΡ‚ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:

Π‘Ρ‚Ρ€Π°Π½ΠΈΡ†Π° провСряСт, Π΅ΡΡ‚ΡŒ Π»ΠΈ Π² ΡΠ΅ΡΡΠΈΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚, ΠΈΠ½ΠΊΠ°ΠΏΡΡƒΠ»ΠΈΡ€ΡƒΡŽΡ‰ΠΈΠΉ Π΅Ρ‘ ΡΡ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Ρƒ ΠΈ, Ссли Π΅Π³ΠΎ Ρ‚Π°ΠΌ Π½Π΅Ρ‚, обращаСтся Π·Π° Π½ΠΈΠΌ ΠΊ ΡΠ΅Ρ€Π²Π»Π΅Ρ‚Ρƒ by.beloil.servlets.Run. Π”Π°Π»Π΅Π΅ старница Ρ€Π°Π·ΠΌΠ΅Ρ‡Π°Π΅Ρ‚ Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ с Ρ‚Π΅Π³Π°ΠΌΠΈ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ Π³Ρ€Π°Ρ„ΠΈΠΊΠΎΠ², содСрТимоС ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… заполняСтся функциями JavaScript ΠΏΠΎ ΡΠ³Π΅Π½Π΅Ρ€ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠΌΡƒ сСрвлСтом by.beloil.servlets.Run ΡΡ†Π΅Π½Π°Ρ€ΠΈΡŽ.

Π”Π°Π»Π΅Π΅ слСдуСт описаниС дСйствий скриптов, ΠΎΠ±Π½ΠΎΠ²Π»ΡΡŽΡ‰ΠΈΡ… изобраТСния Π³Ρ€Π°Ρ„ΠΈΠΊΠΎΠ².

ΠžΠ±Ρ‰Π°Ρ для всСх ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ функция rescale () вызываСтся Π² ΠΌΠΎΠΌΠ΅Π½Ρ‚ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ страницы дСйствиСм onload ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° body ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΠ΅Ρ‚ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ дСйствия:

ΠŸΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚, ΠΈΠ½ΠΊΠ°ΠΏΡΡƒΠ»ΠΈΡ€ΡƒΡŽΡ‰ΠΈΠΉ Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ с ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΡΠΌΠΈ, ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° document. getElementById ();

ΠŸΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π³ΠΎ ΠΊΠΎΠ΄Π° ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚ допустимыС ΡˆΠΈΡ€ΠΈΠ½Ρƒ ΠΈ Π²Ρ‹ΡΠΎΡ‚Ρƒ для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ изобраТСния Π³Ρ€Π°Ρ„ΠΈΠΊΠ° Π² Ρ‚Π°Π±Π»ΠΈΡ†Π΅:

width=(screen.availWidth/table.rows[0]. cells. length-1).toFixed (0); height=(screen.availHeight/table.rows.length*2−35).toFixed (0);

Π—Π°Ρ‚Π΅ΠΌ для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ изобраТСния Π³Ρ€Π°Ρ„ΠΈΠΊΠ° Π² Ρ‚Π°Π±Π»ΠΈΡ†Π΅ Π²Ρ‹Π·Ρ‹Π²Π°Π΅Ρ‚ «Ρ€Π΅ΠΊΡƒΡ€ΡΠΈΠ²Π½ΡƒΡŽ» Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ rncm (), Π³Π΄Π΅ n — Π½ΠΎΠΌΠ΅Ρ€ стоки, m — Π½ΠΎΠΌΠ΅Ρ€ столбца, Π² ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… содСрТится ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅. Ѐункция rncm () ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ Ρ‚ΠΎΠ³ΠΎ ΠΆΠ΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° document. getElementById () ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚, ΠΈΠ½ΠΊΠ°ΠΏΡΡƒΠ»ΠΈΡ€ΡƒΡŽΡ‰ΠΈΠΉ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ ΠΈ ΡƒΡΡ‚Π°Π½Π°Π²Π»ΠΈΠ²Π°Π΅Ρ‚ для Π½Π΅Π³ΠΎ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ src с Π²Ρ‹Ρ‡ΠΈΡΠ»Π΅Π½Π½Ρ‹ΠΌΠΈ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°ΠΌΠΈ width ΠΈ height. Π—Π°Ρ‚Π΅ΠΌ вызываСтся функция setTimeout (). Π’ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°Ρ… Π΅ΠΉ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ся функция rncm (), Ρ‡Π΅ΠΌ ΠΈ Π΄ΠΎΡΡ‚игаСтся Π΅Ρ‘ «Ρ€Π΅ΠΊΡƒΡ€ΡΠΈΡ». Π’Ρ‚ΠΎΡ€ΠΎΠΉ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ — ΠΈΠ½Ρ‚Π΅Ρ€Π²Π°Π» Π² ΠΌΠΈΠ»Π»ΠΈΡΠ΅ΠΊΡƒΠ½Π΄Π°Ρ…, Ρ‡Π΅Ρ€Π΅Π· ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ Π³Ρ€Π°Ρ„ΠΈΠΊΠ° Π΄ΠΎΠ»ΠΆΠ½ΠΎ ΠΎΠ±Π½ΠΎΠ²Π»ΡΡ‚ΡŒΡΡ. Ѐункция setTimeout () Π²Ρ‹Π·ΠΎΠ²Π΅Ρ‚ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ rncm () Ρ‡Π΅Ρ€Π΅Π· ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠ΅ Π² ΠΌΠΈΠ»Π»ΠΈΡΠ΅ΠΊΡƒΠ½Π΄Π°Ρ… врСмя.

Π’ Ρ„Π°ΠΉΠ»Π΅ скриптов Π΅ΡΡ‚ΡŒ Π΅Ρ‰Ρ‘ ΠΎΠ΄Π½Π° общая функция — refresh (). Π•Ρ‘ Π·Π°Π΄Π°Ρ‡Π° — Ρ‡Π΅Ρ€Π΅Π· установлСнноС врСмя Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ ΠΏΠΎΠ»Π½ΠΎΠ΅ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ страницы с Π³Ρ€Π°Ρ„ΠΈΠΊΠ°ΠΌΠΈ Π½Π° ΡΠ»ΡƒΡ‡Π°ΠΉ, Ссли ΠΎΠ½Π° Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Π»Π°ΡΡŒ администратором, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ прямого доступа для обновлСния этой страницы ΠΊΠ°ΠΊ ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚. Для исполнСния этой Π·Π°Π΄Π°Ρ‡ΠΈ ΠΎΠ½Π° выполняСт ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ дСйствия:

Π‘ΠΎΠ·Π΄Π°Π΅Ρ‚ AJAX-ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ для выполнСния асинхронного запроса ΠΊ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡŽ;

ВыполняСт запрос ΠΈ ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚ ΠΎΡ‚ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Π½ΠΎΠΌΠ΅Ρ€ Π°ΠΊΡ‚ΡƒΠ°Π»ΡŒΠ½ΠΎΠΉ вСрсии страницы с Π³Ρ€Π°Ρ„ΠΈΠΊΠ°ΠΌΠΈ ΠΈ, Ссли Π½ΠΎΠΌΠ΅Ρ€, хранящийся Π½Π° ΡΡ‚Ρ€Π°Π½ΠΈΡ†Π΅ являСтся ΡƒΡΡ‚Π°Ρ€Π΅Π²ΡˆΠΈΠΌ, обновляСт страницу, устанавливая ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ Π°ΠΊΡ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹ΠΉ Π½ΠΎΠΌΠ΅Ρ€.

ПослС скриптов Π±Ρ‹Π» Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π½ сСрвлСт GetImage, ΠΏΠΎΠ»ΡƒΡ‡Π°ΡŽΡ‰ΠΈΠΉ запросы ΠΎΡ‚ ΡΡ‚Ρ€Π°Π½ΠΈΡ†Ρ‹ для отобраТСния Π΄Π°Π½Π½Ρ‹Ρ… ΠΈ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°ΡŽΡ‰ΠΈΠΉ изобраТСния.

Он ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹: width, height ΠΈ id. По ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠΌΡƒ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Ρƒ ΠΎΠ½ Π²Ρ‹Π±ΠΈΡ€Π°Π΅Ρ‚ ΠΈΠ· Π½Π°Π±ΠΎΡ€Π° ΠΌΠ΅Ρ‚Π°Π΄Π°Π½Π½Ρ‹Ρ… Π½ΡƒΠΆΠ½ΡƒΡŽ запись, ΠΈ, ΠΎΡΠ½ΠΎΠ²Ρ‹Π²Π°ΡΡΡŒ Π½Π° Π΅Ρ‘ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ, Ρ„ΠΎΡ€ΠΌΠΈΡ€ΡƒΠ΅Ρ‚ запрос ΠΊ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎΠΌΡƒ сСрвСру, адрСс ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ ΡƒΠΊΠ°Π·Π°Π½ Π² ΠΌΠ΅Ρ‚Π°Π΄Π°Π½Π½Ρ‹Ρ… изобраТСния. Запрос рСализуСтся ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° java.net.URL.openConnection () класса java.net.URL. Π£ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½ΠΎΠ³ΠΎ ΠΏΡ€ΠΈ этом Π²Ρ‹Π·ΠΎΠ²Π΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° java.net.URLConnection вызываСтся ΠΌΠ΅Ρ‚ΠΎΠ΄ java.net.URLConnection.getInputStream (), Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°ΡŽΡ‰ΠΈΠΉ ΠΏΠΎΡ‚ΠΎΠΊ с Π·Π°ΠΏΡ€Π°ΡˆΠΈΠ²Π°Π΅ΠΌΡ‹ΠΌ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ΠΌ. Π”Π°Π»Π΅Π΅ статичСским ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠΌ javax.imageio.-ImageIO.write () ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ записываСтся Π² Π²Ρ‹Ρ…ΠΎΠ΄Π½ΠΎΠΉ ΠΏΠΎΡ‚ΠΎΠΊ сСрвлСта, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ возвращаСтся ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠΌ javax.servlet.ServletResponse.getOutput-Stream ().

ВсС сСрвлСты ΡΠ²Π»ΡΡŽΡ‚ΡΡ подклассами сСрвлСта, ΠΈΠ½ΠΊΠ°ΠΏΡΡƒΠ»ΠΈΡ€ΡƒΡŽΡ‰Π΅Π³ΠΎ ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΡŽ с ΠΌΠ΅Ρ‚Π°Π΄Π°Π½Π½Ρ‹ΠΌΠΈ для ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ, ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ ΠΊ Π±Π°Π·Π΅ Π΄Π°Π½Π½Ρ‹Ρ… MS SQL Server, ΠΈ Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΡŽΡ‰Π΅Π³ΠΎ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ для получСния ΠΈ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ этих ΠΏΠΎΠ»Π΅ΠΉ.

Π—Π°ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅

Π’ Π΄Π°Π½Π½ΠΎΠΌ курсовом ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π΅ Π±Ρ‹Π»ΠΎ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π½ΠΎ Π²Π΅Π±-ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ для администрирования Π΄Π°Π½Π½Ρ‹Ρ…, ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅ΠΌΡ‹Ρ… с ΡΠ΅Ρ€Π²Π΅Ρ€Π° ΠΏΠΎ Π½Π°ΠΊΠΎΠΏΠ»Π΅Π½ΠΈΡŽ статистики сСтСвой активности ΠΈ Π°ΠΊΡ‚ивности Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… ΠΏΠ΅Ρ€ΠΈΡ„Π΅Ρ€ΠΈΠΉΠ½Ρ‹Ρ… устройств. ПослС ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ ΠΈ Ρ‚Сстирования ΠΎΠ½ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ установлСно Π½Π° ΠΏΡ€Π΅Π΄ΠΏΡ€ΠΈΡΡ‚ΠΈΠΈ.

ΠŸΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π±Ρ‹Π»ΠΎ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π½ΠΎ для Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ±Π»Π΅Π³Ρ‡ΠΈΡ‚ΡŒ систСмным администраторам ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒ активности сСтСвого ΠΈ ΠΏΠ΅Ρ€Π΅Ρ„ΠΈΡ€ΠΈΠΉΠ½ΠΎΠ³ΠΎ оборудования.

Благодаря ΠΏΠ΅Ρ€Π΅Π΄ΠΎΠ²Ρ‹ΠΌ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΎΠ½Π½Ρ‹ΠΌ тСхнологиям Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π½Π½ΠΎΠ΅ Π²Π΅Π±-ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ являСтся достаточно Π³ΠΈΠ±ΠΊΠΈΠΌ Π² ΠΏΠ»Π°Π½Π΅ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»Π°, Ρ‡Ρ‚ΠΎ ΠΏΡ€Π΅Π΄ΠΏΠΎΠ»Π°Π³Π°Π΅Ρ‚ Π΅Π³ΠΎ дальнСйшСС Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠ΅ ΠΈ ΡΠΎΠΏΡ€ΠΎΠ²ΠΎΠΆΠ΄Π΅Π½ΠΈΠ΅. Π“ΠΈΠ±ΠΊΠΎΡΡ‚ΡŒ ΠΈ Ρ€Π°ΡΡˆΠΈΡ€ΡΠ΅ΠΌΠΎΡΡ‚ΡŒ прилоТСния Π² Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ стСпСни обСспСчили Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΈ JSP ΠΈ JSTL, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΠ»ΠΈ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ качСствСнныС динамичСскиС ΡˆΠ°Π±Π»ΠΎΠ½Ρ‹ страниц прилоТСния, Π° Ρ‚Π°ΠΊΠΆΠ΅ ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ шаблона проСктирования МодСль-ΠšΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€-ΠŸΡ€Π΅Π΄ΡΡ‚Π°Π²Π»Π΅Π½ΠΈΠ΅. Данная модСль ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΠ»Π° Ρ€Π°Π·Π΄Π΅Π»ΠΈΡ‚ΡŒ Π»ΠΎΠ³ΠΈΠΊΡƒ Ρ€Π°Π±ΠΎΡ‚Ρ‹ прилоТСния Π½Π° Ρ‚Ρ€ΠΈ ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ нСзависимыС ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹, измСнСния Π² ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΈΠ· ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΌΠ°Π»ΠΎ Π²Π»ΠΈΡΡŽΡ‚ Π½Π° Ρ€Π°Π±ΠΎΡ‚Ρƒ Π΄Ρ€ΡƒΠ³ΠΈΡ… ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚.

Π’ Ρ…ΠΎΠ΄Π΅ Ρ€Π°Π±ΠΎΡ‚Ρ‹ Π±Ρ‹Π»ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Π½Ρ‹ ΠΈ ΠΈΠ·ΡƒΡ‡Π΅Π½Ρ‹ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΈ: JSP, JSTL, J2EE, JDBC, JNDI, JavaScript, CSS, AJAX, MS SQL Server. Π‘Ρ‹Π»ΠΈ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π½Ρ‹ ΠΈ ΠΈΠ·ΡƒΡ‡Π΅Π½Ρ‹ Π½ΠΎΠ²Ρ‹Π΅ ΠΏΡ€ΠΈΠ΅ΠΌΡ‹ Ρ€Π°Π±ΠΎΡ‚Ρ‹ с ΠΈΠ½Ρ‚Π΅Ρ€Π½Π΅Ρ‚-тСхнологиями, ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½ большой ΠΎΠΏΡ‹Ρ‚ Ρ€Π°Π±ΠΎΡ‚Ρ‹ Π² ΠΎΠ±Π»Π°ΡΡ‚ΠΈ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΎΠ½Π½Ρ‹Ρ… Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΉ. Π‘Ρ‹Π»ΠΈ ΠΎΡ‚ΠΌΠ΅Ρ‡Π΅Π½Ρ‹ основныС направлСния Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΠ³ΠΎ ΠΏΡ€ΠΎΡ„Π΅ΡΡΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ развития, ΡΠΎΠ²Π΅Ρ€ΡˆΠ΅Π½ΡΡ‚Π²ΠΎΠ²Π°Π½ΠΈΡ Π½Π°Π²Ρ‹ΠΊΠΎΠ² программирования ΠΈ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡ ΠΏΡ€ΠΎΡ„Π΅ΡΡΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹Ρ… ΠΈ Π½Π°ΡƒΡ‡Π½Ρ‹Ρ… Π·Π½Π°Π½ΠΈΠΉ.

Бписок ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Π½Π½Ρ‹Ρ… источников

1. ЭккСль Π‘. Ѐилософия Java / Π‘. ЭккСль. — Π‘Пб.: ΠŸΠΈΡ‚Π΅Ρ€, 2009. — 640 с.

2. Ноутон П. Java 2 / П. Ноутон, Π“. Π¨ΠΈΠ»Π΄Ρ‚. — Π‘Пб.: Π‘Π₯Π’-ΠŸΠ΅Ρ‚Π΅Ρ€Π±ΡƒΡ€Π³, 2007. — 1072 с.

3. Π“Ρ€Π°Π±Π΅Ρ€ М.

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

Π² SQL / М. Π“Ρ€Π°Π±Π΅Ρ€. — Πœ: ΠΈΠ·Π΄Π°Ρ‚Π΅Π»ΡŒΡΡ‚Π²ΠΎ «Π›ΠžΠ Π˜», 1996. — 382 с.

4. ΠšΠΎΡ€ΠΆΠΈΠ½ΡΠΊΠΈΠΉ, Π‘. ΠΠ°ΡΡ‚ΠΎΠ»ΡŒΠ½Π°Ρ ΠΊΠ½ΠΈΠ³Π° Web-мастСра: эффСктивноС ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ HTML, JavaScript / Π‘. ΠšΠΎΡ€ΠΆΠΈΠ½ΡΠΊΠΈΠΉ. — ΠšΠ½ΠΎΡ€ΡƒΡ, 2000. — 320 с.

5. Π”Ρ€ΠΎΠ½ΠΎΠ², Π’. JavaScript Π² Web-Π΄ΠΈΠ·Π°ΠΉΠ½Π΅ / Π’. Π”Ρ€ΠΎΠ½ΠΎΠ² — БПб.: Π‘Π₯Π’, 2001. — 880 с.

ΠŸΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ А

ΠšΠΎΠ΄Ρ‹ JSP-страниц прилоТСния

pagesmanager.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %>

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>

<%@ page import="by.beloil.model.Consts" %>

Editing and viewing pages

${page.name}

Edit

Delete

Add new page

<%response.setHeader(" Cache-Control" , "no-cache" );%>

pageedit.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %>

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>

<%@ page import="by.beloil.servlets.Main" %>

<%@ page import="by.beloil.model.Consts" %>

<%@ page import="by.beloil.beans.Image" %>

<%@page import="by.beloil.beans.Page" %>

Editing of ${pageName}

Rows
Columns
Refresh page interval sec

Back to page manager

<%

Page curPage = (Page) pageContext.getAttribute(Consts.PARAM_PAGE);

for(int row = 1; row <= curPage.getRows(); row++) {

%>

<%

for(int col = 1; col <= curPage.getCols(); col++) {

Image image = curPage.getImage(row + "" + col);

if (image != null) {

%>

<%

} else {

%>

<%}}

%>

<%}%>

Name:

id:

subid:

interval:

width:

height:

host:

color:

Name:

id:

subid:

interval:

width:

height:

host:

color:

addpage.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %>

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>

<%@page import="by.beloil.model.Consts" %>

Name:

Rows:

Columns:

Interval:

Back to page manager

ΠŸΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π‘

ΠšΠΎΠ΄Ρ‹ сСрвлСтов прилоТСния

public class Edit extends Main {

private static final long serialVersionUID = 1L;

public Edit() {

super();

}

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

if (request.getParameter(Consts.PARAM_ACTION) != null) {doPost(request, response);} else {

HttpSession session = request.getSession();

session.setAttribute(" pages" , getPages());

RequestDispatcher dispatcher = session.getServletContext().getRequestDispatcher(Consts.JSP_URI_PAGES_MANAGER);

dispatcher.forward(request, response);

}}

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

request.setCharacterEncoding(" UTF-8" );

HttpSession session = request.getSession();

RequestDispatcher dispatcher = null;

String action = request.getParameter(Consts.PARAM_ACTION);

String rowsString = request.getParameter(Consts.PARAM_ROWS);

String colsString = request.getParameter(Consts.PARAM_COLS);

String interval = request.getParameter(Consts.PARAM_INTERVAL);

String pageName = request.getParameter(Consts.PARAM_PAGE_NAME);

String row = request.getParameter(Consts.PARAM_ROW);

String col = request.getParameter(Consts.PARAM_COL);

String name = request.getParameter(Consts.PARAM_NAME);

String id = request.getParameter(Consts.PARAM_ID);

String subid = request.getParameter(Consts.PARAM_SUBID);

String width = request.getParameter(Consts.PARAM_WIDTH);

String height = request.getParameter(Consts.PARAM_HEIGHT);

String host = request.getParameter(Consts.PARAM_HOST);

String color = request.getParameter(Consts.PARAM_COLOR);

if (action != null && action.equals(Consts.ACTION_DELETE)) {

deletePage(request, pageName);

session.setAttribute(" pages" , getPages());

dispatcher = session.getServletContext().getRequestDispatcher(Consts.JSP_URI_PAGES_MANAGER);

dispatcher.forward(request, response);

} else { if (rowsString != null && colsString != null && interval != null && pageName != null) {

if (action != null && action.equals(Consts.ACTION_UPDATE)) {

Page page = getPage(pageName);

page.setInterval(Integer.parseInt(interval));

page.setRows(Integer.parseInt(rowsString));

page.setCols(Integer.parseInt(colsString));

DataModel.updatePage(page);

session.removeAttribute(pageName);

dispatcher = session.getServletContext().getRequestDispatcher(Consts.JSP_URI_EDIT);

dispatcher.forward(request, response);

} else {if (action != null && action.equals(Consts.ACTION_ADD)) {

Page page = getPage(pageName);

if (page == null) {

int rows = Integer.parseInt(rowsString);

int cols = Integer.parseInt(colsString);

page = new Page(pageName, 0, "/" + pageName + ".jsp" , Integer.parseInt(interval), rows, cols, new HashMap());

addPage(request, page);

DataModel.addPage(page);}

session.setAttribute(" pages" , getPages());

dispatcher = session.getServletContext().getRequestDispatcher(Consts.JSP_URI_PAGES_MANAGER);

dispatcher.forward(request, response);

}}}}

if (row != null && col != null && pageName != null && name != null && id != null && subid != null && interval != null && width != null && height != null && host != null && color != null) {

Page page = getPage(pageName);

session.removeAttribute(pageName);

Image image = page.getImage(row + col);

if (image != null) {

image.setColor(color);

image.setHeight(height);

image.setHost(host);

image.setId(Integer.parseInt(id));

image.setInterval(interval);

image.setName(name);

image.setSubid(subid);

image.setWidth(width);

DataModel.updateImage(page, image);

} else {

image = new Image(Integer.parseInt(id), 0, name, subid, interval, width, height, host, color, Integer.parseInt(row), Integer.parseInt(col));

page.getImages().put(image.getRow() + "" + image.getCol(), image);

DataModel.updateImage(page, image);}

dispatcher = session.getServletContext().getRequestDispatcher(Consts.JSP_URI_EDIT);

dispatcher.forward(request, response);}}}

public class GetImage extends Main {

private static final long serialVersionUID = 1L;

public GetImage() {

super();

}

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

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

String w = request.getParameter(" width" );

String h = request.getParameter(" height" );

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

String pageName = request.getParameter(" page" );

if (refresh != null) {

response.getOutputStream().print(getVersion());

} else {

if (id != null && w != null && h != null && pageName != null) {Page page = getPage(pageName);

if (page != null) {

Image image = page.getImage(Integer.parseInt(id));

if (image != null) {

String url = null;

url = "http://10.5.2.166/chart.png?id=" + id + "&width=" + w + "&height=" + h;

URLConnection connection = new URL(url).openConnection();

InputStream inputStream = connection.getInputStream();

try {

ImageIO.write(ImageIO.read(inputStream), "png" , response.getOutputStream());

} catch (IllegalArgumentException e) {

System.out.println(id);}

public class Main extends HttpServlet {

private static final long serialVersionUID = 1L;

private static List pages;

private static long version;

static {

version = new Date().getTime();

fillPages();

}

public Main() {

super();

}

public static long getVersion() {

return version;

}

public static void setVersion(long version) {

Main.version = version;

}

public static List getPages() {

return pages;

}

public static Page getPage(String pageName) {

Iterator iterator = getPages().iterator();

Page page = null;

while (iterator.hasNext()) {

page = (Page) iterator.next();

if (page.getName().equalsIgnoreCase(pageName)) {

break;} else {page = null;}}return page;}

public static void deletePage(HttpServletRequest request, String pageName) {

Page page = getPage(pageName);

if (page != null) {

String path = request.getSession().getServletContext().getRealPath(" /" ) + "" ;

File file = new File(path + page.getName() + ".jsp" );

file.delete();

file = new File(path + "/scripts/" + pageName + ".js" );

file.delete();

pages.remove(page);

DataModel.deletePage(page);}}

public static void fillPages() {

pages = DataModel.getPages();

}

public static void addPage(HttpServletRequest request, Page page) {

pages.add(page);

String path = request.getSession().getServletContext().getRealPath(" /" ) + "" ;

String pageContent = "<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %>n<%@ page import="by.beloil.beans.*" %>n<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>n<%@ page import="by.beloil.model.Consts" %>nnnt

nttntttnttttntt<%=curPage.getName()%>nttnttntntnttntttntt<%nttttfor (int row = 1; row ≤ curPage. getRows (); row++) {ntttttString head = «» ;ntttttString body = «» ;ntttttfor (int col = 1; col ≤ curPage. getCols (); col++) {nttttttImage image = curPage. getImage (row + «» + col);nttttttif (image ≠ null) {nttttttthead += «» ;ntttttttbody += «» ;ntttttt} else {nttttttthead += «» ;ntttttttbody += «» ;ntttttt}nttttt}nttttthead += «» ;ntttttbody += «» ;ntttttout.println (head);ntttttout.println (body);ntttt}nttt%>
» + image. getName () + «
ntn";

File file = new File (path + page. getName () + «.jsp»);

PrintWriter printWriter;

try {

printWriter = new PrintWriter (file);

printWriter.print (pageContent);

printWriter.close ();

} catch (FileNotFoundException e) {

}}}

public class Run extends Main {

private static final long serialVersionUID = 1L;

public Run () {

super ();

}

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

String pageName = request. getParameter (Consts.PARAM_PAGE_NAME);

Page page = getPage (pageName);

HttpSession session = request. getSession ();

if (page ≠ null) {

session.setAttribute (page.getName (), page);

String path = request. getSession ().getServletContext ().getRealPath («/scripts/») + «» ;

File file = new File (path + pageName + «.js»);

String server = request. getServerName ();

int port = request. getServerPort ();

PrintWriter script = new PrintWriter (file);

script.print («function rescale () {ntvar table = document. getElementById («table»);ntwidth = (screen.availWidth / table. rows[0]. cells. length — 1).toFixed (0);ntheight = (screen.availHeight / table.rows.length * 2 — 35).toFixed (0);nturl = «http://» + server + «:» + port + «/prtgStat/GetImage?id=»;");

String func_resc = «» ;

String func_resc2 = «» ;

Iterator iterator = page. getImages ().values ().iterator ();

while (iterator.hasNext ()) {

Image image = (Image) iterator. next ();

int id = image. getId ();

int row = image. getRow ();

int col = image. getCol ();

String interval = image. getInterval ();

func_resc += «ntr» + row + «c» + col + «();» ;

func_resc2 += «function r» + row + «c» + col + «() {ntvar img = document. getElementById («» +

id + «»);ntif (img ≠ null) {nttvar time = new Date ();nttimg.setAttribute («src», «+ «url + «» + id + «&page=» + page. getName () + «&width=» + width + «&height=» + height + «&time=» + time);nt}nt» +

" setTimeout ('r" + row + «c» + col + «()', «+ interval + «000);n}nn» ;

}

func_resc2 += «function refresh () {ntvar xmlhttp;ntif (window.XMLHttpRequest) {nttxmlhttp = new XMLHttpRequest ();nt} else {nttxmlhttp = new ActiveXObject («Microsoft.XMLHTTP»);nt}ntxmlhttp.onreadystatechange = function () {nttif (xmlhttp.readyState == 4 && xmlhttp. status == 200) {ntttif (xmlhttp.responseText ≠ document. getElementById («version»).innerHTML) {nttttwindow.location.reload ();nttt}ntt}nt}ntvar url = «http://» + server + «:» + port + «/prtgStat/GetImage?refresh=what&time=» + new Date ();ntxmlhttp.open («GET», url, true);ntxmlhttp.send ();ntsetTimeout ('refresh ()', «+ page. getInterval () + «000);n}» ;

func_resc += «n}nn» ;

script.print (func_resc);

script.print (func_resc2);

script.close ();

RequestDispatcher dispatcher = session. getServletContext ().getRequestDispatcher (page.getUrl ());

dispatcher.forward (request, response);

} else {

RequestDispatcher dispatcher = session. getServletContext ().getRequestDispatcher (Consts.JSP_URI_PAGES_MANAGER);

dispatcher.forward (request, response);

}}

ΠŸΠΎΠΊΠ°Π·Π°Ρ‚ΡŒ вСсь тСкст
Π—Π°ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ Ρ„ΠΎΡ€ΠΌΡƒ Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΉ Ρ€Π°Π±ΠΎΡ‚ΠΎΠΉ