DevMedia - asp.net, Java, Delphi, SQL e web Design, tudo em um só lugar!
Bem vindo a DevMedia!
LOGIN:     SENHA:
 
 

  Este é um post disponível para assinantes MVP
Este post também está disponível para assinantes da Java Magazine DIGITAL ou para quem possui Créditos DevMedia.  Clique aqui para saber mais!


Artigo Java Magazine 74 - WebApps com Struts² – Parte 1

Acompanhe o desenvolvimento de uma aplicação completa com o framework Struts2 e descubra todas as facilidades que ele traz ao desenvolvimento para a web






WebApps com Struts2 – Parte 1

Conheça na prática um dos mais populares frameworks MVC

Acompanhe o desenvolvimento de uma aplicação completa com o framework Struts2 e descubra todas as facilidades que ele traz ao desenvolvimento para a web


De que se trata o artigo:

Do Struts2, um framework que facilita o desenvolvimento de aplicações web ao aplicar o padrão MVC à arquitetura da aplicação, substituindo Servlets por classes de ação, deixando às páginas JSP apenas lógica de apresentação e provendo uma série de facilidades para tarefas comuns em WebApps, como conversão de tipos, validação, internacionalização, etc.

Para que serve:

Serve para aumentar a produtividade das equipes de desenvolvimento web, propondo, ao mesmo tempo, uma organização maior dos artefatos de código a partir da separação das responsabilidades de apresentação, controle e negócio e da existência de diversas funcionalidades prontas, comumente utilizadas em aplicações deste tipo.

Em que situação o tema é útil:

Quando devemos construir aplicações web de médio a grande porte e o tempo investido no aprendizado do framework é justificado por uma maior produtividade no desenvolvimento e na manutenção.

Aplicações Web com Struts2:

O Struts2 é um dos frameworks web mais conhecidos e utilizados atualmente. Ele provê uma série de facilidades para a construção de aplicações web, melhorando a produtividade da equipe e diminuindo custos de manutenção devido a uma melhor organização do código. Neste artigo, mostramos como criar a aplicação mais simples possível com o Struts2, o "Hello, World!" (Listagens 1 a 4), em seguida preparamos esta mesma aplicação para o desenvolvimento de um exemplo simples, mas com utilidade real, o Bookshelf (Listagens 5 e 6), dando a ele um leiaute profissional (Listagens 7 a 9 e Figura 1). Com a WebApp preparada, começamos o desenvolvimento da sua primeira funcionalidade, o cadastro do administrador do sistema (Listagens 10 a 17 e Figura 2) e melhoramos esta mesma funcionalidade, pouco a pouco, mostrando as facilidades oferecidas pelo Struts2, como: abordagem dirigida ao modelo (Listagens 18 e 19), uso de interceptadores e definição de múltiplos resultados (Listagens 20 e 21), validação do formulário (Listagens 22 e 23 e Figura 3) e internacionalização das mensagens (Listagens 24 a 31). Em futuros artigos sobre este mesmo tema, continuaremos o desenvolvimento do Bookshelf e mostraremos outras funções do framework Struts2.

A World Wide Web, ou simplesmente Web, nasceu no início da década de 1990. Em 1993, surge o padrão Common Gateway Interface (CGI), como uma forma de, ao invés de mostrar uma página HTML estática, executar um programa e exibir seu resultado (por exemplo, uma página HTML gerada dinamicamente).

Desde então, as tecnologias para desenvolvimento de aplicações web (WebApps) dinâmicas continuaram a evoluir rapidamente. Na plataforma Java, depois do surgimento das tecnologias Servlet e JSP, a arquitetura MVC (Model-View-Controller) foi usada como base para a criação do que foi chamado “Model 2” (segundo modelo) para a arquitetura de aplicações web. Este novo modelo foi tão bem aceito que logo dezenas de frameworks foram criados para o desenvolvimento de WebApps usando esta arquitetura.
"


ATENÇÃO! A exibição deste artigo foi interrompida.


  Este é um post disponível para assinantes MVP
Este post também está disponível para assinantes da Java Magazine DIGITAL ou para quem possui Créditos DevMedia.  Clique aqui para saber mais!






    4 COMENTÁRIOS

[Fechar]

Este post é fechado - você precisa ter acesso ao post para incluir um comentário.



