<?xml version="1.0" encoding="ISO-8859-1"?>
<rss version="2.0">
	<channel>
		<title><![CDATA[Últimas mensagens do tópico "Struts e WebWork"]]></title>
		<link>http://www.guj.com.br/posts/list/12.java</link>
		<description><![CDATA[Últimas mensagens enviadas no tópico "Struts e WebWork"]]></description>
		<generator>JForum - http://www.jforum.net</generator>
			<item>
				<title>Struts e WebWork</title>
				<description><![CDATA[ Qual a diferença do WebWork (WW2) para o Struts ?<br /> Não trabalho com Struts e nem com o WebWork, mas pelo que andei lendo e que o pessoal anda comentando, ambos parecem fazer a mesma coisa.<br /> O WebWork tem algum diferencial em relação ao Struts ?<br /> Quando usar um e quando usar o outro ?<br /> Ouvi falar a respeito do Struts que ele só seria o controller (C) do MVC e que ele tem algumas tag libs para o View, mas no geral o Struts só funcionaria como controller da aplicação.<br /> Gostaria de saber até onde isso é verdade.<br /> Quando que uma aplicação realmente segue o modelo de MVC ?<br /> View com Velocity + Controller com Struts/WW2 + Model com Hibernate/EJB ?<br /> Se minha aplicação utiliza-se somente jsp/html + struts usando servlet controller e classes java (java beans) para persistência e regras de negócio posso dizer que segue o modelo MVC ?<br /> alguma alma caridosa para dar uma esclarecida ? <img src="http://www.guj.com.br/images/smilies/8a80c6485cd926be453217d59a84a888.gif" border="0"> <br /> valeu !]]></description>
				<guid isPermaLink="true">http://www.guj.com.br/prepost/6833/34886/struts-e-webwork
</guid>
				<link>http://www.guj.com.br/prepost/6833/34886/struts-e-webwork
