Struts 2 - Hello World Przykład

Jak już wiesz z architektury Struts 2, po kliknięciu hiperłącza lub przesłaniu formularza HTML w aplikacji internetowej Struts 2 dane wejściowe są zbierane przez kontroler i wysyłane do klasy Java o nazwie Actions. Po wykonaniu akcji wynik wybiera zasób do renderowania odpowiedzi. Zasób to zazwyczaj JSP, ale może to być również plik PDF, arkusz kalkulacyjny programu Excel lub okno apletu Java.

Zakładając, że masz już zbudowane środowisko programistyczne. Teraz przejdźmy do budowy naszego pierwszegoHello World Struts2projekt. Celem tego projektu jest zbudowanie aplikacji internetowej, która zbiera nazwę użytkownika i wyświetla napis „Hello World”, po którym następuje nazwa użytkownika.

Musielibyśmy utworzyć następujące cztery komponenty dla dowolnego projektu Struts 2 -

Sr.No Komponenty i opis
1

Action

Utwórz klasę akcji, która będzie zawierać pełną logikę biznesową i sterować interakcją między użytkownikiem, modelem i widokiem.

2

Interceptors

Utwórz przechwytywacze, jeśli jest to wymagane, lub użyj istniejących. To jest część kontrolera.

3

View

Utwórz strony JSP do interakcji z użytkownikiem w celu wprowadzenia danych wejściowych i przedstawienia ostatecznych komunikatów.

4

Configuration Files

Utwórz pliki konfiguracyjne, aby połączyć akcję, widok i kontrolery. Te pliki to struts.xml, web.xml, struts.properties.

Mam zamiar używać Eclipse IDE, aby wszystkie wymagane komponenty zostały utworzone w ramach Dynamic Web Project. Zacznijmy teraz od stworzenia Dynamic Web Project.

Utwórz dynamiczny projekt internetowy

Uruchom Eclipse, a następnie idź z File > New > Dynamic Web Project i wprowadź nazwę projektu jako HelloWorldStruts2 i ustaw pozostałe opcje zgodnie z poniższym ekranem -

Wybierz wszystkie domyślne opcje na następnych ekranach i na koniec sprawdź Generate Web.xml deployment descriptoropcja. Spowoduje to utworzenie dynamicznego projektu internetowego w Eclipse. Teraz idź zWindows > Show View > Project Explorer, a zobaczysz okno swojego projektu, jak poniżej -

Teraz skopiuj następujące pliki z folderu lib struts 2 C:\struts-2.2.3\lib do naszego projektu WEB-INF\libteczka. Aby to zrobić, możesz po prostu przeciągnąć i upuścić wszystkie następujące pliki do folderu WEB-INF \ lib.

  • commons-fileupload-x.y.z.jar
  • commons-io-x.y.z.jar
  • commons-lang-x.y.jar
  • commons-logging-x.y.z.jar
  • commons-logging-api-x.y.jar
  • freemarker-x.y.z.jar
  • javassist-.xy.z.GA
  • ognl-x.y.z.jar
  • struts2-core-x.y.z.jar
  • xwork-core.x.y.z.jar

Utwórz klasę akcji

Klasa Action jest kluczem do aplikacji Struts 2 i większość logiki biznesowej implementujemy w klasach akcji. Stwórzmy więc plik java HelloWorldAction.java podJava Resources > src z nazwą pakietu com.tutorialspoint.struts2 o treści podanej poniżej.

Klasa Action reaguje na działanie użytkownika, gdy użytkownik kliknie adres URL. Wykonywana jest co najmniej jedna metoda klasy Action i zwracany jest wynik typu String. Na podstawie wartości wyniku renderowana jest określona strona JSP.

package com.tutorialspoint.struts2;

public class HelloWorldAction {
   private String name;

   public String execute() throws Exception {
      return "success";
   }
   
   public String getName() {
      return name;
   }

   public void setName(String name) {
      this.name = name;
   }
}

Jest to bardzo prosta klasa z jedną właściwością o nazwie „nazwa”. Mamy standardowe metody pobierające i ustawiające dla właściwości „name” oraz metodę wykonywania, która zwraca ciąg znaków „sukces”.

Framework Struts 2 utworzy obiekt HelloWorldActionclass i wywołaj wykonaną metodę w odpowiedzi na akcję użytkownika. Umieszczasz logikę biznesową wewnątrz tej metody, która w końcu zwraca stałą String. Innymi słowy, dla każdego adresu URL musiałbyś zaimplementować jedną klasę akcji i albo możesz użyć tej nazwy klasy bezpośrednio jako nazwy akcji, albo możesz mapować na inną nazwę za pomocą pliku struts.xml, jak pokazano poniżej.

