18125

Struts Framework

Лекция

Информатика, кибернетика и программирование

Тема 10: Struts Framework Apache Struts це opensource framework для розробки Java EE web програм. В ньому використовується і розширюється Java Servlet API та надається базова інфраструктура для реалізації програми на основі шаблону проектування design pattern MVC. Базова платформа для використання Struts 2 вклю...

Украинкский

2013-07-06

175 KB

2 чел.


Тема 10: Struts Framework

Apache Struts – це open-source framework для розробки Java EE web програм. В ньому використовується і розширюється Java Servlet API та надається базова інфраструктура для реалізації програми на основі шаблону проектування (design pattern) MVC. Базова платформа для використання Struts 2 включає Servlet API 2.4, JSP API 2.0 та Java 5. Архітектура Struts є елегантною та гнучкою і базується на стандартних технологіях, таких, як Java Filters, Java Beans, ResourceBundles, XML тощо. 

Основна задача Struts полягає в реалізації MVC, тобто чіткого розділення model (логіки програми, яка може взаємодіяти з базою даних) від view (сторінок, що показуються у броузері користувача) та controller (компонентів, що передають інформацію між model та view і керують перебігом програми). Для model Struts може використовувати різноманіття технологій доступу до баз даних, таких, як  JDBC, JPA, Hibernate тощо, а view може базуватись на JSP, JTL, JSF, Jakarta Velocity Engine, Templates, PDF, XSLT тощо.

На рисунку зображено життєвий цикл обробки запиту від користувача програмою, що базується на Struts2. Запит надходить до сервлет-контейнера, такого, як Tomcat і потім проходить через стандартний ланцюг фільтрів.

ActionContextCleanUp та Other Filters (SiteMesh, etc) є необов’язковими. При виклику FilterDispatch перевіряється з використанням ActionMapper чи викликати Action (реалізація controller) чи ні. Якщо action повинен виконуватись, то FilterDispatcher передає керування ActionProxy. ActionProxy звертається до Configuration Files Manager, який бере дані з конфігураційного файлу struts-config.xml. Потім ActionProxy створює ActionInvocation, який реалізує собою шаблон команди. Процес ActionInvocation викликає Interceptors (перехоплювачі – якщо такі вказані) та потім викликає action. Потім ActionInvocation знаходить відповідний Result, який виконується, забезпечуючи формування результату, який побачить користувач з JSP чи іншого шаблону. Потім інтерсептори виконуються знову в зворотньому порядку. Нарешті, відповідь повертається через фільтри, описані в файлі web.xml.

Struts надає для використання controller (сервлет ActionServlet) і полегшує створення шаблонів для презентаційного рівня (зазвичай це JSP, але також можуть використовуватись XML/XSLT і Velocity). Розробник web програми повинен створити код model, а також створити основний конфігураційний файл struts.xml, в якому зв’язуються model, view і controller.

Приклад найпростішої програми з використанням Struts Framework.

Структуру програми можна побачити на рисунку:

Програма починається з файлу index.html, який перенаправляє подальше виконання на URL example/HelloWorld.action, який являє собою насправді action-об’єкт Struts:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">

<html>

<head>

   <META HTTP-EQUIV="Refresh" CONTENT="0;URL=example/HelloWorld.action">

</head>

<body>

<p>Loading ...</p>

</body>

</html>

URL example/HelloWorld.action описується в файлі struts.xml – спеціальному конфігураційному файлі Struts, який повинен знаходитись в папці WEB-INF/classes. Приклад файлу:

<?xml version="1.0" encoding="UTF-8" ?>

<!DOCTYPE struts PUBLIC

"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"

"http://struts.apache.org/dtds/struts-2.0.dtd">

<struts>

<constant name="struts.enable.DynamicMethodInvocation" value="false" />

<constant name="struts.devMode" value="true" />

<package name="example" namespace="/example" extends="struts-default">

 <action name="HelloWorld" class="org.chdtu.trystruts.Struts2HelloWorld">

  <result>/pages/HelloWorld.jsp</result>

 </action>

</package>

</struts>

Елемент action, який виконує функцію контроллера, має вигляд:

package org.chdtu.trystruts;

import com.opensymphony.xwork2.ActionSupport;

import java.util.Date;

public class Struts2HelloWorld extends ActionSupport {

   public static final String MESSAGE = "Struts 2 Hello World!";

   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;

   }

 public String getCurrentTime(){

     return new Date().toString();

 }

}

При передачі йому керування автоматично виконується метод execute(). В Struts2 екземпляр action створюється для кожного запиту і знищується зразу після завершення запиту.

JSP сторінка виведення результату HelloWorld.jsp:

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