</link>
				<pubDate><![CDATA[Wed, 5 Nov 2003 13:07:40]]> GMT</pubDate>
				<author><![CDATA[ mindu]]></author>
			</item>
			<item>
				<title></title>
				<description><![CDATA[ bem, teve uma discussao por icq e mensagens sobre isso, onde o CV postou sobre o webwrok e eu coloquei mais algumas vantagens que achei lega. segue:<br /> <br /> ----- cv:<br /> <br /> O maior ponto contra o Struts, na minha opiniao, foi a decisao de arquitetura dos caras em fazer Actions recicladas em um pool. Isso *caga* na produtividade. Comparativo rapido:<br /> <br /> Struts:<br /> <br /> Voce cria a Action CadastrarUsuario, o FormBean CadastrarUsuarioBean (ou configura um xmlão pra fazer o dynaformbean), mexe no struts-config.xml.<br /> <br /> Na sua Action, vc nao pode ter variaveis, pq ela tem que ser threadsafe, e, em teoria, o seu form bean nao deveria conter regras de negocio.<br /> <br /> WebWork:<br /> <br /> Voce cria a Action CadastrarUsuario, mete nela um getUsuario() que te retorna um objeto de negocio, e usando as tags do WW (ou nao) manipula ele dentro do seu Velocity, JSP, relatorio do Jasper, whatever. Mete a definicao da Action no XML, e diz quais os interceptors que vc quer ver aplicados nela (coisa que nem existe no Struts).<br /> <br /> A cada request, uma nova instancia da sua Action vai ser criada, e ela eh, na verdade, o form bean... a diferenca eh que ela nao esta acoplada ao HTTP, nao esta acoplada à J2EE, e, pra falar a verdade, nao precisa nem estar acoplada ao teu use-case... dah pra fazer uma Action soh que serve pra um sistema inteiro, por exemplo, e dizer no XML "pra essa acao, chame o metodo String foo() throws Throwable na Action". Dah pra ter, entao, uma action assim:<br /> <br /> [code]<br /> public class GerenciarUsuario extends ActionSupport implements UsuarioAware, UsuarioDAOAware &#123;<br /> <br />   private Usuario usuario;<br />   private UsuarioDAO dao;<br /> <br />   public void setUsuario&#40;Usuario u&#41; &#123;<br />     this.usuario = usuario;<br />   &#125;<br /> <br />   public Usuario getUsuario&#40;&#41; &#123;<br />     return usuario;<br />   &#125;<br /> <br />   public void setUsuarioDAO&#40;UsuarioDAO dao&#41; &#123;<br />     this.dao = dao  &#125;<br /> <br />   public UsuarioDAO getUsuarioDAO&#40;&#41; &#123;<br />     return dao;<br />   &#125;<br /> <br />   public String adicionar&#40;&#41; throws Throwable &#123;<br />      try &#123;<br />         dao.adicionar&#40;usuario&#41;;<br />         return SUCCESS;<br />      &#125; catch&#40;DAOException e&#41; &#123;<br />         addError&#40;getText&#40;e.getMessage&#40;&#41;&#41;&#41;;<br />         return ERROR;<br />      &#125;<br />   &#125;<br /> <br />   public String remover&#40;&#41; throws Throwable &#123;<br />      try &#123;<br />         dao.remover&#40;usuario&#41;;<br />         return SUCCESS;<br />      &#125; catch&#40;DAOException e&#41; &#123;<br />         addError&#40;getText&#40;e.getMessage&#40;&#41;&#41;&#41;;<br />         return ERROR;<br />      &#125;<br />   &#125;<br /> <br />   public String alterar&#40;&#41; throws Throwable &#123;<br />      try &#123;<br />         dao.alterar&#40;usuario&#41;;<br />         return SUCCESS;<br />      &#125; catch&#40;DAOException e&#41; &#123;<br />         addError&#40;getText&#40;e.getMessage&#40;&#41;&#41;&#41;;<br />         return ERROR;<br />      &#125;<br />   &#125;<br /> &#125;<br /> [/code]<br /> <br /> <br /> O WebWork tem um framework de validacao e conversao de tipos que o Struts tah longe de ter ainda, e a linguagem de expressoes do WW dah um cacete na JSTL em todos os sentidos<br /> <br /> Ah... isso sem nem falar muito na implementacao de inversao de controle do WW2... notou as interfaces UsuarioAware e UsuarioDAOAware que eu implementei? Bom, entao.... advinha quem gerencia as implementacoes dessas interfaces, e chama os setters pra mim?<br /> <br /> <br /> -----------------paulo:<br /> Entao duas as vantagens que o Carlos citou:<br /> 1-) Inversao de controle pelos Awares<br /> 2-) As Actions sao criadas per request, o que acaba com seu problema de Thread unsafe.<br /> <br /> Ele deu pouca atencao pro negocio que o webwork INDEPENDE totalmente de ser web. Isto eh, voce nao ve UM SOH httpservletrequest ou response. Voce soh trabalha com beans. Ateh para a session tem como voce nao colocar a mao nela!!!! (eh soh usar a ivnersao de controle e setar que voce quer aquele objeto PER SESSION)<br /> <br /> O codigo fica LINDO da sua business logic: tem o que voce precisa (setters), o que voce fornece (getters), e a logica no String execute(). Repara o codigo do Villela. Nao tinha como ser mais simples.<br /> <br /> Eh simplesmente ANIMAL.<br /> <br /> <br /> ------continuando eu:<br /> o que o CV quis dizer com que o struts caga na produtividade, eh que voce tem de ficar guardando as cosias em session, e toda aquela tralha que eh trabalhar diretamente com servlets acontece nas actions do struts.<br /> <br /> tem gente que reclama que uma (ou mais) action eh sempre instanciada a cada request, falando de performance. performance de inicializacao de objetos simples eh mito em java, isso eh da epoca do java 1.2 ou anterior... a produtividade REALMENTE eh maior com o webwork, onde voce nao pensa do jeito servlet de ser....]]></description>
				<guid isPermaLink="true">http://www.guj.com.br/prepost/6833/34912/
</guid>
				<link>http://www.guj.com.br/prepost/6833/34912/
</link>
				<pubDate><![CDATA[Wed, 5 Nov 2003 14:05:08]]> GMT</pubDate>
				<author><![CDATA[ Paulo Silveira]]></author>
			</item>
			<item>
				<title></title>
				<description><![CDATA[ Paulo, valeu !<br /> em relação ao struts só funcionar como controller da aplicação, isso é correto ?]]></description>
				<guid isPermaLink="true">http://www.guj.com.br/prepost/6833/35147/
</guid>
				<link>http://www.guj.com.br/prepost/6833/35147/
</link>
				<pubDate><![CDATA[Thu, 6 Nov 2003 12:41:56]]> GMT</pubDate>
				<author><![CDATA[ mindu]]></author>
			</item>
			<item>
				<title></title>
				<description><![CDATA[ Nao, pq o Struts tb tem taglibs pra view, entre outras coisas... o Struts (e o WebWork, e o Maverick, e o ...) sao frameworks MVC. Eles nao fazem, em teoria, nenhuma das partes do MVC - eles so te ajudam a fazer e separar as coisas <img src="http://www.guj.com.br/images/smilies/3b63d1616c5dfcf29f8a7a031aaa7cad.gif" border="0">]]></description>
				<guid isPermaLink="true">http://www.guj.com.br/prepost/6833/35155/
</guid>
				<link>http://www.guj.com.br/prepost/6833/35155/
</link>
				<pubDate><![CDATA[Thu, 6 Nov 2003 13:04:07]]> GMT</pubDate>
				<author><![CDATA[ cv]]></author>
			</item>
			<item>
				<title></title>
				<description><![CDATA[ thanks cv !  <img src="http://www.guj.com.br/images/smilies/8a80c6485cd926be453217d59a84a888.gif" border="0">]]></description>
				<guid isPermaLink="true">http://www.guj.com.br/prepost/6833/35169/
</guid>
				<link>http://www.guj.com.br/prepost/6833/35169/
</link>
				<pubDate><![CDATA[Thu, 6 Nov 2003 13:50:22]]> GMT</pubDate>
				<author><![CDATA[ mindu]]></author>
			</item>
			<item>
				<title></title>
				<description><![CDATA[ espera aí, deixa eu ver se eu entendi  <img src="http://www.guj.com.br/images/smilies/283a16da79f3aa23fe1025c96295f04f.gif" border="0"> , vou fazer um comparativo com o struts pq nao conheço o WW.<br /> <br /> no struts-confix.xml vc definiria actions para criar, deletar e pesquiar um usuario. Provavelmente isto seriam classes Actions diferentes...<br /> <br /> no webwork eu uso uma classe apenas e digo: <br /> para cadastro o ususario é o metodo X...<br /> para deletar é o método Y...<br /> E ele reutiliza sempre a mesma classe ? é isso?<br /> <br /> puxa!  <img src="http://www.guj.com.br/images/smilies/385970365b8ed7503b4294502a458efa.gif" border="0"><br /> <br /> bem, realmente ele tem coisas que o struts nao tem. Esse lance de Interceptors é legal, e o IoC é incrível  <img src="http://www.guj.com.br/images/smilies/283a16da79f3aa23fe1025c96295f04f.gif" border="0"><br /> <br /> mas... vocês também nao podem afirmar que o struts estraga a performance porque faz pool das Actions  <img src="http://www.guj.com.br/images/smilies/8a80c6485cd926be453217d59a84a888.gif" border="0">]]></description>
				<guid isPermaLink="true">http://www.guj.com.br/prepost/6833/35230/
</guid>
				<link>http://www.guj.com.br/prepost/6833/35230/
</link>
				<pubDate><![CDATA[Thu, 6 Nov 2003 21:33:50]]> GMT</pubDate>
				<author><![CDATA[ ricardolecheta]]></author>
			</item>
			<item>
				<title></title>
				<description><![CDATA[ Nao dissemos que ele estraga a performance pq faz pool de actions - mas colocar as actions num pool estraga a produtividade, pq por causa disso vc precisa de FormBeans e toda aquela papagaiada <img src="http://www.guj.com.br/images/smilies/8a80c6485cd926be453217d59a84a888.gif" border="0">]]></description>
				<guid isPermaLink="true">http://www.guj.com.br/prepost/6833/35250/
</guid>
				<link>http://www.guj.com.br/prepost/6833/35250/
</link>
				<pubDate><![CDATA[Fri, 7 Nov 2003 00:28:51]]> GMT</pubDate>
				<author><![CDATA[ cv]]></author>
			</item>
			<item>
				<title></title>
				<description><![CDATA[ [quote="ricardolecheta"]<br /> no struts-confix.xml vc definiria actions para criar, deletar e pesquiar um usuario. Provavelmente isto seriam classes Actions diferentes...<br /> <br /> no webwork eu uso uma classe apenas e digo: <br /> para cadastro o ususario é o metodo X...<br /> para deletar é o método Y...<br /> E ele reutiliza sempre a mesma classe ? é isso?<br /> <br /> puxa!  :shock:<br /> <br /> [/quote]<br /> <br /> Não sei se é isso que vc quer dizer, mais colocar vários métodos em uma Action no Struts é possível na versão 1.1 extendendo org.apache.struts.actions.DispatchAction no lugar de org.apache.struts.actions.Action e colocando no struts-config.xml o parametro "parameter" onde vc vai atribuir o nome do método que vc deseja chamar na action. exemplo:<br /> <br /> [code]<br /> <br /> &lt;action attribute=&quot;funcionario&quot;<br />                 name=&quot;manterfuncionarioForm&quot;<br />                 parameter=&quot;acao&quot;<br />                 scope=&quot;request&quot;<br />                 path=&quot;/funcionario&quot;<br />                 type=&quot;br.com.meuprojeto.struts.meumodulo.action.PreencherFuncionarioAction&quot;<br />                 validate=&quot;false&quot;&gt;<br />             &lt;forward contextRelative=&quot;true&quot; name=&quot;cadastrar&quot; path=&quot;page.funcionario.cadastrar&quot;/&gt;<br />             &lt;forward contextRelative=&quot;true&quot; name=&quot;consultar&quot; path=&quot;page.funcionario.consultar&quot;/&gt;<br />         &lt;/action&gt;<br /> [/code]<br /> <br /> Sendo assim o link funcionario.do?acao=cadastrar vai chamar um método cadastrar na minha action (é lógico que vc deve implementar esse método na sua action)]]></description>
				<guid isPermaLink="true">http://www.guj.com.br/prepost/6833/35519/
</guid>
				<link>http://www.guj.com.br/prepost/6833/35519/
</link>
				<pubDate><![CDATA[Sat, 8 Nov 2003 15:57:57]]> GMT</pubDate>
				<author><![CDATA[ Richardson]]></author>
			</item>
			<item>
				<title></title>
				<description><![CDATA[ Richardson,<br /> <br /> testei aqui o que você colocou e funcionou  <img src="http://www.guj.com.br/images/smilies/283a16da79f3aa23fe1025c96295f04f.gif" border="0"><br /> <br /> bom saber!]]></description>
				<guid isPermaLink="true">http://www.guj.com.br/prepost/6833/35543/
</guid>
				<link>http://www.guj.com.br/prepost/6833/35543/
</link>
				<pubDate><![CDATA[Sat, 8 Nov 2003 19:17:59]]> GMT</pubDate>
				<author><![CDATA[ ricardolecheta]]></author>
			</item>
			<item>
				<title></title>
				<description><![CDATA[ Legal  ricardolecheta <img src="http://www.guj.com.br/images/smilies/9293feeb0183c67ea1ea8c52f0dbaf8c.gif" border="0"> <br /> <br /> O numero de Actions do projeto diminuem muito usando dessa maneira, por exemplo aqui estamos dividindo as Actions por cadastro. Para evetuar as operações de um usuário como cadastrar/editar, excluir e consultar usamos uma unica Action chamada ManterUsuarioAction com esses métodos de cadastrar , excluir e consultar. E criamos mais uma Action para ajudar na composição do formulário tanto na hora do cadastro quanto na edição, chamamos essa Actin de preenchedora, então criamos a Action PreencherUsuarioAction com os métodos necessários.<br /> <br /> Então para cadas operação de cadastro temos 2 actions no lugar de ter um monte de EditarUsuarioAction, ExcluirUsuarioAction ...<br /> <br /> Estou procurando melhores maneiras de trabalhar com Struts, no momento é assim que estou fazendo.<br /> <br /> OBS: Se vc quer colocar IoC no Struts da uma olhadinha nesse site <a class="snap_shots" href="http://struts.sourceforge.net/saif/index.html" target="_blank" rel="nofollow">http://struts.sourceforge.net/saif/index.html</a> <img src="http://www.guj.com.br/images/smilies/9293feeb0183c67ea1ea8c52f0dbaf8c.gif" border="0">]]></description>
				<guid isPermaLink="true">http://www.guj.com.br/prepost/6833/35547/
</guid>
				<link>http://www.guj.com.br/prepost/6833/35547/
</link>
				<pubDate><![CDATA[Sat, 8 Nov 2003 19:53:01]]> GMT</pubDate>
				<author><![CDATA[ Richardson]]></author>
			</item>
			<item>
				<title></title>
				<description><![CDATA[ o que seria loC ?]]></description>
				<guid isPermaLink="true">http://www.guj.com.br/prepost/6833/35670/
</guid>
				<link>http://www.guj.com.br/prepost/6833/35670/
</link>
				<pubDate><![CDATA[Mon, 10 Nov 2003 06:45:32]]> GMT</pubDate>
				<author><![CDATA[ mindu]]></author>
			</item>
			<item>
				<title></title>
				<description><![CDATA[ <a class="snap_shots" href="http://www.guj.com.br/forum/viewtopic.php?t=5973&highlight=ioc" target="_blank" rel="nofollow">http://www.guj.com.br/forum/viewtopic.php?t=5973&highlight=ioc</a>]]></description>
				<guid isPermaLink="true">http://www.guj.com.br/prepost/6833/35672/
</guid>
				<link>http://www.guj.com.br/prepost/6833/35672/
</link>
				<pubDate><![CDATA[Mon, 10 Nov 2003 07:07:23]]> GMT</pubDate>
				<author><![CDATA[ Daniel Quirino Oliveira]]></author>
			</item>
			<item>
				<title></title>
				<description><![CDATA[ [b]Atenção:[/b] foi adicionado no Wiki do Webwork uma tabela comparativa - [url=http://wiki.opensymphony.com/space/Struts+vs.+WebWork]Struts x Webwork[/url]]]></description>
				<guid isPermaLink="true">http://www.guj.com.br/prepost/6833/35684/
</guid>
				<link>http://www.guj.com.br/prepost/6833/35684/
</link>
				<pubDate><![CDATA[Mon, 10 Nov 2003 08:26:33]]> GMT</pubDate>
				<author><![CDATA[ smota]]></author>
			</item>
			<item>
				<title></title>
				<description><![CDATA[ eu estava procurando material sobre o webwork e achei este:<br /> <br /> caso interessar a alguém:<br /> <br /> <a class="snap_shots" href="http://www.groovesystems.com/training/java4/webwork.ppt" target="_blank" rel="nofollow">http://www.groovesystems.com/training/java4/webwork.ppt</a>]]></description>
				<guid isPermaLink="true">http://www.guj.com.br/prepost/6833/35824/
</guid>
				<link>http://www.guj.com.br/prepost/6833/35824/
</link>
				<pubDate><![CDATA[Mon, 10 Nov 2003 18:43:52]]> GMT</pubDate>
				<author><![CDATA[ ricardolecheta]]></author>
			</item>
	</channel>
</rss>
