Ofereço ajuda em Java, C/C++, Python, C#, LISP, AutoLisp, AutoCAD
+55 (062) 98553-6711
Ofereço ajuda em PHP, Python, C#, JavaScript, Laravel, Google Ads e SEO
+55 (062) 98243-1195

Você está aqui: Struts 2 ::: Dicas de Estudo e Anotações ::: Passos Iniciais

Escrevendo sua primeira aplicação usando o Struts 2

Quantidade de visualizações: 20706 vezes


Em nosso artigo Baixando, instalando e testando o Struts 2 (veja a seção de artigos sobre o Struts 2) você aprendeu a baixar, instalar e testar o Struts 2. Nesta dica mostrarei passo a passo como escrever uma aplicação simples, mas que, permitirá mostrar algumas funcionalidades bem interessantes deste framework, tais como as tags de formulário, as actions, o ValueStack, entre outros.

Vou assumir que você tenha a aplicação struts2-blank mencionada no artigo citado. Mova todo o conteúdo desta aplicação para uma aplicação chamada estudos-struts. Siga os passos a seguir atentamente:

1) Vá dentro de estudos-struts e exclua o arquivo index.html;
2) Exclua a pasta example. Entre em WEB-INF e exclua a pasta src;
3) Exclua todo o conteúdo da pasta WEB-INF/classes;
4) Crie uma pasta chamada estudos dentro da pasta classes;

Vamos voltar nossa atenção para o arquivo web.xml localizado em WEB-INF. Abra-o e altere seu conteúdo para a listagem a seguir:
<?xml version="1.0" encoding="UTF-8"?>
<web-app id="WebApp_9" version="2.4" 
  xmlns="http://java.sun.com/xml/ns/j2ee" 
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
  xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee 
  http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">

    <display-name>Estudos Struts</display-name>

    <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>

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

</web-app>
Neste arquivo web.xml nós definimos o nome da aplicação, registramos o filtro (org.apache.struts2.dispatcher.FilterDispatcher), definimos o mapeamento do filtro de forma que todas as URLs sejam sejam reconhecidas e mapeadas para o Struts 2 e, finalmente, definimos a página inicial da aplicação.

Já que mencionamos a página inicial, vamos criá-la agora. Dentro do diretório estudos-struts (fora do WEB-INF), crie uma página HTML chamada index.html com o seguinte conteúdo:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
    <META HTTP-EQUIV="Refresh" CONTENT="0;URL=inicio.action">
</head>

<body>
<p>Carregando a aplicação...</p>

</body>
</html>
Veja que esta página serve para redirecionarmos o navegador para uma action chamada "inicio". Actions são definidas no arquivo struts.xml. Vamos criá-lo agora. Vá no diretório classes e crie um arquivo struts.xml com o seguinte conteúdo:
<?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.enable.DynamicMethodInvocation" value="false" />
    <constant name="struts.devMode" value="false" />
    
    <package name="estudos" extends="struts-default">
       
       <action name="inicio">
         <result>/inicio.jsp</result>
       </action>
       
       <action name="processar_dados" class="estudos.Processar">
         <result name="SUCCESS">/resultado.jsp</result>
       </action>
       
    </package>
    
</struts>
Neste arquivo struts.xml nós temos duas actions. A primeira se chama "inicio" e tem como result padrão a página inicio.jsp (já vamos criá-la em um instante). A segunda action se chama "processar_dados" e tem como result a página resultado.jsp (já vamos criá-la também). Veja que esta última action é uma classe chamada "Processar" no pacote estudos e o seu result possui o nome "SUCCESS". Vamos prosseguir criando a classe Processar. Veja o código:
package estudos;

public class Processar{
  private String nome;
  private String mensagem;  

  public String execute(){
    mensagem = "Bem-vindo(a), " + getNome();
    return "SUCCESS";
  }

  public String getNome(){
    return this.nome;
  }

  public void setNome(String nome){
    this.nome = nome;
  }

