Struts

Struts
Logo
VývojářApache Software Foundation
Aktuální verze6.6.1 (5. října 2024)
PlatformaJava Virtual Machine
Vyvíjeno vJava
Typ softwaruwebový aplikační framework
Licencelicence Apache
Webstruts.apache.org
Některá data mohou pocházet z datové položky.

Technologie Struts 1 byla vytvořena společnosti Apache. Jedná se o free open-source framework pro vytváření webových aplikací a spadá do velkého balíků technologií Java Enterprise Edition. Struts 1 je převážně založen na technologiích JSP, servlety, JavaBeans a proto je i velice spjat s webovým kontejnerem.

Výhody Apache Struts 1

Framework Struts má několik výhod, kterými může přispět při tvorbě kvalitní webové aplikace. Nutí např. dodržovat přesně stanovená pravidla.

Návrhový vzor MVC

Aplikace, které se píší pomocí frameworku Struts 1, jsou založeny na návrhovém vzoru MVC (Model-View-Controller).

  • Prezentační vrstva (View) je implementována použitím JSP a je zodpovědná za zobrazení výsledků k uživateli.
  • Řídící vrstvu (Controller) reprezentuje servlet ActionServlet a zachycuje všechny požadavky od uživatele a vybírá příslušné View na navrácení dat.
  • Model (Model) je implementován pomocí JavaBeans, obsahuje business logiku a používá se ke komunikaci s perzistentním úložištěm dat.

Tyto tři vrstvy jsou spojeny pomocí konfiguračního souboru (struts-config.xml). Framework používá tento soubor k vlastní inicializaci. Definují se v něm např. tyto prostředky:

  • Třídy akcí (Action classes), které volají aplikační logiku a přistupují k datům.
  • Výsledky pro přípravu pohledů (views) použitím různých technologií jako např. JavaServer Pages, Velocity a FreeMarker.
  • Zachytávací filtry (interceptors), které mohou zachytit dotaz před a po jeho vlastním zpracování.

Lokalizace textů

Platí pravidlo, které říká, že texty nepatří do programů, ale do speciálního konfiguračního souboru. Struts budou motivovat k dodržování tohoto standardu.

  • Lokalizace se vykonává pomocí souborů lokalizovaných zpráv, každý text nebo obrázek má svůj klíč.
  • Aplikace vybere správný soubor obsahující klíče a jim odpovídající položky pomocí nastavení Locales.
  • Lze si vytvořit soubor pro českou verzi i pro anglickou, a když nebude nalezen soubor s požadovaným jazykem, tak se může použít standardní.

Do souboru struts-config.xml se umístí tento element, tím se připojí zdroje, aby s nimi mohl kontejner pracovat. Když se použije kromě atributu parameter (udává cestu k souboru .properties), atribut null, tak se tím říká, že pokud se nenalezne hodnota s daným klíčem, místo chyby na server se zobrazí tento klíč.

<message-resources parameter="com/myapp/struts/ApplicationResource" />

Do tohoto souboru properties se vloží obsah

welcome.title=Struts Application

Poté se vloží do JSP tento obsah

<bean:message key="welcome.title" />

Ošetřování formulářů

Vytvoří se html formulář pomocí JSP custom tags a implementuje se ActionForm třída, která kontroluje a validuje hodnoty ve formuláři. Pokud některá z hodnot není v pořádku, tak Struts zobrazí formulář s vyplněnými hodnotami a chybovými hláškami.

Poolování připojení do databáze

Framework obsahuje jednoduchou implementaci rozhraní DataSource, která poolování provádí.

Jak pracuje Apache Struts 1

Následující postup se aplikuje, když klient odešle HTTP požadavek:

  • ActionServlet obdrží požadavek
  • struts-config.xml obsahuje detaily týkající se Actions, ActionForms, ActionMappings a ActionForwards
  • během startu ActionServlet přečte struts-config.xml a vytvoří databázi konfiguračních objektů

