Embora o Struts 2 ofereça uma quantidade enorme de recursos, muitas empresas ainda usam o Struts 1.2.x ou 1.3.x, neste artigo veremos um exemplo bem simples de Struts, bem básico mesmo.

Agora iremos criar um arquivo index.jsp ao qual teremos links para os exemplos que nós veremos em nossas próximos artigos.


<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title>Exemplos com Struts</title>
    </head>
    <body>
    <div align="center">
    <h1>Indice de Exemplos<br> com Struts 1.2.x</h1>
   
    <ol>
        <li><a href="Registro1.jsp">Exemplo 1</a></li>
        <li>Exemplo2</li>
    </ol> 
    </div>
    </body>   
</html>
Listagem 1. index.jsp

Edite o arquivo web.xml para se parecer com o mostrado abaixo:


<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee" 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 
http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
    <servlet>
        <servlet-name>action</servlet-name>
        <servlet-class>org.apache.struts.action.ActionServlet</servlet-class>
        <init-param>
            <param-name>config</param-name>
            <param-value>/WEB-INF/struts-config.xml</param-value>
        </init-param>
        <init-param>
            <param-name>debug</param-name>
            <param-value>2</param-value>
        </init-param>
        <init-param>
            <param-name>detail</param-name>
            <param-value>2</param-value>
        </init-param>
        <load-on-startup>2</load-on-startup>
        </servlet>
    <servlet-mapping>
        <servlet-name>action</servlet-name>
        <url-pattern>*.do</url-pattern>
    </servlet-mapping>
    <session-config>
        <session-timeout>
            30
        </session-timeout>
    </session-config>
    <welcome-file-list>
      <welcome-file>index.jsp</welcome-file>
        </welcome-file-list>
    </web-app>
Listagem 2. web.xml

Em strutsaula/web crie o arquivo Registro1.jsp :


<html>
<head>
<title></title>
 
</head>
<body bgcolor="white">
<div align="center">
<h1>New Registration</h1>
<form action="Register1.do" method="POST">
    Email: <input type="text" name="email" /><br>
    Senha: <input type="password" name="password"  /><br>
    <input type="submit" value="Enviar" />
</form>
 
</div>
</body>
</html>
Listagem 3. Registro1.jsp

Em strutsaula2/web/WEB-INF/results/ crie o arquivo confirm.jsp com o código descrito abaixo.


<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title>Exemplo com Struts</title>
    </head>
    <body>
<div align="center">       
    <H1>Seu Registro foi Completado com Sucesso.</H1>
Parabéns!!!
<p/>
    <a href="index.jsp">Voltar ao Índice</a>   
</div>
    </body>
</html>
Listagem 4. confirm.jsp

Agora configuraremos o arquivo struts-config.xml com o conteúdo mostrado abaixo:


<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts-config PUBLIC
          "-//Apache Software Foundation//DTD Struts Configuration 1.2//EN"
          "http://jakarta.apache.org/struts/dtds/struts-config_1_2.dtd">
<struts-config>
       <action-mappings>       
        <action path="/Register1" type="strutsaula.RegisterAction1">
        <forward name="success" path="/WEB-INF/results/confirm.jsp"/>
        </action>
    </action-mappings>
</struts-config>
Listagem 5. struts-config.xml

Crie um pacote com o nome strutsaula e nele crie a classe RegisterAction1.java com o conteúdo mostrado a seguir:


package strutsaula;
 
import javax.servlet.http.*;
import org.apache.struts.action.*;
 
/**
 *
 * @author claudio
 */
public class RegisterAction1 extends Action {
    @Override
public ActionForward execute(ActionMapping mapping, ActionForm form, 
HttpServletRequest request, HttpServletResponse response) throws Exception {
            return(mapping.findForward("success"));
      }
}
Listagem 6. RegisterAction1.java

As imagens abaixo demonstram a primeira parte do nosso artigo em funcionamento:

Índice de exemplos
Figura 1. Índice de exemplos
New registration
Figura 2. New registration
Registro completado com sucesso
Figura 3. Registro completado com sucesso

Bom se você chegou até aqui, então vamos entender o que foi feito:

  • O Usuário submete o formulário conforme a Figura 2 para a url Register1.do, esse endereço foi mapeado no struts-config.xml para um classe RegisterAction1.class;
  • O Método Action de RegisterAction1.class é invocado e usa o mapping.findForward para retornar uma condição, as condições estão mapeadas no struts-config.xml. Veja o código do Struts XML.

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts-config PUBLIC
          "-//Apache Software Foundation//DTD Struts Configuration 1.2//EN"
          "http://jakarta.apache.org/struts/dtds/struts-config_1_2.dtd">
<struts-config>
       <action-mappings>       
        <action path="/Register1" type="strutsaula.RegisterAction1">
        <forward name="success" path="/WEB-INF/results/confirm.jsp"/>
        </action>
    </action-mappings>
</struts-config>
Listagem 7. Código struts-config.xml

Na Figura 3 o Struts mostra ao usuário a página apropriada.

Isso é apenas o começo, nos próximos artigos veremos muito mais sobre o Struts.

Nota: Este tutorial foi influenciado pelos livros da série core servlets.