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>


 

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

74397. ПУТИ ПОВЫШЕНИЯ ПРОПУСКНОЙ СПОСОБНОСТИ ЛИНИЙ ЭЛЕКТРОПЕРЕДАЧ И ЭЛЕКТРИЧЕСКИХ СЕТЕЙ 720 KB
  К таким ограничениям относятся: а предел передаваемой мощности предел линии учитывающий устойчивость параллельной работы электрических станций и узлов нагрузки...
74398. Определение оптимальной мощности компенсирующего устройства для линии 55.5 KB
  Оптимальную мощность компенсирующего устройства описывают, исходя из критерия оптимизации. В качестве которого рассмотрим приведенные затраты. Функция кривых затрат отмечена в виде
74399. Учет равномерности затрат при оптимизации развития электрической системы. Метод приведенных затрат в динамической постановке 35 KB
  Приведенные затраты в динамической постановке записываются в виде: где Θ период год к которому приводятся разновременные инвестиции и издержки чаще всего принимают первый период или год сооружения. Выражение в скобках означает приведенные затраты на интервале Т. Если таких отраслей j то динамические приведенные затраты формулируются в следующем виде: Есть несколько вариантов наилучший вариант там где min. Практическое решение заключается в выделении одного хотя не самого лучшего доминирующего критерия например ЧДД или приведенные...
74400. Чистый дисконтированный доход (ЧДД 36.5 KB
  Под ним понимают превышение суммарных денежных поступлений над суммарными затратами с учетом неравноценности эффектов относящихся к различным моментам времени. При этом дисконтированием называют приведение разновременных значений денежных потоков денежных поступлений капиталовложений и пр.
74401. ВЫБОР ВАРИАНТА РАЗВИТИЯ ЭЛЕКТРИЧЕСКОЙ СЕТИ С УЧЕТОМ НАДЕЖНОСТИ ЭЛЕКТРОСНАБЖЕНИЯ И ТРЕБОВАНИЙ ЭКОЛОГИИ 901.5 KB
  При нормативном подходе опираются на требования к обеспечению надежности электроснабжения излаженные в ПУЭ. К наиболее ответственным электроприемникам I категории отнесены такие перерыв электроснабжения которых может повлечь за собой опасность для жизни людей повреждение дорогостоящего оборудования массовый брак продукции расстройство сложного технологического процесса нарушение функционирования особо важных элементов коммунального хозяйства. К электроприемникам II категории отнесены те перерыв электроснабжения которых приводит...
74403. Строение и развитие (мегаспорогенез) зародышевого мешка 30.5 KB
  Там они делятся позднее еще два раза и на концах зародышевого мешка получается по четыре ядра. По одному ядру от каждой группы так называемые полярные ядра направляется к середине зародышевого мешка где они сливаются и образуют так называемое вторичное или центральное ядро зародышевого мешка. Вокруг трех ядер находящихся в конце зародышевого мешка ближайшем к пыльцевходу скопляется густая протоплазма и получаются три клетки голые или одетые очень тонкой белковой но не целлюлозной оболочкой.
74404. КОНУС НАРАСТАНИЯ СТЕБЛЯ 32.5 KB
  Теория справедливая для споровых растений мхов плаунов хвощей и папоротников см. 83 оказалась неверной для голосеменных и покрытосеменных растений. Ганштейн показал что у этих растений единственной апикальной клетки нет конус нарастания их побега массивный многоклеточный и слоистый. По теории гистогенов сформулированной Ганштейном конус нарастания голосеменных и цветковых растений состоит из трех слоев клеток: 1 наружного однослойного дерматогена1 из него возникает кожица эпидермис;2 периблемы состоящей из одного или...
74405. Ксилема 40 KB
  По характеру утолщения стенок различают трахеиды кольчатые спиральные лестничные сетчатые и пористые рис. Пористые трахерды имеют всегда окаймленные поры рис. 101 у хвойных обычно с торусом рис. Трахеиды приспособлены к выполнению двух функций: проведения воды и механического укрепления органа.