Victor Matuk
Tive alguns erros ao executar o Hello World do Struts 2 03/06/2011 09:41:42 org.apache.catalina.core.AprLifecycleListener init INFO: The APR based Apache Tomcat Native library which allows optimal performance in production environments was not found on the java.library.path: C:\Program Files\Java\jre6\bin;.;C:\Windows\Sun\Java\bin;C:\Windows\system32;C:\Windows;C:/Program Files/Java/jre6/bin/client;C:/Program Files/Java/jre6/bin;C:/Program Files/Java/jre6/lib/i386;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;C:\Program Files\Dell\DW WLAN Card\Driver;c:\Program Files\WIDCOMM\Bluetooth Software\;C:\Program Files\Common Files\Roxio Shared\DLLShared\;C:\Program Files\Common Files\Roxio Shared\10.0\DLLShared\;C:\xampplite\php;C:\Program Files\QuickTime\QTSystem\;C:\Users\Bruno\Documents\Victor\Pessoal\Programas\eclipse; 03/06/2011 09:41:42 org.apache.tomcat.util.digester.SetPropertiesRule begin AVISO: [SetPropertiesRule]{Server/Service/Engine/Host/Context} Setting property 'source' to 'org.eclipse.jst.jee.server:Bookshelf' did not find a matching property. 03/06/2011 09:41:42 org.apache.coyote.AbstractProtocolHandler init INFO: Initializing ProtocolHandler ["http-bio-8080"] 03/06/2011 09:41:42 org.apache.coyote.AbstractProtocolHandler init INFO: Initializing ProtocolHandler ["ajp-bio-8009"] 03/06/2011 09:41:42 org.apache.catalina.startup.Catalina load INFO: Initialization processed in 450 ms 03/06/2011 09:41:42 org.apache.catalina.core.StandardService startInternal INFO: Starting service Catalina 03/06/2011 09:41:42 org.apache.catalina.core.StandardEngine startInternal INFO: Starting Servlet Engine: Apache Tomcat/7.0.14 03/06/2011 09:41:44 org.apache.coyote.AbstractProtocolHandler start INFO: Starting ProtocolHandler ["http-bio-8080"] 03/06/2011 09:41:44 org.apache.coyote.AbstractProtocolHandler start INFO: Starting ProtocolHandler ["ajp-bio-8009"] 03/06/2011 09:41:44 org.apache.catalina.startup.Catalina start INFO: Server startup in 1666 ms 03/06/2011 09:41:44 org.apache.jasper.compiler.TldLocationsCache tldScanJar INFO: No TLD files were found in [jndi:/localhost/Bookshelf/WEB-INF/lib/freemarker-2.3.16.jar]. Consider adding the JAR to to the tomcat.util.scan.DefaultJarScanner.jarsToSkip in CATALINA_BASE/catalina.properties 03/06/2011 09:41:44 org.apache.jasper.compiler.TldLocationsCache tldScanJar INFO: No TLD files were found in [jndi:/localhost/Bookshelf/WEB-INF/lib/asm-commons-3.1.jar]. Consider adding the JAR to to the tomcat.util.scan.DefaultJarScanner.jarsToSkip in CATALINA_BASE/catalina.properties 03/06/2011 09:41:44 org.apache.jasper.compiler.TldLocationsCache tldScanJar INFO: No TLD files were found in [jndi:/localhost/Bookshelf/WEB-INF/lib/asm-tree-3.1.jar]. Consider adding the JAR to to the tomcat.util.scan.DefaultJarScanner.jarsToSkip in CATALINA_BASE/catalina.properties 03/06/2011 09:41:44 org.apache.jasper.compiler.TldLocationsCache tldScanJar INFO: No TLD files were found in [jndi:/localhost/Bookshelf/WEB-INF/lib/ognl-3.0.1.jar]. Consider adding the JAR to to the tomcat.util.scan.DefaultJarScanner.jarsToSkip in CATALINA_BASE/catalina.properties 03/06/2011 09:41:44 org.apache.jasper.compiler.TldLocationsCache tldScanJar INFO: No TLD files were found in [jndi:/localhost/Bookshelf/WEB-INF/lib/commons-lang-2.5.jar]. Consider adding the JAR to to the tomcat.util.scan.DefaultJarScanner.jarsToSkip in CATALINA_BASE/catalina.properties 03/06/2011 09:41:44 org.apache.jasper.compiler.TldLocationsCache tldScanJar INFO: No TLD files were found in [jndi:/localhost/Bookshelf/WEB-INF/lib/asm-3.1.jar]. Consider adding the JAR to to the tomcat.util.scan.DefaultJarScanner.jarsToSkip in CATALINA_BASE/catalina.properties 03/06/2011 09:41:44 org.apache.jasper.compiler.TldLocationsCache tldScanJar INFO: No TLD files were found in [jndi:/localhost/Bookshelf/WEB-INF/lib/javassist-3.11.0.GA.jar]. Consider adding the JAR to to the tomcat.util.scan.DefaultJarScanner.jarsToSkip in CATALINA_BASE/catalina.properties 03/06/2011 09:41:45 org.apache.jasper.compiler.TldLocationsCache tldScanJar INFO: No TLD files were found in [jndi:/localhost/Bookshelf/WEB-INF/lib/xwork-core-2.2.3.jar]. Consider adding the JAR to to the tomcat.util.scan.DefaultJarScanner.jarsToSkip in CATALINA_BASE/catalina.properties 03/06/2011 09:41:45 org.apache.jasper.compiler.TldLocationsCache tldScanJar INFO: No TLD files were found in [file:/C:/Program%20Files/Java/jre6/lib/ext/sunmscapi.jar]. Consider adding the JAR to to the tomcat.util.scan.DefaultJarScanner.jarsToSkip in CATALINA_BASE/catalina.properties 03/06/2011 09:41:45 org.apache.catalina.core.StandardWrapperValve invoke GRAVE: Servlet.service() for servlet [jsp] in context with path [/Bookshelf] threw exception [An exception occurred processing JSP page /hello.jsp at line 9 6: 7: 8: 9:

10: 11: Stacktrace:] with root cause The Struts dispatcher cannot be found. This is usually caused by using Struts tags without the associated filter. Struts tags are only usable when the request has passed through its servlet filter, which initializes the Struts dispatcher needed for this tag. - [unknown location] at org.apache.struts2.views.jsp.TagUtils.getStack(TagUtils.java:60) at org.apache.struts2.views.jsp.StrutsBodyTagSupport.getStack(StrutsBodyTagSupport.java:44) at org.apache.struts2.views.jsp.ComponentTagSupport.doStartTag(ComponentTagSupport.java:48) at org.apache.jsp.hello_jsp._jspx_meth_s_005fproperty_005f0(hello_jsp.java:94) at org.apache.jsp.hello_jsp._jspService(hello_jsp.java:67) at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70) at javax.servlet.http.HttpServlet.service(HttpServlet.java:722) at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:419) at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:390) at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:333) at javax.servlet.http.HttpServlet.service(HttpServlet.java:722) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:304) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:240) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:164) at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:462) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:164) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:100) at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:563) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:399) at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:317) at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:204) at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:182) at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:311) at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(Unknown Source) at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) at java.lang.Thread.run(Unknown Source)
[há +1 mês] - Responder

 

