Struts 2 - Arquivos de configuração
Este capítulo irá guiá-lo através da configuração básica que é necessária para um Struts 2inscrição. Aqui veremos o que pode ser configurado com a ajuda de alguns arquivos de configuração importantes comoweb.xml, struts.xml, strutsconfig.xml e struts.properties
Falando honestamente, você pode começar a trabalhar apenas usando web.xml e struts.xmlarquivos de configuração (como você já testemunhou em nosso capítulo anterior, onde nosso exemplo trabalhou usando esses dois arquivos). No entanto, para seu conhecimento, explicaremos em relação a outros arquivos também.
O arquivo web.xml
O arquivo de configuração web.xml é um arquivo de configuração J2EE que determina como os elementos da solicitação HTTP são processados pelo contêiner de servlet. Não é estritamente um arquivo de configuração do Struts2, mas é um arquivo que precisa ser configurado para que o Struts2 funcione.
Conforme discutido anteriormente, este arquivo fornece um ponto de entrada para qualquer aplicativo da web. O ponto de entrada do aplicativo Struts2 será um filtro definido no descritor de implantação (web.xml). Portanto, definiremos uma entrada da classe FilterDispatcher em web.xml. O arquivo web.xml precisa ser criado na pastaWebContent/WEB-INF.
Este é o primeiro arquivo de configuração que você precisará configurar se estiver iniciando sem o auxílio de um modelo ou ferramenta que o gera (como Eclipse ou Maven2).
A seguir está o conteúdo do arquivo web.xml que usamos em nosso último exemplo.
<?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>
Observe que mapeamos o filtro Struts 2 para /*, e não para /*.actiono que significa que todos os urls serão analisados pelo filtro struts. Abordaremos isso quando passarmos pelo capítulo Anotações.
O arquivo Struts.xml
o struts.xmlO arquivo contém as informações de configuração que você modificará à medida que as ações forem desenvolvidas. Este arquivo pode ser usado para substituir as configurações padrão de um aplicativo, por exemplo struts.devMode = false e outras configurações que são definidas no arquivo de propriedades. Este arquivo pode ser criado na pastaWEB-INF/classes.
Vamos dar uma olhada no arquivo struts.xml que criamos no exemplo Hello World explicado no capítulo anterior.
<?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>
A primeira coisa a notar é o DOCTYPE. Todos os arquivos de configuração do struts precisam ter o doctype correto, conforme mostrado em nosso pequeno exemplo. <struts> é o elemento de tag raiz, sob o qual declaramos diferentes pacotes usando tags <package>. Aqui <pacote> permite a separação e modularização da configuração. Isso é muito útil quando você tem um grande projeto e o projeto está dividido em diferentes módulos.
Por exemplo, se o seu projeto tiver três domínios - business_application, customer_application e staff_application, você poderá criar três pacotes e armazenar ações associadas no pacote apropriado.
A tag do pacote possui os seguintes atributos -
Sr. Não | Atributo e descrição |
---|---|
1 | name (required) O identificador único do pacote |
2 | extends De qual pacote este pacote se estende? Por padrão, usamos struts-default como pacote base. |
3 | abstract Se marcado como verdadeiro, o pacote não está disponível para consumo do usuário final. |
4 | namespace Namespace exclusivo para as ações |
o constant tag junto com os atributos de nome e valor devem ser usados para substituir qualquer uma das seguintes propriedades definidas em default.properties, como acabamos de definir struts.devModepropriedade. Configuraçãostruts.devMode propriedade nos permite ver mais mensagens de depuração no arquivo de log.
Nós definimos action tags correspondem a cada URL que desejamos acessar e definimos uma classe com o método execute () que será acessada sempre que acessarmos a URL correspondente.
Os resultados determinam o que é retornado ao navegador depois que uma ação é executada. A string retornada da ação deve ser o nome de um resultado. Os resultados são configurados por ação conforme acima, ou como um resultado "global", disponível para cada ação em um pacote. Os resultados são opcionaisname e typeatributos. O valor do nome padrão é "sucesso".
O arquivo Struts.xml pode crescer muito com o tempo e, portanto, dividi-lo por pacotes é uma forma de modularizá-lo, mas Strutsoferece outra maneira de modularizar o arquivo struts.xml. Você pode dividir o arquivo em vários arquivos xml e importá-los da seguinte maneira.
<?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>
O outro arquivo de configuração que não cobrimos é o struts-default.xml. Este arquivo contém as definições de configuração padrão do Struts e você não teria que alterar essas configurações para 99,99% dos seus projetos. Por esse motivo, não entraremos em muitos detalhes neste arquivo. Se você estiver interessado, dê uma olhada nodefault.properties arquivo disponível no arquivo struts2-core-2.2.3.jar.
O arquivo Struts-config.xml
O arquivo de configuração struts-config.xml é um link entre os componentes View e Model no Web Client, mas você não teria que alterar essas configurações para 99,99% de seus projetos.
O arquivo de configuração contém basicamente os seguintes elementos principais -
Sr. Não | Interceptador e descrição |
---|---|
1 | struts-config Este é o nó raiz do arquivo de configuração. |
2 | form-beans É aqui que você mapeia sua subclasse ActionForm para um nome. Você usa esse nome como um alias para seu ActionForm em todo o restante do arquivo strutsconfig.xml e até mesmo em suas páginas JSP. |
3 | global forwards Esta seção mapeia uma página em seu webapp para um nome. Você pode usar este nome para se referir à página real. Isso evita a codificação de URLs em suas páginas da web. |
4 | action-mappings É aqui que você declara os manipuladores de formulário e eles também são conhecidos como mapeamentos de ação. |
5 | controller Esta seção configura os componentes internos do Struts e raramente é usado em situações práticas. |
6 | plug-in Esta seção informa ao Struts onde encontrar seus arquivos de propriedades, que contêm prompts e mensagens de erro |
A seguir está o arquivo struts-config.xml de amostra -
<?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>
Para obter mais detalhes sobre o arquivo struts-config.xml, verifique a documentação do struts.
O arquivo Struts.properties
Este arquivo de configuração fornece um mecanismo para alterar o comportamento padrão da estrutura. Na verdade, todas as propriedades contidas nostruts.properties arquivo de configuração também pode ser configurado no web.xml usando o init-param, além de usar a tag constante no struts.xmlarquivo de configuração. Mas, se você gosta de manter as coisas separadas e mais específicas, você pode criar este arquivo na pastaWEB-INF/classes.
Os valores configurados neste arquivo substituirão os valores padrão configurados em default.propertiesque está contido na distribuição struts2-core-xyzjar. Existem algumas propriedades que você pode considerar alterar usando ostruts.properties arquivo -
### 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
Aqui, qualquer linha começando com hash (#) será considerado um comentário e será ignorado por Struts 2.