<%@ taglib prefix="s" uri="/struts-tags" %>

<html>

<head>

<title>Struts 2 Hello World Application!</title>

</head>

<body>

<h2><s:property value="message" /></h2>

<p>Current date and time is: <b><s:property value="currentTime"/></b>

</body>

</html>


 

А также другие работы, которые могут Вас заинтересовать

81777. Символизм как литературное направление. Анализ стихотворения одного из поэтов-символистов 47.33 KB
  Бальмонта Ю. В поэтических формулах Бальмонта Сологуба Гиппиус Мережковского отрицается истинность реального мира объявляемого лишь комплексом ощущений творцахудожника: . Бальмонта М. В 90х годах вышли сборники его стихотворений: Под северным небом 1894 В безбрежности 1895 Тишина 1897; в 900е годы в период творческого взлета Бальмонта Горящие здания 1900 Будем как солнце 1903 Только любовь 1903.
81778. Образ метели в произведениях отечественной литературы 32.93 KB
  Все ее действие развертывается на фоне разгулявшихся природных стихий: Ветер ветер На всем божьем свете Ветер хлесткий гуляет свищет и зол и рад Разыгралась чтойто вьюга ох пурга какая спасе Вьюга долгим смехом Заливается в снегах Очевидно что образы ветра метели романтичны и имеют символический смысл. Ветер ветер На ногах не стоит человек. Ветер ветер На всем Божьем свете. Во второй строфе напор стихии как бы смягчается ее действия становятся не гневны а почти нежны и появляются уменьшительноласкательные...
81779. Наука и философия. Статус научной философии 28.69 KB
  Многолетний спор философии и науки о том в чем больше нуждается общество в философии или науке и какова их действительная взаимосвязь породил множество точек зрения обилие возможных трактовок и интерпретаций этой проблемы. Остановимся на основных тезисах раскрывающих суть соотношения философии и науки: Специальные науки служат отдельным конкретным потребностям общества: технике экономике искусству врачевания искусству обучения законодательству и др. Частные науки ограничиваются отдельными частями мира. Философия задумывается о...
81780. Функции науки. Роль науки в современном образовании и формировании личности 28.41 KB
  Роль науки в современном образовании и формировании личности. Проблема связанная с классификацией функций науки до сих пор остается спорной отчасти потому что последняя развивалась возлагая на себя новые и новые функции отчасти в силу того что выступая в роли социокультурного феномена она начинает больше заботиться не об объективной и безличностной закономерности а о коэволюционном вписывании в мир всех достижений научнотехнического прогресса. В качестве особой и приоритетной проблемы выделяют вопрос о социальных функциях науки...
81781. Преднаука и наука. Генезис науки и проблема периодизации её истории 31.74 KB
  Генезис науки и проблема периодизации её истории. Исследуя историю любого материального или духовного явления в том числе и науки следует иметь в виду что это сложный диалектический поступательный процесс появления различий включающий в себя ряд качественно своеобразных этапов фаз и т. Применяя сказанное о периодизации к истории науки следует прежде всего подчеркнуть следующее. Вопрос о периодизации истории науки и ее критериях по сей день является дискуссионным и активно обсуждается в отечественной и зарубежной литературе.
81783. Средневековая наука. Организация науки в средневековых университетах 33.78 KB
  Первый из них факультет свободных искусств trium был наиболее многочисленным и считался подготовительным для трех других факультетов: медицинского юридического и теологического самого малочисленного но обучение на котором было самым продолжительным. Таким образом Парижский университет оказался в плену противоречивых тенденций: превратиться в центр беспристрастных исследований связанных с изучением античного наследия но всегда стоящих перед опасностью впасть в инакомыслие либо подчинить исследование религиозным целям и тем самым...
81784. Формирование опытной науки в новоевропейской культуре 31.1 KB
  Изменяется роль человека в мире. Происходит постепенная смена мировоззренческой ориентации: для человека значимым становится посюсторонний мир автономным универсальным и самодостаточным становится индивид. Отсюда и характерное для эпохи Возрождения стремление познать принципы функционирования механизмов приборов устройств и самого человека.
81785. Наука в собственном смысле слова: классическая наука, неклассическая и постклассическая 30.52 KB
  Таким образом основные стороны бытия науки это вопервых сложный противоречивый процесс получения нового знания; вовторых результат этого процесса т. объединение полученных знаний в целостную развивающуюся органическую систему а не простое их суммирование; втретьих социальный институт со всей своей инфраструктурой: организация науки научные учреждения и т.; этос нравственность науки профессиональные объединения ученых ресурсы финансы научное оборудование система научной информации различного рода коммуникации ученых и т....