Vítor Estêvão Silva Souza
Olá Victor,

Desculpe a demora na resposta. Analisando o erro que você colocou em sua mensagem, acho que a mensagem importante é esta:

The Struts dispatcher cannot be found.

Deve ser algum problema na configuração da aplicação no web.xml ou a falta de algum JAR do Struts2. Pra ser possível determinar mais precisamente o problema eu precisaria ver seu projeto.

Você poderia mandar para vitorsouza@gmail.com seu projeto compactado em um arquivo ZIP porém sem os arquivos JAR (para poder diminuir o tamanho)? Me diga também neste e-mail quais as versões do Struts2 e dos demais JARs você tem utilizado.

Antes de fazer isso, porém, você poderia tentar as instruções que coloquei no meu blog atualizado o exemplo "Hello, Struts2" para uma versão mais recente do framework:

http://disi.unitn.it/~vitorsouza/pt/blog/updating-my-old-struts2-screencasts/

Bons estudos!
- Vítor Souza
[há +1 mês] - Responder
 

Daniel De Souza Pina
Prezados,

Ao entrar em qualquer artigo e clicar em versão para impressão o mesmo não é exibido por completo. Gostaria de imprimir alguns conteúdos, mais não consigo fica tudo pela metade.

ATT,
Daniel Pinna
[há +1 mês] - Responder

 

Devmedia - Equipe De Moderacao
Daniel, isso foi feito para evitar a pirataria.

Atenciosamente,

Equipe Devmedia.
[há +1 mês] - Responder
 



Publicidade
Autor
Vítor Estêvão Silva Souza

Graduação em Ciência da Computação e Mestrado em Informática com ênfase em Engenharia de Software na Universidade Federal do Espírito Santo (UFES), onde trabalhou também como professor substituto.


Space do autor
Estatísticas
Favorito:
Comentários:
Feedback:
Utilidade:
1   0
[Fechar]

Você precisa estar logado para dar um feedback.

Clique aqui para efetuar o login
[Fechar]


Este post está fechado. Saiba mais sobre a assinatura MVP!
web-03
DevMedia  |  Anuncie  |  Fale conosco
Hospedagem web por Porta 80 Web Hosting
2012 - Todos os Direitos Reservados a web-03