Utwórz widok

Potrzebujemy strony JSP do zaprezentowania ostatecznej wiadomości, ta strona zostanie wywołana przez środowisko Struts 2, gdy nastąpi predefiniowana akcja, a mapowanie zostanie zdefiniowane w pliku struts.xml. Stwórzmy więc poniższy plik jspHelloWorld.jspw folderze WebContent w projekcie eclipse. Aby to zrobić, kliknij prawym przyciskiem myszy folder WebContent w eksploratorze projektów i wybierzNew >JSP File.

<%@ page contentType = "text/html; charset = UTF-8" %>
<%@ taglib prefix = "s" uri = "/struts-tags" %>

<html>
   <head>
      <title>Hello World</title>
   </head>
   
   <body>
      Hello World, <s:property value = "name"/>
   </body>
</html>

Dyrektywa taglib informuje kontener serwletu, że ta strona będzie używać rozszerzenia Struts 2 tagi i że te tagi będą poprzedzone s.

Znacznik s: property wyświetla wartość właściwości klasy akcji "nazwa>, która jest zwracana przez metodę getName() klasy HelloWorldAction.

Utwórz stronę główną

Musimy też tworzyć index.jspw folderze WebContent. Ten plik będzie służył jako początkowy adres URL akcji, w którym użytkownik może kliknąć, aby polecić platformie Struts 2 wywołanie zdefiniowanej metody klasy HelloWorldAction i wyrenderowanie widoku HelloWorld.jsp.

<%@ page language = "java" contentType = "text/html; charset = ISO-8859-1"
   pageEncoding = "ISO-8859-1"%>
<%@ taglib prefix = "s" uri = "/struts-tags"%>
   <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" 
"http://www.w3.org/TR/html4/loose.dtd">

<html>
   <head>
      <title>Hello World</title>
   </head>
   
   <body>
      <h1>Hello World From Struts2</h1>
      <form action = "hello">
         <label for = "name">Please enter your name</label><br/>
         <input type = "text" name = "name"/>
         <input type = "submit" value = "Say Hello"/>
      </form>
   </body>
</html>

Plik helloakcja zdefiniowana w powyższym pliku widoku zostanie odwzorowana na klasę HelloWorldAction i jej metodę wykonania za pomocą pliku struts.xml. Gdy użytkownik kliknie przycisk Prześlij, spowoduje to, że platforma Struts 2 uruchomi metodę execute zdefiniowaną w klasie HelloWorldAction i na podstawie zwróconej wartości metody zostanie wybrany odpowiedni widok i wyrenderowany jako odpowiedź.

Pliki konfiguracyjne

Potrzebujemy mapowania, aby powiązać adres URL, klasę HelloWorldAction (Model) i HelloWorld.jsp (widok) razem. Mapowanie informuje framework Struts 2, która klasa odpowie na akcję użytkownika (adres URL), która metoda tej klasy zostanie wykonana i jaki widok ma zostać wyrenderowany na podstawie wyniku typu String, który zwraca ta metoda.

Stwórzmy więc plik o nazwie struts.xml. Ponieważ Struts 2 wymaga, aby plik struts.xml znajdował się w folderze klas. Dlatego utwórz plik struts.xml w folderze WebContent / WEB-INF / classes. Eclipse nie tworzy domyślnie folderu „classes”, więc musisz to zrobić samodzielnie. Aby to zrobić, kliknij prawym przyciskiem myszy folder WEB-INF w eksploratorze projektów i wybierzNew > Folder. Twój plik struts.xml powinien wyglądać następująco -

<?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.devMode" value = "true" />
   
   <package name = "helloworld" extends = "struts-default">
     <action name = "hello" 
         class = "com.tutorialspoint.struts2.HelloWorldAction" 
         method = "execute">
         <result name = "success">/HelloWorld.jsp</result>
      </action>
   </package>
</struts>

Kilka słów, które należy zrozumieć odnośnie powyższego pliku konfiguracyjnego. Tutaj ustawiamy stałąstruts.devMode do true, ponieważ pracujemy w środowisku programistycznym i musimy zobaczyć przydatne komunikaty dziennika. Następnie definiujemy pakiet o nazwiehelloworld.

