• Главная
  • Карта сайта
Не найдено

Struts: web-додатки на J2EE

Коли говорять про створення web-додатків на Java, то мова, як правило, в першу чергу заходить про написання їх на основі запропонованих самими розробниками Java засобах. Проте, існують потужні фреймворки, які дозволяють створювати web-додатки на J2EE набагато зручніше і швидше. Struts - найвдаліший з них на думку багатьох розробників.


Навіщо це потрібно?

Говорячи про Struts, я буду мати на увазі не першу версію цього фреймворка, а другу, тобто Struts2. Справа в тому, що друга версія Struts'а досить серйозно відрізняється від першої - правда, звичайно ж, не по своїй ідеології, а по реалізації та внутрішню архітектуру самого фреймворка.

Втім, перш ніж приступати до занурення в таємниці Struts'а, варто внести ясність в питання "а навіщо взагалі потрібно використати Struts, якщо Sun Microsystems цілком ясно позначила, яким саме вона бачить web-додаток на Java?". Питання логічне. Але, погодьтеся, якби шлях, запропонований творцями самої платформи Java, був так вже й хороший і беззаперечно влаштовував усіх, то навряд чи б хтось став писати власний потужний фреймворк, що пропонує альтернативний підхід до розробки таких програм. Зрозуміло, Struts має перевагу перед стандартними засобами J2EE - по крайней мере, в деяких областях. Які ж це переваги? А ось давайте разом і розберемося.

Справа в тому, що зараз велика частина web-додатків створюється на основі шаблона модель-уявлення-контролер (Model-View-Controller, MVC). Загалом, це природний шаблон для більшості сучасних web-додатків, який розбиває їх функціональність на три різні частини. Модель - це частина, що реалізує логіку взаємодії з базою даних; уявлення - це JSP-сторінки, які відображаються користувачеві; контролер - це та частина, яка обробляє інформацію між моделлю і представленням. На відміну від традиційних засобів створення Java-додатків (тобто того підходу, який запропонувала Sun Microsystems), Struts дозволяє простіше конструювати додатки використати шаблон модель-уявлення-контролер. Більш того, цей фреймворк позбавляє програміста від написання більшої частини рутинного коду контролера, дозволяючи тому зайнятися більш творчими і важливими речами. Тобто Struts дозволяє набагато швидше створювати додатки в рамках шаблону MVC. Саме тому фреймворк став популярний серед Java-програмістів у всіх куточках світу.


архітектура Struts

Весь фреймворк Struts2 складається з двох основних компонентів - інтерцепторів і дій (дуже часто використовується калька з англійського, і дії називаються стрілялки). Може, вам теж більше подобається використовувати термін "стрілялки" замість "дії" - що ж, їх місце в Struts-додатку можна побачити на схемі.

Може, вам теж більше подобається використовувати термін стрілялки замість дії - що ж, їх місце в Struts-додатку можна побачити на схемі

Як бачите, на ділі все досить просто. Інтерцептори - це класи, що виконують допоміжний код (наприклад, всякі перевірки), а дії - це, в общем-то, саме те, що і повинен реалізувати програміст в своєму web-додатку.

Дії - це JavaBean-класи, які реалізують методи, що встановлюють або приймають від екземпляра класу значення будь-яких його властивостей (вони називаються Геттера і сетерами, від англійського get - отримувати і set - встановлювати). Властивості ці виходять або встановлюються в процесі обробки JSP-коду web-сторінок за допомогою спеціально наданих Struts'ом JSP-тегів. Використання інтерцепторів дозволяє винести деякі загальні запитання обробки даних за рамки самих дій, тобто Дія отримують набір "плагінів" в вигляді інтерцепторів і можна варіювати їх властивості.

