Struts 2 - Pliki konfiguracyjne
Ten rozdział poprowadzi Cię przez podstawową konfigurację, która jest wymagana dla Struts 2podanie. Tutaj zobaczymy, co można skonfigurować za pomocą kilku ważnych plików konfiguracyjnych, takich jakweb.xml, struts.xml, strutsconfig.xml i struts.properties
Szczerze mówiąc, możesz zacząć od używania web.xml i struts.xmlpliki konfiguracyjne (jak już widzieliście w poprzednim rozdziale, gdzie nasz przykład działał przy użyciu tych dwóch plików). Jednak dla Twojej wiedzy wyjaśnimy również inne pliki.
Plik web.xml
Plik konfiguracyjny web.xml jest plikiem konfiguracyjnym J2EE, który określa, w jaki sposób elementy żądania HTTP są przetwarzane przez kontener serwletu. Nie jest to plik konfiguracyjny Struts2, ale jest to plik, który należy skonfigurować, aby Struts2 działał.
Jak wspomniano wcześniej, ten plik stanowi punkt wejścia dla dowolnej aplikacji internetowej. Punktem wejścia aplikacji Struts2 będzie filtr zdefiniowany w deskryptorze wdrażania (web.xml). Dlatego zdefiniujemy wpis klasy FilterDispatcher w web.xml. W folderze należy utworzyć plik web.xmlWebContent/WEB-INF.
Jest to pierwszy plik konfiguracyjny, który będziesz musiał skonfigurować, jeśli zaczynasz bez pomocy szablonu lub narzędzia, które go generuje (np. Eclipse lub Maven2).
Poniżej znajduje się zawartość pliku web.xml, którego użyliśmy w naszym ostatnim przykładzie.
<?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>
Zauważ, że mapujemy filtr Struts 2 na /*, a nie do /*.actionco oznacza, że wszystkie adresy URL zostaną przeanalizowane przez filtr Struts. Omówimy to, gdy przejdziemy przez rozdział Adnotacje.
Plik Struts.xml
Plik struts.xmlplik zawiera informacje konfiguracyjne, które będziesz modyfikować w miarę opracowywania działań. Tego pliku można użyć do zastąpienia domyślnych ustawień aplikacji, na przykład struts.devMode = false i innych ustawień, które są zdefiniowane w pliku właściwości. Ten plik można utworzyć w folderzeWEB-INF/classes.
Przyjrzyjmy się plikowi struts.xml, który utworzyliśmy w przykładzie Hello World wyjaśnionym w poprzednim rozdziale.
<?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>
<-- more actions can be listed here -->
</package>
<-- more packages can be listed here -->
</struts>
Pierwszą rzeczą, na którą należy zwrócić uwagę, jest plik DOCTYPE. Wszystkie pliki konfiguracyjne struts muszą mieć poprawny typ dokumentu, jak pokazano w naszym małym przykładzie. <struts> to główny element tagu, pod którym deklarujemy różne pakiety za pomocą tagów <package>. Tutaj <package> umożliwia separację i modularyzację konfiguracji. Jest to bardzo przydatne, gdy masz duży projekt, a projekt jest podzielony na różne moduły.
Na przykład, jeśli Twój projekt ma trzy domeny - aplikacja_biznesowa, aplikacja_klienta i aplikacja_pracowników, możesz utworzyć trzy pakiety i przechowywać powiązane akcje w odpowiednim pakiecie.
Znacznik pakietu ma następujące atrybuty -
Sr.No | Atrybut i opis |
---|---|
1 | name (required) Unikalny identyfikator pakietu |
2 | extends Z jakiego pakietu obejmuje ten pakiet? Domyślnie używamy struts-default jako pakietu podstawowego. |
3 | abstract Jeśli oznaczono wartość true, pakiet nie jest dostępny do użytku przez użytkownika końcowego. |
4 | namespace Unikalna przestrzeń nazw dla akcji |
Plik constant tag wraz z atrybutami nazwy i wartości należy użyć do zastąpienia dowolnej z następujących właściwości zdefiniowanych w default.properties, tak jak właśnie ustawiliśmy struts.devModewłasność. Oprawastruts.devMode właściwość pozwala nam zobaczyć więcej komunikatów debugowania w pliku dziennika.
Definiujemy action tagi odpowiadają każdemu adresowi URL, do którego chcemy uzyskać dostęp, a za pomocą metody execute () definiujemy klasę, do której dostęp zostanie uzyskany za każdym razem, gdy uzyskamy dostęp do odpowiedniego adresu URL.
Wyniki określają, co jest zwracane do przeglądarki po wykonaniu akcji. Ciąg zwracany z akcji powinien być nazwą wyniku. Wyniki są konfigurowane według akcji, jak powyżej, lub jako wynik „globalny”, dostępny dla każdego działania w pakiecie. Wyniki są opcjonalnename i typeatrybuty. Domyślna wartość nazwy to „sukces”.
Plik Struts.xml może z czasem urosnąć, więc dzielenie go na pakiety jest jednym ze sposobów jego modularyzacji, ale Strutsoferuje inny sposób modularyzacji pliku struts.xml. Możesz podzielić plik na wiele plików xml i zaimportować je w następujący sposób.
<?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>
<include file="my-struts1.xml"/>
<include file="my-struts2.xml"/>
</struts>
Innym plikiem konfiguracyjnym, którego nie omówiliśmy, jest struts-default.xml. Ten plik zawiera standardowe ustawienia konfiguracyjne dla Struts i nie musisz ich zmieniać w przypadku 99,99% projektów. Z tego powodu nie będziemy wchodzić w zbyt wiele szczegółów na temat tego pliku. Jeśli jesteś zainteresowany, zajrzyj dodefault.properties plik dostępny w pliku struts2-core-2.2.3.jar.
Plik Struts-config.xml
Plik konfiguracyjny struts-config.xml jest łączem między komponentami widoku i modelu w kliencie sieci Web, ale nie musisz zmieniać tych ustawień w przypadku 99,99% projektów.
Plik konfiguracyjny zawiera zasadniczo następujące główne elementy -
Sr.No | Interceptor i opis |
---|---|
1 | struts-config To jest węzeł główny pliku konfiguracyjnego. |
2 | form-beans Tutaj mapujesz podklasę ActionForm na nazwę. Tej nazwy używasz jako aliasu dla swojego ActionForm w pozostałej części pliku strutsconfig.xml, a nawet na stronach JSP. |
3 | global forwards Ta sekcja mapuje stronę w Twojej aplikacji internetowej na nazwę. Możesz użyć tej nazwy, aby odnieść się do rzeczywistej strony. Pozwala to uniknąć zakodowanych adresów URL na stronach internetowych. |
4 | action-mappings Tutaj deklarujesz programy obsługi formularzy i są one również znane jako mapowania akcji. |
5 | controller Ta sekcja zawiera konfigurację elementów wewnętrznych Struts i jest rzadko używana w praktycznych sytuacjach. |
6 | plug-in Ta sekcja informuje Struts, gdzie znaleźć pliki właściwości, które zawierają podpowiedzi i komunikaty o błędach |
Poniżej znajduje się przykładowy plik struts-config.xml -
<?xml version = "1.0" Encoding = "ISO-8859-1" ?>
<!DOCTYPE struts-config PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 1.0//EN"
"http://jakarta.apache.org/struts/dtds/struts-config_1_0.dtd">
<struts-config>
<!-- ========== Form Bean Definitions ============ -->
<form-beans>
<form-bean name = "login" type = "test.struts.LoginForm" />
</form-beans>
<!-- ========== Global Forward Definitions ========= -->
<global-forwards>
</global-forwards>
<!-- ========== Action Mapping Definitions ======== -->
<action-mappings>
<action
path = "/login"
type = "test.struts.LoginAction" >
<forward name = "valid" path = "/jsp/MainMenu.jsp" />
<forward name = "invalid" path = "/jsp/LoginView.jsp" />
</action>
</action-mappings>
<!-- ========== Controller Definitions ======== -->
<controller contentType = "text/html;charset = UTF-8"
debug = "3" maxFileSize = "1.618M" locale = "true" nocache = "true"/>
</struts-config>
Aby uzyskać więcej informacji na temat pliku struts-config.xml, zapoznaj się z dokumentacją struts.
Plik Struts.properties
Ten plik konfiguracyjny udostępnia mechanizm zmiany domyślnego zachowania struktury. W rzeczywistości wszystkie właściwości zawarte wstruts.properties plik konfiguracyjny można również skonfigurować w web.xml używając init-param, a także używając stałego tagu w struts.xmlplik konfiguracyjny. Ale jeśli chcesz, aby rzeczy były oddzielne i bardziej szczegółowe, możesz utworzyć ten plik w folderzeWEB-INF/classes.
Wartości skonfigurowane w tym pliku zastąpią wartości domyślne skonfigurowane w default.propertiesktóry jest zawarty w dystrybucji struts2-core-xyzjar. Istnieje kilka właściwości, które możesz rozważyć za pomocą rozszerzeniastruts.properties plik -
### When set to true, Struts will act much more friendly for developers
struts.devMode = true
### Enables reloading of internationalization files
struts.i18n.reload = true
### Enables reloading of XML configuration files
struts.configuration.xml.reload = true
### Sets the port that the server is run on
struts.url.http.port = 8080
Tutaj każda linia zaczynająca się od hash (#) zostanie przyjęty jako komentarz i zostanie zignorowany przez Struts 2.