De struts 1 para 2

galera,

tenho uma aplicacao usando struts 1. Agora, vou adicionar muitas novas funcionalidades a essa aplicacao e gostaria de saber se seria mais interessante continuar usando o 1 ou se seria melhor, ja que parece mais facil, usar o struts 2. Nesse caso, o projeto com o 1 sofreria alteracoes ? 

agradecido

Parece que o 2 é bem melhor.
Acredito que o com struts 1 sofre alterações, mas como ele terá muitas alterações acho que vale a pena mudar.

http://struts.apache.org/2.0.11/docs/migration-guide.html

Tenha CERTEZA que o struts2 é bem melhor… Inclusive vc pode migrar sua aplicação aos poucos, coexistindo struts 1.x e 2.x…

coexistir os dois ? nao teria problemas ? somente adicionar jars e outros arquivos do 2 no mesmo projeto?

então vira anguzão sim, mas se vc precisar coexistir os dois dá. Lógico que não é o mais aconselhável… Eu disse somente no caso de migração “aos poucos”…

Os arquivos de mapeamento de ações são diferentes?

O mapeamento é um pouco parecido… ao inves de “.do” é “.action”… não existem form-beans … no struts 2 você pode usar todas as classes como POJOs … o retorno é uma string qualquer, não existem mais tipos de retorno… as classes não precisam herdar nem implementar nada … tem um ajax bizarro… eh mto loko o bagulho !

cara… se vc tiver MTO interessado em trocar, me avisa que eu colo uma mini-aplicação com um mapeamentozinho aki pra vc

gibaholms

pode colocar. Fico contente.

:wink:

Então vamos lá…

1 - Adicionando os filtros no web.xml:

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

2 - Arquivo de configuração do struts: agora seu nome é struts.xml e ele fica no diretório “src” do projeto no eclipse (junto com os arquivos fonte “.java”)

<?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="exemplo" namespace="/" extends="struts-default">
     
     <action name="efetuarLogin" class="actions.EfetuarLogin" method="verificaLogin">
            <result>/index.jsp</result>
            <result name="erro">/login.jsp</result>
      </action>

</package>

</struts>

Vamos pra explicação: você pode separar grupos de actions por pacotes “lógicos” dentro do struts.xml, ou seja
<package name=“exemplo”… é um pacote apenas lógico, não precisa criar pasta nenhuma.
Agora na tag “action”. Aqui que são mapeadas as ações. A propriedade “name” é o nome da sua solicitação. Se vc usa um form html comum, vc chama o POST como “efetuarLogin.action”.Já se vc usa o form da taglib do struts 2, vc pode colocar só “efetuarLogin” que ele já subentende como “.action” e da td certo.

A prop “class” é o nome qualificado da classe qu vai atender a solicitação. Como eu havia dito, agora elas podem ser POJOs, e na propriedade “method” vc coloca o nome do método que a action deve chamar dentro da classe.

No result, vc retorna da classe uma string. Na tag “result”, a propr. “name” vc coloca a string que sua classe vai retornar. Se vc omite o “name”, o default é “success”. E dentro a URL que deve ser chamada em cada caso.

3 - Agora a classe actions.EfetuarLogin

package actions;

public class EfetuarLogin {
	
	public String verificaLogin(){
	     //Aqui vc faz seu retorno
                     return "success";
                    //ou no outro caso: return "erro";
	}
	
}

Observe que o nome do método é identico a propriedade “method” do mapeamento, e a classe é um simples POJO.

4 - Faz sua view JSP como sempre fez

To um poco sem tempo, então não fui muito detalhista, mas acredito que já dê uma boa noção de como funciona.

Abraço!!

Vai ficar um angu só se vc misturar os 2 mas tudo bem :lol: …Quanto ao struts 2 é muito melhor mesmo !!!