Když ActionServlet přijme požadavek, tak udělá tyto kroky:

  • sbalí se všechny hodnoty požadavku do JavaBeans třídy, která rozšiřuje ActionForm
  • rozhodne, která třída akce bude vyvolána ke zpracování požadavku
  • validuje vstupní data od uživatele
  • třída akce zpracuje požadavek s pomocí komponent modelu, model komunikuje s databází
  • po skončení zpracovávání požadavku Action třída vrátí ActionForward controlleru
  • na základce ActionForward controller vyvolá příslušné view
  • http odpověď je poskytnuta uživateli zpět pomocí view komponent

Struktura složek

Webová aplikace se typicky skládá z hierarchické struktury složek. Kořenová složka hierarchie slouží jako kořen dokumentu pro webovou aplikaci. Pod kořenem se nachází složka WEB-INF (do této složky by se měly umísťovat soubory, které nemají být vně aplikace). V této složce je umístěn i deskriptor (web.xml).

Další složka je WEB-INF/classes, která je použita pro servlety a pro třídy, které jsou použity ve webové aplikaci. Složka /classes musí obsahovat řádný popis podsložek, přesně podle jména balíčku. Druhou složkou je WEB-INF/lib, která obsahuje Java Archive (JAR) soubory pro umístění do aplikace, jako jsou například knihovny.

Deskriptor (web.xml) je soubor, ve kterém je umístěna konfigurace webové aplikace. Kontejner nahrává deskriptor při svém spuštění. Deskriptor obsahuje tyto typy informací: inicializační proměnné, session konfigurace, deklaraci servletů, mapování servletů, posluchač životního cyklu aplikace, definování a mapování filtrů, MIME mapování, deklaraci uvítací stránky, chybové stránky, JNDI reference, Tag library mapování.

Aplikace „Hello World“

Lze si zkusit vytvoření jednoduchou aplikace „Hello World“, která ukáže základní fungování Struts 1. Hodí se vývojové prostřední Netbeans, které mají výbornou podporu Struts 1, ve verzi 6.8 je Struts 1 již importována do vývojového prostředí a nabídne se již nakonfigurovaná šablona. V následujícím příkladu je prezentováno, jak nakonfigurovat jednoduchou akci a jednoduchý příklad jak načítat data z externího souboru (použití u lokalizace textu).

Pohled rozvržení souborů

web.xml

  • používá se ke konfiguraci servletu
  • welcome-file-list se používá k nastavení oficiální uvítací stránky
 <servlet>
     <servlet-name>action</servlet-name>
     <servlet-class>org.apache.struts.action.ActionServlet</servlet-class>
 </servlet>

 <servlet-mapping>
     <servlet-name>action</servlet-name>
     <url-pattern>*.kiss</url-pattern>
 </servlet-mapping>

 <welcome-file-list>
    <welcome-file>index.jsp</welcome-file>
 </welcome-file-list>

index.jsp

  • JSP stránka, která je nastavená jako úvodní stránka
<jsp:forward page="/Welcome.kiss" />

struts-config.xml

<form-beans>
   <form-bean name="HelloWorldActionForm" type="com.myapp.struts.HelloWorldActionForm" />
</form-beans>

<action-mappings>
   <action input="/index.jsp" name="HelloWorldActionForm" 
                path="/Welcome" scope="session"
                type="com.myapp.struts.HelloWorldAction">
        <forward name="success" path="/welcomeStruts.jsp" />
   </action>
</action-mappings>

<message-resources parameter="com/myapp/struts/ApplicationResource" />


HelloWorldActionForm.java

  • JavaBeans objekt, který má jednu proměnnou a k ní zaregistrovaný setter a getter
public class HelloWorldActionForm extends org.apache.struts.action.ActionForm {

    private String message;

    public HelloWorldActionForm(){ }

    public String getMessage(){
        return message;
    }

    public void setMessage(String message){
        this.message = message;
    }
}


HelloWorldAction.java

  • akce obsahuje spustitelnou metodu, která obsahuje business logiku
  • přístup k HelloWorldActionForm je nastaven v atributu „name“ v souboru struts-config.xml v elementu mapování akcí
  • „success“ je definována v elementu mapování akcí a odkazuje na adresu, na kterou se přesměruje