Дії складаються фреймворком в стек, причому деякі з них повинні укладатися в "ланцюг", тобто зв'язуватися одне з одним. Це необхідно для того, щоб Struts міг знайти в стеці властивість, до якого звернулася JSP-сторінка: фреймворк витягує зі свого стека послідовно всі дії і переходить по ланцюжку від одного до іншого. Якщо дії не пов'язані один з одним, то він не може перейти від одного до іншого, і ланцюжок обривається.

До речі, про пташок. Хоча я весь час говорю про JSP-сторінках як про подання в рамках моделі MVC, зовсім не обов'язково, щоб саме вони були поданням в додатках, написаних з використанням Struts'а. Замість JSP можна використовувати і Velocity, і зв'язку з XML і XSL-файлів - фреймворк дозволяє писати web-додатки з тим уявленням, з яким звикла виконувати проекти ваша компания. Але, звичайно ж, краще всього використовувати JSP-сторінки - саме їх використовує більшість тих, хто працює зі Struts'ом, їх підтримка пріоритетна для розробників фреймворка і саме з ними тому має бути, в результаті, найменше проблем.


Практика

Напевно, все, що написано вище, здається сумбурним і складним для сприйняття без попереднього прийняття на груди "півлітри". Насправді, все не так уже й "запущено", і розібратися зі Struts'ом можна без медіумів або ясновидців. Просто дуже складно сприймати ці відомості абстрактно - тому саме час додати до статті трохи програмного коду.

Для початку розглянемо клас дії, пропонований в документації Struts'а як приклад "Hello World". На всякий випадок скажу, що всі авторські права на цей код належать авторам документації до Struts'у - мої будуть тільки коментарі.

package tutorial; import com.opensymphony.xwork2.ActionSupport; public class HelloWorld extends ActionSupport {public static final String MESSAGE = "Struts is up and running ..."; public String execute () throws Exception {setMessage (MESSAGE); return SUCCESS; } Private String message; public void setMessage (String message) {this.message = message; } Public String getMessage () {return message; }}

Отже, що у нас є в цьому класі? Для початку зверніть увагу на базовий клас - ActionSupport. Він повинен бути базовим класом для всіх нових Action'ов в вашому додатку (хоча в другій версії Struts'а з'явилася можливість реалізовувати дії через підтримку класом інтерфейсу Action). message - це те саме поле, значення якого буде приймати або віддавати наше дію при отриманні або видачі властивості. MESSAGE - це, як ви самі можете побачити, константа. Забігаючи вперед скажу, що вона виводиться на екран і показує, що ми все правильно настроїти і запустили, і Struts працює. Методи setMessage і getMessage - це ті самі сетер і геттер, про які говорилося вище. Найцікавіший же в цьому класі метод -звичайно ж, execute. Він реалізується в кожній дії і виконується при завантаженні дії (фактично, він в деякому роді аналогічний конструктору). Тобто, у термінах Struts'а, дія виконується. У нашому випадку виконання полягає в тому, щоб встановити початкове значення нашому властивості.

Для того, щоб Struts міг розпізнати наше дію, потрібно написати спеціальний конфігураційний файл для Struts'а; він має назву struts.xml і розташовується в директорії WEB-INF \ classes \ вашого застосування. Що ми повинні написати в цьому файлі конфігурації? Його вміст ви можете побачити в лістингу.

<! DOCTYPE struts PUBLIC "- // Apache Software Foundation // DTD Struts Configuration 2.0 // EN" "http://struts.apache.org/dtds/struts-2.0.dtd"> <struts> <package name = " tutorial "extends =" struts-default "> <action name =" HelloWorld "class =" tutorial.HelloWorld "> <result> /HelloWorld.jsp </ result> </ action> <! - Add your actions here -> < / package> </ struts>

Тут, здається, все ще простіше і зрозуміло, чому в Java-коді. Усередині package'а з назвою tutorial (загалом, все одно, яке у нього назва) ми розміщуємо список тих дій, які входять в даний package. Ми вказуємо в атрибутах ті імена, які отримують наші дії, і класи, які їх реалізують. Зрозуміло, що в нашому випадку одне вплив, одне ім'я і один клас. Як result'а вказується та сторінка, яку буде направлятися вихідний потік даних дії, і в нашому випадку це та ж сторінка, з якої ми здійснюємо вхід в web-додаток.