Tworzenie pakietu jest przydatne, gdy chcesz pogrupować swoje akcje. W naszym przykładzie nazwaliśmy naszą akcję „hello”, co odpowiada adresowi URL/hello.action i jest wspierany przezHelloWorldAction.class. Plikexecute metoda HelloWorldAction.class to metoda, która jest uruchamiana, gdy adres URL /hello.actionjest wywoływana. Jeśli wynik metody execute zwróci „sukces”, to przeniesiemy użytkownika doHelloWorld.jsp.

Następnym krokiem jest utworzenie pliku web.xmlplik, który jest punktem wejścia dla dowolnego żądania do Struts 2. Punktem wejścia aplikacji Struts2 będzie filtr zdefiniowany w deskryptorze wdrażania (web.xml). Dlatego zdefiniujemy wpis klasy org.apache.struts2.dispatcher.FilterDispatcher w web.xml. Plik web.xml należy utworzyć w folderze WEB-INF w katalogu WebContent. Eclipse utworzył już dla Ciebie szkielet pliku web.xml podczas tworzenia projektu. Więc po prostu zmodyfikujmy to w następujący sposób -

<?xml version = "1.0" Encoding = "UTF-8"?>
<web-app xmlns:xsi = "http://www.w3.org/2001/XMLSchema-instance"
   xmlns = "http://java.sun.com/xml/ns/javaee" 
   xmlns:web = "http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
   xsi:schemaLocation = "http://java.sun.com/xml/ns/javaee 
   http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
   id = "WebApp_ID" version = "3.0">
   
   <display-name>Struts 2</display-name>
   
   <welcome-file-list>
      <welcome-file>index.jsp</welcome-file>
   </welcome-file-list>
   
   <filter>
      <filter-name>struts2</filter-name>
      <filter-class>
         org.apache.struts2.dispatcher.FilterDispatcher
      </filter-class>
   </filter>

   <filter-mapping>
      <filter-name>struts2</filter-name>
      <url-pattern>/*</url-pattern>
   </filter-mapping>
</web-app>

Określiliśmy index.jsp jako nasz plik powitalny. Następnie skonfigurowaliśmy filtr Struts2, aby działał na wszystkich adresach URL (tj. Każdym adresie URL, który pasuje do wzorca / *)

Aby włączyć szczegółowy dziennik

Możesz włączyć pełną funkcjonalność rejestrowania podczas pracy z Struts 2, tworząc pliki logging.properties plik w ramach WEB-INF/classesteczka. Zachowaj następujące dwa wiersze w pliku właściwości -

org.apache.catalina.core.ContainerBase.[Catalina].level = INFO
org.apache.catalina.core.ContainerBase.[Catalina].handlers = \
   java.util.logging.ConsoleHandler

Domyślne logowanie.properties określa ConsoleHandler do kierowania rejestrowania na standardowe wyjście, a także FileHandler. Próg poziomu dziennika obsługi można ustawić za pomocą opcji POWAŻNE, OSTRZEŻENIE, INFO, KONFIGURACJA, DOKŁADNIE, DOKŁADNIEJ, NAJLEPSZA lub WSZYSTKIE.

Otóż ​​to. Jesteśmy gotowi do uruchomienia naszej aplikacji Hello World przy użyciu frameworka Struts 2.

Procedura wykonywania wniosku

Kliknij prawym przyciskiem myszy nazwę projektu i kliknij Export > WAR File aby utworzyć plik wojny.

Następnie wdróż tę WAR w katalogu webapps serwera Tomcat.

Na koniec uruchom serwer Tomcat i spróbuj uzyskać dostęp do adresu URL http://localhost:8080/HelloWorldStruts2/index.jsp. Spowoduje to wyświetlenie następującego ekranu -

Wpisz wartość „Struts2” i prześlij stronę. Powinieneś zobaczyć następną stronę

Pamiętaj, że możesz zdefiniować index jako akcję w pliku struts.xml iw takim przypadku możesz wywołać stronę indeksu jako http://localhost:8080/HelloWorldStruts2/index.action. Sprawdź poniżej, jak możesz zdefiniować indeks jako akcję -

<?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.devMode" value = "true" />
   <package name = "helloworld" extends = "struts-default">

      <action name = "index">
         <result >/index.jsp</result>
      </action>

      <action name = "hello" 
         class = "com.tutorialspoint.struts2.HelloWorldAction" 
         method = "execute">
         <result name = "success">/HelloWorld.jsp</result>
      </action>

   </package>
</struts>