public class HelloWorldAction extends org.apache.struts.action.Action {

    private final static String SUCCESS = "success";

    @Override
    public ActionForward execute(ActionMapping mapping,ActionForm form,
        HttpServletRequest request,HttpServletResponse response) throws Exception {
        HelloWorldActionForm helloWorldForm = (HelloWorldActionForm) form;
        helloWorldForm.setMessage("Hello World!");
        return mapping.findForward(SUCCESS);
    }
}


welcomeStruts.jsp

  • zobrazí hodnotu JavaBeanu a zobrazí hodnoty z externího souboru
<%@page contentType="text/html"%>
<%@page pageEncoding="UTF-8"%>

<%@ taglib uri="http://struts.apache.org/tags-bean" prefix="bean" %>
<%@ taglib uri="http://struts.apache.org/tags-html" prefix="html" %>
<%@ taglib uri="http://struts.apache.org/tags-logic" prefix="logic" %>

<html:html lang="true">
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title><bean:message key="welcome.title" /></title>
        <html:base />
    </head>
    <body style="background-color: white">

        <h1><bean:write name="HelloWorldActionForm" property="message" /></h1>
        <h3><bean:message key="welcome.heading" /></h3>
        <p><bean:message key="welcome.message" /></p>
        
    </body>
</html:html>

Externí odkazy

(anglicky)

Read other articles:

Amor Secreto (Secret Love) Amor SecretoAutor Antonio Rossetti (atribuido)Creación 1876Ubicación Museo Soumaya.Material Mármol blancoDimensiones 93,3 centímetros x 38,1 centímetros[editar datos en Wikidata] Amor Secreto, también conocido como Le cupide marchand, es una escultura en mármol atribuida al artista italiano Antonio Rosetti creada hacia 1876. Descripción En esta obra se esculpió en mármol a Cupido, el hijo de la Venus latina, como un hermoso niño alado que juega ...

 

Nietków Localidad Calle ubicada al frente de la Iglesia de Nietków. NietkówLocalización de Nietków en PoloniaCoordenadas 52°12′00″N 15°26′00″E / 52.2, 15.43333333Entidad Localidad • País Polonia • Voivodato Lubusz • Distrito Zielona GóraPoblación   • Total 1302 hab.Huso horario UTC+01:00 y UTC+02:00Código postal 66-017[1]​Matrícula FZI[editar datos en Wikidata] Nietków es un pueblo en el distrito admini...

 

14th episode of the 5th season of The X-Files The Red and the BlackThe X-Files episodeEpisode no.Season 5Episode 14Directed byChris CarterWritten byChris CarterFrank SpotnitzProduction code5X14Original air dateMarch 8, 1998 (1998-03-08)Running time45 minutesGuest appearances Mitch Pileggi as Walter Skinner Chris Owens as Jeffrey Spender Nicholas Lea as Alex Krycek Veronica Cartwright as Cassandra Spender Laurie Holden as Marita Covarrubias William B. Davis as Cigarette Smo...

Alberto Numa Laplane Comandante general del Ejército 13 de mayo de 1975-27 de agosto de 1975Predecesor Leandro AnayaSucesor Jorge Rafael Videla Información personalNacimiento 10 de septiembre de 1924 San Antonio Oeste (Argentina) Fallecimiento 18 de junio de 1988 (63 años)Buenos Aires (Argentina) Nacionalidad ArgentinaEducaciónEducado en Colegio Militar de la NaciónInformación profesionalÁrea InfanteríaAños activo 1943-1975Lealtad ArgentinaRama militar Ejército ArgentinoRango milita...

 