Щоб наше Struts-додаток правильно працювало, потрібно ще трохи поворожити над Web.xml-файлом, в який вписується диспетчер фільтрів, який буде обробляти URL'і і перенаправляти ті, які відносяться до дій, Struts'у. За замовчуванням, "розширення" в кінці таких URL'ей - .action. Налаштувати диспетчер фільтрів легко, про те, як це зробити, я не буду розповідати - все можна знайти в документації до Struts'у за адресою struts.apache.org/2.x .

Тепер кілька слів про сторінку HelloWorld.jsp, яка фігурує в нашому web-додатку, але вихідного коду якої до сих пір в статті не було. Хочу вас чи порадувати, то чи засмутити: мало того, що був, - так ще і не буде. Чому раптом? Бо від звичайної порожній JSP-сторінки вона відрізняється тільки тим, що в ній підключена бібліотека тегів Struts'а (робиться так: <% @ taglib uri = "/ struts-tags" prefix = "s"%>). Друга відмінність - рядок <s: property value = "message" />, яка виймає значення властивості message з дії і виводить його на сторінку.


Підсумуємо

Звичайно, скільки всього не сказано про Struts'е - але ж газетна стаття, в Зрештою, не довідник, і навіть не підручник. Її завдання - познайомити і зацікавити, а той, кому недостатньо такої інформації, може самостійно підняти документацію по фреймворку (її досить багато, написана вона цілком доступним англійською мовою). Також чимало інформації по Struts'у (правда, в основному, не за другою версією, а по першій) в книгах, які справно пишуть індійці. Російськомовних книг з цього фреймворку особисто я поки не зустрічав, хоча вони навряд чи завадили б - адже Struts сьогодні в багатьох компаніях вже став стандартом де факто для MVC-фреймворка, з допомогою якого пишуться web-додатки на J2EE.

Якщо у вас виникнуть складності, то, як я вже говорив, для початку варто звернутися до офіційній сторінці Struts'а на сайті Apache Foundation. Існує також безліч інших сайтів, призначених для розробників, які використовують Struts. На них можна знайти різні класи-дії, задати запитання у форумах, почитати часто задаються з відповідями на них ... Загалом, Гугл в допомогу. І удачі в роботі зі Struts'ом, звичайно ж!

Вадим СТАНКЕВИЧ

Навіщо це потрібно?
Які ж це переваги?
Що ми повинні написати в цьому файлі конфігурації?
Чому раптом?
Провайдеры:
  • 08.09.2015

    Batyevka.NET предоставляет услуги доступа к сети Интернет на территории Соломенского района г. Киева.Наша миссия —... 
    Читать полностью

  • 08.09.2015
    IPNET

    Компания IPNET — это крупнейший оператор и технологический лидер на рынке телекоммуникаций Киева. Мы предоставляем... 
    Читать полностью

  • 08.09.2015
    Boryspil.Net

    Интернет-провайдер «Boryspil.net» начал свою работу в 2008 году и на данный момент является одним из крупнейших поставщиков... 
    Читать полностью

  • 08.09.2015
    4OKNET

    Наша компания работает в сфере телекоммуникационных услуг, а именно — предоставлении доступа в сеть интернет.Уже... 
    Читать полностью

  • 08.09.2015
    Телегруп

    ДП «Телегруп-Украина» – IT-компания с 15-летним опытом работы на рынке телекоммуникационных услуг, а также официальный... 
    Читать полностью

  • 08.09.2015
    Софтлинк

    Высокая скоростьМы являемся участником Украинского центра обмена трафиком (UA — IX) с включением 10 Гбит / сек... 
    Читать полностью