  public String getMensagem(){
    return this.mensagem;
  }
}
Veja que esta classe é um JavaBean comum, ou seja, possui métodos get() e set() e possui um método execute(). Na verdade nem sempre precisamos implementar a interface Action. Basta implementar o método execute() e retornar uma string. Neste caso estamos retornando "SUCCESS" para que o framework aplique o mapeamento adequado e nos direcione para a segunda página JSP. Salve este código como Processar.java, compile e mova o Processar.class para a pasta estudos dentro de classes.

Vamos agora criar as outras páginas JSP. Comece com inicio.jsp:
<%@ taglib prefix="s" uri="/struts-tags" %>
<html>
<head>
  <title>Seus dados</title>
</head>
<body>
  <h4>Informe seus dados:</h4>
  <s:form action="processar_dados">
    <s:textfield name="nome" label="Seu nome"/>
    <s:submit value="Enviar"/>
  </s:form>
</body>
</html>
Esta página contém um formulário, uma caixa de texto e um botão. A action do formulário aponta para a action "processar_dados". Salve esta página no diretório estudos-struts (fora do WEB-INF). Veja agora o código para a página resultado.jsp:
<%@ taglib prefix="s" uri="/struts-tags" %>
<html>
<head>
  <title>Resultado</title>
</head>
<body>
  
<h1>Veja o resultado da execução:</h1>  
  
<h4><s:property value="mensagem"/></h4>  
  
</body>
</html>
Salve esta página também no diretório estudos-struts. Lembre-se, documentos públicos sempre dentro do diretório raiz, fora do WEB-INF.

Estamos prontos! Inicie ou reinicie o Tomcat (ou qualquer outro container servlet que esteja usando) e vá em http://localhost:8080/estudos-struts. Imediatamente você verá um formulário. Digite seu nome e clique o botão. A seguinte mensagem será exibida:
Bem-vindo(a), "Seu nome"
Funcionou tudo como esperado? Hora de falarmos um pouco de ValueStack. O ValueStack é usado pelo Struts 2 para armazenar quaisquer dados envolvidos na requisição atual. Desta forma, ao clicarmos no botão e invocarmos a action "processar_dados", o método setNome() do JavaBean é executado. Em seguida o método execute() é executado, o que nos permite atribuir um valor ao campo mensagem. Como o JavaBean está guardado no ValueStack, conseguimos facilmente obter o valor do campo mensagem usando OGNL (Object-Graph Navigation Language) e exibí-lo na segunda página JSP.

Link para compartilhar na Internet ou com seus amigos:

Veja mais Dicas e truques de Struts 2

Dicas e truques de outras linguagens

E-Books em PDF

E-Book 350 Exercícios Resolvidos de Java - PDF com 500 páginas
Domine lógica de programação e a linguagem Java com o nosso E-Book 350 Exercícios Exercícios de Java, para você estudar onde e quando quiser.

Este e-book contém exercícios resolvidos abrangendo os tópicos: Java básico, matemática e estatística, programação dinâmica, strings e caracteres, entrada e saída, estruturas condicionais, vetores e matrizes, funções, laços, recursividade, internet, arquivos e diretórios, programação orientada a objetos e muito mais.
Ver Conteúdo do E-book
E-Book 650 Dicas, Truques e Exercícios Resolvidos de Python - PDF com 1.200 páginas
Domine lógica de programação e a linguagem Python com o nosso E-Book 650 Dicas, Truques e Exercícios Exercícios de Python, para você estudar onde e quando quiser.

Este e-book contém dicas, truques e exercícios resolvidos abrangendo os tópicos: Python básico, matemática e estatística, banco de dados, programação dinâmica, strings e caracteres, entrada e saída, estruturas condicionais, vetores e matrizes, funções, laços, recursividade, internet, arquivos e diretórios, programação orientada a objetos e muito mais.
Ver Conteúdo do E-book

Linguagens Mais Populares

1º lugar: Java
2º lugar: Python
3º lugar: C#
4º lugar: PHP
5º lugar: C
6º lugar: Delphi
7º lugar: JavaScript
8º lugar: C++
9º lugar: VB.NET
10º lugar: Ruby



© 2025 Arquivo de Códigos - Todos os direitos reservados
Neste momento há 26 usuários muito felizes estudando em nosso site.