From Wikipedia, the free encyclopedia
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ývojář | Apache Software Foundation |
---|---|
Aktuální verze | 6.6.0 (20. července 2024) |
Platforma | Java Virtual Machine |
Vyvíjeno v | Java |
Typ softwaru | webový aplikační framework |
Licence | licence Apache |
Web | struts |
Některá data mohou pocházet z datové položky. |
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.
Aplikace, které se píší pomocí frameworku Struts 1, jsou založeny na návrhovém vzoru MVC (Model-View-Controller).
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:
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.
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" />
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.
Framework obsahuje jednoduchou implementaci rozhraní DataSource, která poolování provádí.
Následující postup se aplikuje, když klient odešle HTTP požadavek:
Když ActionServlet přijme požadavek, tak udělá tyto kroky:
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í.
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
<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: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
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
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
<%@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>
Seamless Wikipedia browsing. On steroids.
Every time you click a link to Wikipedia, Wiktionary or Wikiquote in your browser's search results, it will show the modern Wikiwand interface.
Wikiwand extension is a five stars, simple, with minimum permission required to keep your browsing private, safe and transparent.