Japanese dish of battered, deep-fried fish or vegetables Not to be confused with Tempera. Tempura shrimp and vegetablesTendonTenzaru (tempura and soba)Tempura udon Tempura (天ぷら or 天麩羅, tenpura, [tempɯɾa]) is a typical Japanese dish that usually consists of seafood and vegetables that have been coated in a thin batter and deep fried. Preparation Batter A light batter is made of iced water, eggs,[1] and soft wheat flour (cake,[2] pastry[3] or all-pu...

 

هذه المقالة يتيمة إذ تصل إليها مقالات أخرى قليلة جدًا. فضلًا، ساعد بإضافة وصلة إليها في مقالات متعلقة بها. (يناير 2018) وادي الضبيعان الموقع شمال غرب قطر إحداثيات 25°56′N 51°01′E / 25.94°N 51.02°E / 25.94; 51.02  النوع مستوطنة بُني حوالي 5500 قبل الميلاد هُجِر حوالي 2500 قبل الميلاد

Original artwork for the Gilbert and Ellice Islands 1971 1c stamp Cutting Toddy. Part of the Crown Agents Philatelic archive.[1] The 6d Gold Coast 1943 war savings stamp in a block of four (not from the archive). Examples of this stamp and a 1d in turquoise-blue are part of the archive.[2] The Crown Agents Philatelic and Security Printing Archive was deposited with the British Museum (later becoming the British Library) from the 1960s, though the first recorded deposit from th...

 

Film Production Company Eskay MoviesTypeMedia and Entertainment CompanyFoundedFebruary 1988 (as Eskay Video Private Limited)HeadquartersKolkata, West Bengal, IndiaKey peopleAshok DhanukaHimanshu DhanukaSubsidiaries Eskay Digital Eskay Music Eskay Digilab Websiteeskaymovies.com Eskay Video Private Limited is an Indian Company promoted by Dhanuka Family. The Company was incorporated in 1988 and since then it has been a vital part in the Media and Entertainment Industry in India. The company has...

 

Subgenre of breakbeat and UK rave music genre This article is about the UK 1990s rave genre. For the later European genre, see Breakcore. Breakbeat hardcoreStylistic originsBreakbeathousenew beatBelgian technoacid househip hophip houseCultural originsLate 1980s – early 1990s, United KingdomDerivative formsDarkcorejungledrum and bass4-beathappy hardcorebig beat Breakbeat hardcore (also referred to as hardcore rave, oldskool hardcore or simply hardcore) is a music genre that spawned from the ...

2015 South Korean drama series For the 2008 KBS series 엄마가 뿔났다, sometimes also known as Angry Mom, see Mom's Dead Upset. Angry MomPromotional poster for Angry MomHangul앵그리맘Revised RomanizationAenggeurimam GenreFamilyDramaTeenSchool PoliticsCreated byHan HeeWritten byKim Ban-diDirected byChoi Byung-gilStarringKim Hee-sunKim Yoo-jungJi Hyun-wooComposerLee Joo-hanCountry of originSouth KoreaOriginal languageKoreanNo. of episodes16ProductionProducerYoo Hyun-joongProduction loc...

 

Type of traffic sign that confirms the identity of the route being traveled The examples and perspective in this article deal primarily with Western culture and do not represent a worldwide view of the subject. You may improve this article, discuss the issue on the talk page, or create a new article, as appropriate. (May 2021) (Learn how and when to remove this template message) A reassurance marker or confirming marker is a type of traffic sign that confirms the identity of the route being t...

 

The Staircase First editionAuthorAnn RinaldiLanguageEnglishGenreHistorical fictionPublisherHarcourtPublication date2000The Staircase is a historical fiction novel by Ann Rinaldi. Background The book is about the spiral staircase at the Loretto Chapel in Santa Fe, New Mexico, rumored to have miraculous origins.[1] It was adapted into the 1998 television movie The Staircase starring William Petersen (as Joad), Barbara Hershey (as Mother Madalyn), and Diane Ladd (as Sister Margaret).[...

Aspect of history This article may be too long to read and navigate comfortably. Its current readable prose size is 100 kilobytes. Please consider splitting content into sub-articles, condensing it, or adding subheadings. Please discuss this issue on the article's talk page. (May 2021) Part of a series on the History of Poland Topics Polonophile Polonization Flag of Poland Name of Poland Coat of arms of Poland List of Polish monarchs List of wars involving Poland Territorial evolution of Pola...

 

Sports club based in Sitra, Bahrain Football clubSitra Cultural & Sports ClubFull nameSitra Cultural & Sports ClubFounded1957; 66 years ago (1957)GroundBahrain National StadiumRiffa, BahrainCapacity24,000ChairmanAli Ahmed HabibManagerAbdulaziz AbdoLeagueBahraini Premier League2022–235th of 10 Home colours Away colours Sitra Club (Arabic: نادي سترة الثقافي والرياضي) is a sports club based in Sitra, Bahrain. The club was established in 1957. Th...

 

Dalam nama Korea ini, nama keluarganya adalah Heo. Heo Sung-taeHeo pada Juli 2019Lahir20 Oktober 1977 (umur 46)Busan, Korea SelatanAlmamaterUniversitas Nasional PusanTahun aktif2011–kiniDikenal atasThe Age of Shadows (2016)The Outlaws (2017)Your Honor (2018)Squid Game (2021) Nama KoreaHangul허성태 Heo Sung-tae (Hangul: 허성태 Pengucapan Korea: [hʌ sʌŋ tɛ],; lahir 20 Oktober 1977)[1] adalah seorang pemeran asal Korea Selatan yang telah membintangi le...

Danmaṛk Kongeriget Danmark (da)Danmarks Rige (da)Danmark (da) Drapeau du Danemark (fr) Armoiries du Danemark (fr) Imseɣret Der er et yndigt land (fr) Devise (fr) «Happiest place on Earth!»Ansa  56°N 10°E / 56°N 10°E / 56; 10 Awanek anayanTagelda n Danmaṛk Tamanaɣt KopenhagenImezdaɣTeɣṛed 5 827 463 (2019)• Tiineẓẓi n imezdaɣ 135,76 imezdaɣen/km²Tutlayt tunṣibt TadanictTarakaltAmur seg Turuft Ugafa, Tadukli Tuṛufit, Es...

 

「タナトス」のその他の用法については「タナトス (曖昧さ回避)」をご覧ください。 タナトス 死神 大理石石柱ドラムに彫刻されたタナトスエフェソスのアルテミス神殿 前325年-前300年頃大英博物館所蔵住処 冥界シンボル シータ、ケシ、蝶、サイフォス、松明親 ニュクス兄弟 モロス、ケール、ヒュプノス、オネイロス、モーモス、オイジュス、ヘスペリデス、モイラ...

 

Nigerian comedian Isaac Olayiwola, better known by the stage name Layi Wasabi, is a Nigerian comedian and actor.[1] He won the award for Best Content Creator at the 2024 Africa Magic Viewers' Choice Awards.[2] His acting credits include roles in Aníkúlápó and Adire, the latter of which took ₦31 million at the box office.[3] References ^ Layi Wasabi: Content creator clear why im no dey use naked women for skit. BBC News Pidgin. 2024-04-22. Retrieved 2024-05-12. ^ ...

Questa voce sull'argomento nuotatori tedeschi è solo un abbozzo. Contribuisci a migliorarla secondo le convenzioni di Wikipedia. Segui i suggerimenti del progetto di riferimento. Dagmar HaseNazionalità Germania Est Germania Altezza183 cm Nuoto Specialità200 m, 400 m e 800 m sl, 100 m e 200 m dorso, 4x100 m e 4x200 m sl, 4x100 m misti Hall of fameInt. Swimming Hall of Fame (2013) Palmarès Competizione Ori Argenti Bronzi Giochi ol...

 

一般国道 国道431号 地図 総延長 101.9 km 実延長 101.9 km 現道 094.1 km 制定年 1982年(昭和57年) 起点 島根県出雲市大島交差点(北緯35度20分15.74秒 東経132度42分7.42秒 / 北緯35.3377056度 東経132.7020611度 / 35.3377056; 132.7020611 (大島交差点)) 主な経由都市 島根県松江市鳥取県境港市 終点 鳥取県米子市米子自動車道入口交差点(北緯35度25分33.30秒 東経133度23分...

 

Strategi Solo vs Squad di Free Fire: Cara Menang Mudah!