<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-1900921458821518619</id><updated>2011-11-28T09:00:31.160-02:00</updated><category term='linux'/><category term='jtable'/><category term='Struts'/><category term='Struts2'/><category term='Jasper'/><category term='jQuery'/><category term='Dicas'/><category term='Lucene'/><category term='iReport'/><category term='swing/awt'/><category term='java'/><category term='Hibernate'/><category term='jsp'/><category term='joguinho'/><category term='NetBeans'/><category term='Web Service'/><category term='AbstractTableModel'/><category term='StrutsTool'/><category term='SOAP'/><category term='jdeveloper'/><category term='instalação'/><category term='print'/><category term='where is the bug'/><category term='desktop'/><category term='Tipos de dados'/><category term='sobre'/><category term='matemática'/><category term='Gambis'/><category term='Links'/><category term='windows'/><category term='Tiles'/><category term='Spring'/><category term='analise oo'/><title type='text'>Foo Java!</title><subtitle type='html'>Define: foo = Foo is a metasyntactic variable used heavily in computer science to represent concepts abstractly</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://foojava.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1900921458821518619/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://foojava.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Helton Eduardo Ritter</name><uri>http://www.blogger.com/profile/08450017811928254585</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://3.bp.blogspot.com/_MvDshKp6n3U/TTMBkVo0g0I/AAAAAAAAA0o/-g6L_zkBVSI/S220/SDC13821.JPG'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>28</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-1900921458821518619.post-4007347773378070706</id><published>2011-11-28T08:23:00.001-02:00</published><updated>2011-11-28T08:28:22.765-02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='jtable'/><category scheme='http://www.blogger.com/atom/ns#' term='print'/><title type='text'>Imprimir JTable Print</title><content type='html'>Para casos onde seja apenas necessário imprimir os dados de uma Jtable, sem cabecalhos nem imagens etc, pode-se utilizar o método print das jTable, definindo apenas o título para imprimir.&lt;br /&gt;&lt;br /&gt;&lt;script src="http://pastebin.com/embed_js.php?i=R8gYEcT0"&gt;&lt;/script&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1900921458821518619-4007347773378070706?l=foojava.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://foojava.blogspot.com/feeds/4007347773378070706/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://foojava.blogspot.com/2011/11/imprimir-jtable-print.html#comment-form' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1900921458821518619/posts/default/4007347773378070706'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1900921458821518619/posts/default/4007347773378070706'/><link rel='alternate' type='text/html' href='http://foojava.blogspot.com/2011/11/imprimir-jtable-print.html' title='Imprimir JTable Print'/><author><name>Bolívar Arthur Butzke</name><uri>https://profiles.google.com/115253865457720310323</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-DKxFfFY7jkw/AAAAAAAAAAI/AAAAAAAACAc/L2U5KijlcQA/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1900921458821518619.post-3150798465524482858</id><published>2011-11-25T13:01:00.001-02:00</published><updated>2011-11-25T14:35:23.554-02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Jasper'/><category scheme='http://www.blogger.com/atom/ns#' term='Gambis'/><category scheme='http://www.blogger.com/atom/ns#' term='iReport'/><category scheme='http://www.blogger.com/atom/ns#' term='desktop'/><category scheme='http://www.blogger.com/atom/ns#' term='Dicas'/><category scheme='http://www.blogger.com/atom/ns#' term='Links'/><category scheme='http://www.blogger.com/atom/ns#' term='AbstractTableModel'/><title type='text'>A melhor dica de todos os tempos e um pouco de código fonte</title><content type='html'>A dica que segue é triste, mas considero uma boa dica.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;span style="font-size: large;"&gt;NUNCA UTILIZE LETRAS MAIÚSCULAS AO DESENVOLVER COM JAVA.&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Eu já perdi a conta de quantos problemas e horas passei pesquisando e pedindo ao Pai Google como resolver erros no Java, e muitos deles foi por eu ter usado uma letra maiúscula. Por exemplo, usar letra maiúscula em nome de tabela ou campo no banco de dados, volta e meia dá problema com o Hibernate.&lt;br /&gt;&lt;br /&gt;E hoje, tentando passar os dados de uma abstractTableModel diretamente para um relatório no iReport Jasper, recebi várias erros como:&lt;br /&gt;&lt;br /&gt;&lt;i&gt;java.lang.NoSuchMethodException: Unknown property 'Data' on class &lt;/i&gt;&lt;br /&gt;&lt;span class="postbody"&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Depois de várias alteracões uma coisa me chamou a atencão, erro no campo &lt;b&gt;Data&lt;/b&gt;, o D maiúsculo... refatorei o nome para &lt;b&gt;data&lt;/b&gt; tanto na classe como no relatório e o erro passou pro campo seguinte... CustoMO. Eureka, descobri o problema, mais uma vez as maiúsculas. Olha &lt;a href="http://www.guj.com.br/java/72374-error-retrieving-field-value-bean-unknown-property-" target="_blank"&gt;outro&lt;/a&gt; que sofreu...&lt;br /&gt;&lt;br /&gt;Se não&lt;span class="postbody"&gt; ajustar no iReport&amp;nbsp; dá um erro tipo este:&lt;/span&gt;&lt;br /&gt;&lt;span class="postbody"&gt;&lt;br /&gt; &lt;i&gt;net.sf.jasperreport.engine.JRException:Error retrieving field value bean: Campo&lt;/i&gt;&lt;/span&gt;&lt;i&gt; &lt;/i&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Bem, aproveitando o post, vou postar o código da AbstractTableModel que montei pra vocês darem risadas das minhas gambiarras e poderem copia-las depois quando quiserem jogar os dados da tablemodel pra um relatório jasper :)&lt;br /&gt;&lt;br /&gt;&lt;script src="http://pastebin.com/embed_js.php?i=gWzVWbd7"&gt;&lt;/script&gt;&lt;br /&gt;&lt;br /&gt;Vejam que acabei criando uma classe interna com os mesmos campos/colunas da table model que uso nas jTable... campos em MINÚSCULO! Ai fiz uma funcão &lt;b&gt;carregaDadosPrint()&lt;/b&gt; que busca os dados e joga pra ArrayList que vai pro relatório a ser impresso.&lt;br /&gt;&lt;br /&gt;Tenho certeza que o código pode ser bastante melhorado visto que Java não é o meu forte, mas acredito que quem está iniciando pode aprender muitas coisas estudando ele.&lt;br /&gt;&lt;br /&gt;Aproveita pra colocar alguns links que me ajudaram nos últimos dias:&lt;br /&gt; &lt;a href="http://javasemcafe.blogspot.com/2010/09/aula-17092010-3tads-trabalhando-com.html"&gt;Java sem café.!: JavaSE: CRUD em Swing&lt;/a&gt;&lt;br /&gt;&lt;a href="http://javafree.uol.com.br/topic-3733-Implementando-AbstractTableModel.html"&gt;Implementando AbstractTableModel - Java Free.org&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.javalobby.org/articles/jtable/"&gt;A Simple Interactive JTable Tutorial&lt;/a&gt;&lt;br /&gt;&lt;a href="http://stackoverflow.com/questions/4303680/java-swing-extend-abstracttablemodel-and-use-it-with-jtable-several-question"&gt;Java Swing | extend AbstractTableModel and use it with JTable | several questions - Stack Overflow&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.exampledepot.com/egs/java.util/coll_Sets.html"&gt;Creating a Set | Example Depot&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.guj.com.br/java/256756-nao-consigo-buscar-dado-do-abstracttablemodel-pq"&gt;Não consigo buscar dado do AbstractTableModel.. pq?&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.guj.com.br/java/231928-morte-definitiva-ao-default-table-model"&gt;Morte definitiva ao default table model&lt;/a&gt;&lt;br /&gt;&lt;a href="http://javafree.uol.com.br/artigo/849032/Mascara-monetaria.html"&gt;Máscara monetária - Java Free.org&lt;/a&gt;&amp;nbsp;&lt;br /&gt;&lt;a href="http://foro.elhacker.net/java/como_crear_interfaces_graficas_con_look_and_feel_en_java-t147610.0.html"&gt;Cómo crear interfaces gráficas con Look And Feel en Java&lt;/a&gt;&lt;br /&gt;&lt;a href="http://rfiume.blogspot.com/search/label/Look%20and%20Feel"&gt;Cotidiano em Wonderland: Look and Feel&lt;/a&gt;&lt;br /&gt;&lt;b&gt;&lt;a href="http://javafree.uol.com.br/artigo/871502/Testando-varios-Look-And-Feels.html"&gt;Testando vários Look And Feels - Java Free.org&lt;/a&gt;&amp;nbsp;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&lt;a href="http://bleaklow.com/2006/09/30/printing_simple_tabular_reports_with_jtable.html"&gt;Printing simple tabular reports with JTable - Alan's Ramblings&lt;/a&gt;&lt;/b&gt;&lt;br /&gt;&lt;a href="http://blog.marcnuri.com/blog/default/2007/08/03/Updated-Displaying-a-jTable-inside-another-jTable-JTable-cellRenderer"&gt;Marc Nuri's Happy Coding Blog » Updated: Displaying a jTable inside another jTable // JTable cellRenderer&lt;/a&gt;&lt;br /&gt;&lt;a href="http://blog.marcnuri.com/blog/default/2007/07/16/Getting-started-with-JasperReports-Printing-reports-from-your-java-app-Part-III"&gt;Marc Nuri's Happy Coding Blog » Getting started with JasperReports // Printing reports from your java app (Part III)&lt;/a&gt;&lt;br /&gt;&lt;a href="http://ssagara.blogspot.com/2008/05/jtable-to-dynamic-pdf-report-using.html"&gt;sagara's Blog: JTable to Dynamic PDF Report using JasperReport&lt;/a&gt;&lt;br /&gt;&lt;a href="http://dynamicjasper.com/documentation-examples/getting-started/"&gt;Getting Started | DynamicJasper&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.guj.com.br/java/82789-preencher-relatorios-jasperreport-com-hibernate"&gt;Preencher Relatórios JasperReport com Hibernate&lt;/a&gt;&lt;br /&gt;&lt;a href="http://jasperforge.org/uploads/publish/jasperreportswebsite/trunk/sample.reference/hibernate/index.html"&gt;JasperReports 4.0.1 - Hibernate Sample&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.furutani.com.br/2009/02/usando-o-jrbeancollectiondatasource/"&gt;Usando o JRBeanCollectionDataSource » Roberto Furutani&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1900921458821518619-3150798465524482858?l=foojava.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://foojava.blogspot.com/feeds/3150798465524482858/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://foojava.blogspot.com/2011/11/melhor-dica-de-todos-os-tempos-e-um.html#comment-form' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1900921458821518619/posts/default/3150798465524482858'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1900921458821518619/posts/default/3150798465524482858'/><link rel='alternate' type='text/html' href='http://foojava.blogspot.com/2011/11/melhor-dica-de-todos-os-tempos-e-um.html' title='A melhor dica de todos os tempos e um pouco de código fonte'/><author><name>Bolívar Arthur Butzke</name><uri>https://profiles.google.com/115253865457720310323</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-DKxFfFY7jkw/AAAAAAAAAAI/AAAAAAAACAc/L2U5KijlcQA/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1900921458821518619.post-3266897388323192543</id><published>2011-11-09T10:33:00.000-02:00</published><updated>2011-11-09T10:33:57.055-02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='desktop'/><category scheme='http://www.blogger.com/atom/ns#' term='swing/awt'/><title type='text'>AbstractTableModel x DefaultTableModel</title><content type='html'>Olá, estou com pouco tempo pra escrever um bom post, mas não posso deixar de recomendar a todos que parem de usar DefaultTableModel e comecem com AbstractTableModel.Seguem 3 links interessantes que vão lhe levar para muitos outros links e exemplos :), é isso ai, bom estudo.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.guj.com.br/java/138916-duvida-pegar-objeto-da-jtable-resolvido"&gt;http://www.guj.com.br/java/138916-duvida-pegar-objeto-da-jtable-resolvido&lt;/a&gt;&lt;br /&gt; &lt;br /&gt;&lt;a href="http://www.guj.com.br/java/199067-redimensionar-jtable---pra-variar--resolvido-/2#1001295"&gt;http://www.guj.com.br/java/199067-redimensionar-jtable---pra-variar--resolvido-/2#1001295&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://stackoverflow.com/questions/4303680/java-swing-extend-abstracttablemodel-and-use-it-with-jtable-several-question"&gt;http://stackoverflow.com/questions/4303680/java-swing-extend-abstracttablemodel-and-use-it-with-jtable-several-question&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1900921458821518619-3266897388323192543?l=foojava.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://foojava.blogspot.com/feeds/3266897388323192543/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://foojava.blogspot.com/2011/11/abstracttablemodel-x-defaulttablemodel.html#comment-form' title='1 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1900921458821518619/posts/default/3266897388323192543'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1900921458821518619/posts/default/3266897388323192543'/><link rel='alternate' type='text/html' href='http://foojava.blogspot.com/2011/11/abstracttablemodel-x-defaulttablemodel.html' title='AbstractTableModel x DefaultTableModel'/><author><name>Bolívar Arthur Butzke</name><uri>https://profiles.google.com/115253865457720310323</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-DKxFfFY7jkw/AAAAAAAAAAI/AAAAAAAACAc/L2U5KijlcQA/s512-c/photo.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1900921458821518619.post-7980947514503440899</id><published>2011-10-13T09:37:00.000-03:00</published><updated>2011-10-24T12:36:31.945-02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='desktop'/><category scheme='http://www.blogger.com/atom/ns#' term='Hibernate'/><category scheme='http://www.blogger.com/atom/ns#' term='NetBeans'/><title type='text'>Engenharia Reversa no Hibernate com Netbeans</title><content type='html'>Olá!&lt;br /&gt;&lt;br /&gt;Se você vai usar o Hibernate para desenvolver aplicativos Java, recomendo fortemente que leia este tutorial &lt;a href="http://netbeans.org/kb/docs/java/hibernate-java-se.html"&gt;http://netbeans.org/kb/docs/java/hibernate-java-se.html&lt;/a&gt;, você vai aprender a utilizar alguns recursos bem legais como o HQL Query editor e gerar POJOs e arquivos de mapeamento das tabelas (models, classes) no banco através de um recurso de engenharia reversa do Hibernate.&lt;br /&gt;&lt;br /&gt;No tutorial é para Swing apps, mas este conhecimento você vai usar em qualquer projeto que utilize Java e Hibernate.&lt;br /&gt;&lt;br /&gt;___&lt;br /&gt;Bolívar Butzke&lt;br /&gt;&lt;a href="http://bolivarbutzke.blogspot.com/"&gt;bolivarbutzke.blogspot.com&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1900921458821518619-7980947514503440899?l=foojava.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://foojava.blogspot.com/feeds/7980947514503440899/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://foojava.blogspot.com/2011/10/engenharia-reversa-no-hibernate-com.html#comment-form' title='4 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1900921458821518619/posts/default/7980947514503440899'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1900921458821518619/posts/default/7980947514503440899'/><link rel='alternate' type='text/html' href='http://foojava.blogspot.com/2011/10/engenharia-reversa-no-hibernate-com.html' title='Engenharia Reversa no Hibernate com Netbeans'/><author><name>Bolívar Arthur Butzke</name><uri>https://profiles.google.com/115253865457720310323</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-DKxFfFY7jkw/AAAAAAAAAAI/AAAAAAAACAc/L2U5KijlcQA/s512-c/photo.jpg'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1900921458821518619.post-5713023196965910570</id><published>2011-07-04T21:20:00.000-03:00</published><updated>2011-07-04T21:20:07.212-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='java'/><category scheme='http://www.blogger.com/atom/ns#' term='SOAP'/><category scheme='http://www.blogger.com/atom/ns#' term='Web Service'/><category scheme='http://www.blogger.com/atom/ns#' term='NetBeans'/><title type='text'>Trabalhando com Web Service SOP com JAVA, Netbeans</title><content type='html'>Se você quer criar um web service, ou consumir um, e a sua IDE é o NetBeans, dê&lt;br /&gt;uma olhada no link abaixo. Tem um material bom.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://netbeans.org/kb/docs/websvc/jax-ws.html"&gt;http://netbeans.org/kb/docs/websvc/jax-ws.html&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Só não funciona com TomCat, tem que ser GlassFish o servidor. Se souber como fazer com TomCat, comente aí.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1900921458821518619-5713023196965910570?l=foojava.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://foojava.blogspot.com/feeds/5713023196965910570/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://foojava.blogspot.com/2011/07/trabalhando-com-web-service-sop-com.html#comment-form' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1900921458821518619/posts/default/5713023196965910570'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1900921458821518619/posts/default/5713023196965910570'/><link rel='alternate' type='text/html' href='http://foojava.blogspot.com/2011/07/trabalhando-com-web-service-sop-com.html' title='Trabalhando com Web Service SOP com JAVA, Netbeans'/><author><name>Helton Eduardo Ritter</name><uri>http://www.blogger.com/profile/08450017811928254585</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://3.bp.blogspot.com/_MvDshKp6n3U/TTMBkVo0g0I/AAAAAAAAA0o/-g6L_zkBVSI/S220/SDC13821.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1900921458821518619.post-1194925319620275537</id><published>2011-06-14T09:58:00.001-03:00</published><updated>2011-06-14T10:00:26.796-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Struts2'/><category scheme='http://www.blogger.com/atom/ns#' term='NetBeans'/><title type='text'>Obter dados de um parametro do web.xml</title><content type='html'>Estive com uma dificuldade, precisava fazer upload de um arquivo mas não queria informar o caminho absoluto no servidor, infelizmente ainda não consegui fazer funcionar isso... mas, na busca por uma solucão, acabei aprendendo outra coisa legal, pra quem já programou em .NET conhece bem a tal da web.config, um arquivo XML com milhoes de configuracoes, ta um pouco menos, mas voce pode adicionar varias coisas la e obter na aplicacao, seria um lugar bom pra guardar qualquer parametro do sistema que possa se alterar em uma eventual nova instalacao ou mudanca de servidor... chega do rolo, vamos ao codigo Java com Struts, aqui o arquivo se chama web.xml e costuma estar dentro do WEB-INF, podemos adicionar variaveis (parametros de contexto) com informacoes úteis, como no meu caso queria manter o caminho absoluto até o diretório da minha aplicacao. Olha a imagem abaixo, após a configuracao do tiles&amp;nbsp; tem um context-param (linhas 32-&amp;gt;35), ali dentro fica os dados desse parametro (nome e valor) que eu adicionei.&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-PCJJNnELp0Q/TfdYyfOSfuI/AAAAAAAACDY/36CgPiCWR1M/s1600/web+xml.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="249" src="http://4.bp.blogspot.com/-PCJJNnELp0Q/TfdYyfOSfuI/AAAAAAAACDY/36CgPiCWR1M/s640/web+xml.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;Minha dificuldade foi conseguir obter esse valor na app, após várias tentativas e erros deu certo, muito simples por sinal:&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;ServletActionContext.getServletContext().getInitParameter("caminhoFisicoImgProdutos");&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-8FqDZqdrjAk/TfdZig850AI/AAAAAAAACDc/piXNsjlDmfI/s1600/codigoUpload.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="299" src="http://2.bp.blogspot.com/-8FqDZqdrjAk/TfdZig850AI/AAAAAAAACDc/piXNsjlDmfI/s640/codigoUpload.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;Bom, na imagem acima tem além da parte que obtém caminhoAbsoluto o upload do arquivo igual tutorial do helton, e tem tbm a atualizacao dos dados no banco, onde eh alterado o caminho (nome arquivo) da imagem...&lt;br /&gt;&lt;br /&gt;Isso ai galera, até +.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1900921458821518619-1194925319620275537?l=foojava.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://foojava.blogspot.com/feeds/1194925319620275537/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://foojava.blogspot.com/2011/06/obter-dados-de-um-parametro-do-webxml.html#comment-form' title='1 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1900921458821518619/posts/default/1194925319620275537'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1900921458821518619/posts/default/1194925319620275537'/><link rel='alternate' type='text/html' href='http://foojava.blogspot.com/2011/06/obter-dados-de-um-parametro-do-webxml.html' title='Obter dados de um parametro do web.xml'/><author><name>Bolívar Arthur Butzke</name><uri>https://profiles.google.com/115253865457720310323</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-DKxFfFY7jkw/AAAAAAAAAAI/AAAAAAAACAc/L2U5KijlcQA/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/-PCJJNnELp0Q/TfdYyfOSfuI/AAAAAAAACDY/36CgPiCWR1M/s72-c/web+xml.png' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1900921458821518619.post-3360228663259351905</id><published>2011-06-06T21:00:00.000-03:00</published><updated>2011-06-06T21:00:25.042-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='java'/><category scheme='http://www.blogger.com/atom/ns#' term='Struts2'/><title type='text'>Struts2 - Upload de arquivos, gravando no sistema de arquivos</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-MkOozgkSNbk/Te1mZ2FH3_I/AAAAAAAAA6A/vqZ0yyP868Q/s1600/01-jsp-upload.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;/a&gt;&lt;/div&gt;Para fazer upload usando Struts2, em Java para o sistema de arquivos (do servidor) é relativamente simples. Segue exemplo básico abaixo com uma pequena explicação.&lt;br /&gt;&lt;br /&gt;No NetBeans, crie um novo projeto (Java Web) , chameio- de “UploadFS”. Usaremos Tomcat como de costume, mas esse aplicativo não tem banco de dados, portanto, na tela dos frameworks, marque apenas o Struts2, e não o Hibernate, também não precisa criar a página de exemplo.&lt;br /&gt;&lt;br /&gt;Bom, projeto criado, vamos modificar o &lt;i&gt;index.jsp&lt;/i&gt; e incluir o formulário de upload. Código fonte abaixo.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://3.bp.blogspot.com/-MkOozgkSNbk/Te1mZ2FH3_I/AAAAAAAAA6A/vqZ0yyP868Q/s1600/01-jsp-upload.png" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://3.bp.blogspot.com/-MkOozgkSNbk/Te1mZ2FH3_I/AAAAAAAAA6A/vqZ0yyP868Q/s1600/01-jsp-upload.png" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Perceba que informamos no &lt;i&gt;enctype &lt;/i&gt;o valor “multipart/form-data”. Se não, não faria o upload. O action do form, está para ação “&lt;i&gt;doUpload&lt;/i&gt;”, então vamos implementar esse método. Criamos o arquivo “Upload.java”.&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-O9s3w2cWfiQ/Te1osei4W7I/AAAAAAAAA6Q/wDG1tn5vg4w/s1600/2-inicio-action.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://2.bp.blogspot.com/-O9s3w2cWfiQ/Te1osei4W7I/AAAAAAAAA6Q/wDG1tn5vg4w/s1600/2-inicio-action.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;Bom, como vemos no código acima, apenas implementamos os gettes e os setters de um atributo do tipo File, para fazer upload, o Struts pede que se façam os outros dois atributos, conforme o nome do filefield que colocamos no jsp, no caso "arquivo"&lt;br /&gt;&lt;br /&gt;Abaixo a implementação do upload em sí, carregando o arquivo para /dados/temp/upload.&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-WV5C709nTGc/Te1nHWaCgcI/AAAAAAAAA6E/-XKMNTy5xS0/s1600/03-action-cod-ok.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://2.bp.blogspot.com/-WV5C709nTGc/Te1nHWaCgcI/AAAAAAAAA6E/-XKMNTy5xS0/s1600/03-action-cod-ok.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;Bom, próximo passo é configurar o struts, apontando a ação "doUpload" para a classe Upload no respectivo método.&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-1F0don0csJg/Te1pP9hhTvI/AAAAAAAAA6U/CoDaG9pVer8/s1600/04-struts-configuring.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://1.bp.blogspot.com/-1F0don0csJg/Te1pP9hhTvI/AAAAAAAAA6U/CoDaG9pVer8/s1600/04-struts-configuring.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Rodando a aplicação (diretório de upload está vazio)...&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-U74Ag2wNQTw/Te1pcD5TExI/AAAAAAAAA6Y/1WagtCZKTAc/s1600/05-rodando-aplicacao.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://3.bp.blogspot.com/-U74Ag2wNQTw/Te1pcD5TExI/AAAAAAAAA6Y/1WagtCZKTAc/s1600/05-rodando-aplicacao.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;Escolhemos uma... e vua-la!&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-fMj2B7UZPYw/Te1p7QVw0_I/AAAAAAAAA6c/BDUCilVp6qc/s1600/06-upado.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://4.bp.blogspot.com/-fMj2B7UZPYw/Te1p7QVw0_I/AAAAAAAAA6c/BDUCilVp6qc/s1600/06-upado.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;Download do &lt;a href="http://www.sourcedreams.com.br/diversos/java-web-samples/UploadFS.zip"&gt;código fonte&lt;/a&gt; do exemplo.&lt;br /&gt;&lt;br /&gt;O Próximo, upando e cadastrando no BD.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1900921458821518619-3360228663259351905?l=foojava.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://foojava.blogspot.com/feeds/3360228663259351905/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://foojava.blogspot.com/2011/06/struts2-upload-de-arquivos-gravando-no.html#comment-form' title='2 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1900921458821518619/posts/default/3360228663259351905'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1900921458821518619/posts/default/3360228663259351905'/><link rel='alternate' type='text/html' href='http://foojava.blogspot.com/2011/06/struts2-upload-de-arquivos-gravando-no.html' title='Struts2 - Upload de arquivos, gravando no sistema de arquivos'/><author><name>Helton Eduardo Ritter</name><uri>http://www.blogger.com/profile/08450017811928254585</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://3.bp.blogspot.com/_MvDshKp6n3U/TTMBkVo0g0I/AAAAAAAAA0o/-g6L_zkBVSI/S220/SDC13821.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/-MkOozgkSNbk/Te1mZ2FH3_I/AAAAAAAAA6A/vqZ0yyP868Q/s72-c/01-jsp-upload.png' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1900921458821518619.post-4383512916348988263</id><published>2011-05-04T10:57:00.010-03:00</published><updated>2011-05-05T13:11:35.951-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='java'/><category scheme='http://www.blogger.com/atom/ns#' term='StrutsTool'/><category scheme='http://www.blogger.com/atom/ns#' term='Struts2'/><category scheme='http://www.blogger.com/atom/ns#' term='Spring'/><category scheme='http://www.blogger.com/atom/ns#' term='Tiles'/><category scheme='http://www.blogger.com/atom/ns#' term='Lucene'/><category scheme='http://www.blogger.com/atom/ns#' term='Hibernate'/><category scheme='http://www.blogger.com/atom/ns#' term='jQuery'/><category scheme='http://www.blogger.com/atom/ns#' term='NetBeans'/><title type='text'>StrutsTool: Desenvolvendo Aplicações em Struts sem Sofrimento</title><content type='html'>&lt;div style="text-align: justify;"&gt;Quem acompanhou os posts anteriores pôde ter uma idéia de como desenvolver aplicações em Java com a framework Struts 2. Um dos aspectos que mais chama a atenção é a quantidade de passos necessários para criar aplicações relativamente simples. Quem já usou Struts sabe como é custoso criar um simples CRUD.&lt;/div&gt; &lt;p align="JUSTIFY" style="margin-bottom: 0in; font-weight: normal"&gt;Isso trás grande frustração para quem desenvolve aplicações web, inclusive eu. Isso se dá principalmente pois o Struts necessita de extensa configuração. Cada action que você cria precisa ser mapeada em um arquivo xml, se você usar Tiles o negócio é pior ainda, é xml para todo lado.&lt;/p&gt; &lt;p align="JUSTIFY" style="margin-bottom: 0in; font-weight: normal"&gt;O pior é que isso acontece em outras frameworks Java, como o Spring. Porém esta adotou o uso de anotações ao invés de xml, mas não deixa de ser configuração. Fato é que com as anotações você não precisa criar tantos arquivos, mas ainda assim precisa escrever muitas linhas para fazer a coisa funcionar.&lt;/p&gt; &lt;p align="JUSTIFY" style="margin-bottom: 0in; font-weight: normal"&gt;Com uma rápida busca na internet é possível encontrar diversas discussões sobre quando utilizar Java para web ou qual é a melhor dentre as frameworks para Java (a Wikipedia &lt;a href="http://en.wikipedia.org/wiki/Comparison_of_web_application_frameworks#Java"&gt;lista&lt;/a&gt; 35 frameworks para Java). Kelby Zorgdrager faz em um &lt;a href="http://olex.openlogic.com/wazi/2010/choosing-the-right-java-web-development-framework/"&gt;artigo&lt;/a&gt; uma comparação entre frameworks Java, com tabelas de pontuação para os pontos mais relevantes de uma framework. Para encurtar a história, de modo geral (não conclusivo) Struts e JSF tem as melhores notas. Entretanto, frameworks como Stripes e Tapestry tem melhores notas quando falamos em RAD, isso porque ambas se utilizam de convenção ao invés de configuração.&lt;/p&gt; &lt;p align="JUSTIFY" style="margin-bottom: 0in; font-weight: normal"&gt;Nessas horas muitos diriam para trocar de linguagem, mas isso depende muito das necessidades e recursos disponíveis para o projeto. Não vou entrar nesta discussão, a internet já está cheia delas, tendo destaque as com títulos como: “linguagem A vs linguagem B”.&lt;/p&gt; &lt;p align="JUSTIFY" style="margin-bottom: 0in"&gt;&lt;span&gt;&lt;b&gt;Porque Struts?&lt;/b&gt;&lt;/span&gt;&lt;/p&gt; &lt;p align="JUSTIFY" style="margin-bottom: 0in; font-weight: normal"&gt;Não vou dizer que adoro esta framework, pois estaria mentindo. Digamos que a escolha desta framework foi mais uma questão de necessidade (obrigação), do contrário teria escolhido outra framework, ou  outra linguagem, como Ruby (comparação interessante entre as linguagens &lt;a href="http://gaurav-asktome.blogspot.com/2011/03/java-vs-ruby-on-rails-it-is-dead-heat.html"&gt;aqui&lt;/a&gt;).&lt;/p&gt; &lt;p align="JUSTIFY" style="margin-bottom: 0in; font-weight: normal"&gt;Bom, se eu tenho que utilizar Struts para desenvolver uma aplicação, ao menos posso usar meus meios para reduzir o sofrimento durante a jornada. E é exatamente o que estou fazendo, construindo uma aplicação de linha de comando inspirada em Rails para Struts 2.&lt;/p&gt; &lt;p align="JUSTIFY" style="margin-bottom: 0in"&gt;&lt;span&gt;&lt;b&gt;StrutsTool&lt;/b&gt;&lt;/span&gt;&lt;/p&gt; &lt;p align="JUSTIFY" style="margin-bottom: 0in"&gt;&lt;span style="font-weight: normal"&gt;Pois bem, esta aplicação se chama StrutsTool (não estava muito inspirado, então me baseei no Zend_Tool mesmo) e está hospedada no Google Code, no seguinte endereço: &lt;/span&gt;&lt;a href="http://code.google.com/p/strutstool/"&gt;http://code.google.com/p/strutstool/&lt;/a&gt;.&lt;/p&gt; &lt;p align="JUSTIFY" style="margin-bottom: 0in"&gt;A idéia de fazer tal ferramenta surgiu, obviamente, de uma necessidade, que era não me arrebentar para programar funcionalidades simples. E por simples, me refiro ao CRUD. Além disso, muitos arquivos precisam ser criados e modificados para se obter uma aplicação funcional em Struts.&lt;/p&gt; &lt;p align="JUSTIFY" style="margin-bottom: 0in"&gt;Quer uma amostra prática disto? Justin Gehtland reescreveu uma aplicação Java em Ruby on Rails e obteve os seguintes resultados (&lt;a href="http://www.theserverside.com/news/thread.tss?thread_id=33120"&gt;fonte&lt;/a&gt;):&lt;/p&gt; &lt;p align="JUSTIFY" style="margin-left: 0.49in; margin-bottom: 0in"&gt;&lt;i&gt;Linhas de Código:&lt;br /&gt;Rails: 1164&lt;br /&gt;Java: 3293&lt;/i&gt;&lt;/p&gt; &lt;p align="JUSTIFY" style="margin-left: 0.49in; margin-bottom: 0in"&gt;&lt;i&gt;Número de Classes:&lt;br /&gt;Rails: 55&lt;br /&gt;Java: 62&lt;/i&gt;&lt;/p&gt; &lt;p align="JUSTIFY" style="margin-left: 0.49in; margin-bottom: 0in"&gt;&lt;i&gt;Número de Métodos:&lt;br /&gt;Rails: 126&lt;br /&gt;Java: 549&lt;/i&gt;&lt;/p&gt; &lt;p align="JUSTIFY" style="margin-left: 0.49in; margin-bottom: 0in"&gt;&lt;i&gt;Linhas de Configuração:&lt;br /&gt;Rails: 113&lt;br /&gt;Java: 1161&lt;/i&gt;&lt;/p&gt; &lt;p align="JUSTIFY" style="margin-bottom: 0in"&gt;Não é para menos. Quer outro exemplo, então dê uma olhada &lt;a href="https://github.com/mayconbordin/JavaWebExample"&gt;neste projeto&lt;/a&gt; que hospedei há algum tempo no Github, é apenas um exemplo simples de CRUD utilizando Struts 2, Tiles, Hibernate e Hibernate Validator. Em poucas palavras : muito código para pouca funcionalidade.&lt;/p&gt; &lt;p align="JUSTIFY" style="margin-bottom: 0in"&gt;Para deixar claro o quanto de trabalho um CRUD pode dar, você precisa:&lt;/p&gt; &lt;ol&gt;  &lt;li&gt;&lt;p align="JUSTIFY" style="margin-bottom: 0in"&gt;criar os arquivos  .jsp&lt;/p&gt;  &lt;/li&gt;&lt;li&gt;&lt;p align="JUSTIFY" style="margin-bottom: 0in"&gt;criar um controlador&lt;/p&gt;  &lt;/li&gt;&lt;li&gt;&lt;p align="JUSTIFY" style="margin-bottom: 0in"&gt;mapeá-lo no arquivo  struts.xml indicando os arquivos .jsp que irão ser exibidos&lt;/p&gt;  &lt;/li&gt;&lt;li&gt;&lt;p align="JUSTIFY" style="margin-bottom: 0in"&gt;se usar tiles,  definir os arquivos .jsp no tiles.xml e referenciá-los no  struts.xml&lt;/p&gt;  &lt;/li&gt;&lt;li&gt;&lt;p align="JUSTIFY" style="margin-bottom: 0in"&gt;criar a classe POJO&lt;/p&gt;  &lt;/li&gt;&lt;li&gt;&lt;p align="JUSTIFY" style="margin-bottom: 0in"&gt;adicionar  validadores de dados ao POJO&lt;/p&gt;  &lt;/li&gt;&lt;li&gt;&lt;p align="JUSTIFY" style="margin-bottom: 0in"&gt;mapear a classe POJO  para o Hibernate, podendo ser com anotações ou xml&lt;/p&gt;  &lt;/li&gt;&lt;li&gt;&lt;p align="JUSTIFY" style="margin-bottom: 0in"&gt;criar classe de  acesso a dados&lt;/p&gt;  &lt;/li&gt;&lt;li&gt;&lt;p align="JUSTIFY" style="margin-bottom: 0in"&gt;criar classe de  serviço&lt;/p&gt;  &lt;/li&gt;&lt;li&gt;&lt;p align="JUSTIFY" style="margin-bottom: 0in"&gt;você pode ainda  querer criar um arquivo properties para armazenar as mensagens que  serão usadas pelo controlador&lt;/p&gt;&lt;/li&gt;&lt;/ol&gt; &lt;p align="JUSTIFY" style="margin-bottom: 0in"&gt;Foi baseado nesta aplicação de exemplo que eu comecei a criar o que viria a ser uma aplicação de base para o desenvolvimento de minhas aplicações em Struts. Se trata de um projeto com as configurações básicas para funcionar e em cima dele eu poderia adicionar as funcionalidades específicas de minhas aplicações.&lt;/p&gt; &lt;p align="JUSTIFY" style="margin-bottom: 0in"&gt;De forma simples, esta aplicação (StrutsTool) cria um projeto base e conforme você for criando novas funcionalidades (models, controladores, views, …) a ferramenta irá adicioná-las a este projeto e executar toda a configuração necessária. Ou seja, é um gerador para Struts.&lt;/p&gt; &lt;p align="JUSTIFY" style="margin-bottom: 0in"&gt;&lt;span&gt;&lt;b&gt;Funcionalidades&lt;/b&gt;&lt;/span&gt;&lt;/p&gt; &lt;p align="JUSTIFY" style="margin-bottom: 0in; font-style: normal; font-weight: normal"&gt; Esta ferramenta provê, por enquanto, poucas funcionalidades, porém extremamente úteis. Mas antes de falar destas funcionalidades gostaria de listar as frameworks/APIs suportadas pelos projetos criados com esta ferramenta. São elas:&lt;/p&gt; &lt;ul&gt;  &lt;li&gt;&lt;p align="JUSTIFY" style="margin-bottom: 0in"&gt;Struts 2.2.1.1&lt;/p&gt;  &lt;/li&gt;&lt;li&gt;&lt;p align="JUSTIFY" style="margin-bottom: 0in"&gt;Struts2 jQuery  Plugin 2.5.3&lt;/p&gt;  &lt;/li&gt;&lt;li&gt;&lt;p align="JUSTIFY" style="margin-bottom: 0in"&gt;Hibernate 3.6.3&lt;/p&gt;  &lt;/li&gt;&lt;li&gt;&lt;p align="JUSTIFY" style="margin-bottom: 0in"&gt;Hibernate Validator  4.1.0&lt;/p&gt;  &lt;/li&gt;&lt;li&gt;&lt;p align="JUSTIFY" style="margin-bottom: 0in"&gt;Hibernate Search  3.4.0&lt;/p&gt;  &lt;/li&gt;&lt;li&gt;&lt;p align="JUSTIFY" style="margin-bottom: 0in"&gt;Tiles 2.2.2&lt;/p&gt;  &lt;/li&gt;&lt;li&gt;&lt;p align="JUSTIFY" style="margin-bottom: 0in"&gt;HTML Compressor 1.1&lt;/p&gt;  &lt;/li&gt;&lt;li&gt;&lt;p align="JUSTIFY" style="margin-bottom: 0in"&gt;Closure Compiler&lt;/p&gt;  &lt;/li&gt;&lt;li&gt;&lt;p align="JUSTIFY" style="margin-bottom: 0in"&gt;wro4j 1.3.6&lt;/p&gt;  &lt;/li&gt;&lt;li&gt;&lt;p align="JUSTIFY" style="margin-bottom: 0in"&gt;YUICompressor 2.4.2&lt;/p&gt;  &lt;/li&gt;&lt;li&gt;&lt;p align="JUSTIFY" style="margin-bottom: 0in"&gt;Spring Framework  3.1.0&lt;/p&gt;  &lt;/li&gt;&lt;li&gt;&lt;p align="JUSTIFY" style="margin-bottom: 0in"&gt;displaytag 1.2&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt; &lt;p align="JUSTIFY" style="margin-bottom: 0in"&gt;Agora sim vamos as funcionalidades, basicamente elas são quatro: criação de projeto, scaffolding, criação de controlador e criação de modelo. Nos próximos itens estarei fazendo uma descrição mais detalhada de cada uma destas funções.&lt;/p&gt; &lt;p align="JUSTIFY" style="margin-bottom: 0in"&gt;&lt;b&gt;&lt;span class="Apple-style-span"&gt;Criação de Projeto&lt;/span&gt;&lt;/b&gt;&lt;/p&gt; &lt;p align="JUSTIFY" style="margin-bottom: 0in; font-weight: normal"&gt;A criação de um projeto consiste apenas em descomprimir o arquivo que contém o projeto de base para aplicações. Neste projeto não existem controladores, views ou modelos. Apenas a estrutura básica de um projeto para a IDE NetBeans, além de uma série de classes utilizadas como base para a geração de aplicações e alguns arquivos de configuração para as frameworks/APIs.&lt;/p&gt; &lt;p align="JUSTIFY" style="margin-bottom: 0in"&gt;&lt;b&gt;&lt;span class="Apple-style-span"&gt;Scaffolding&lt;/span&gt;&lt;/b&gt;&lt;/p&gt; &lt;p align="JUSTIFY" style="margin-bottom: 0in; font-weight: normal"&gt;Talvez uma das funcionalidades mais interessantes da ferramenta, apesar de ser pouco flexível. Assim como em Rails, é necessário apenas informar o nome da classe e os seus atributos e tipos correspondentes. Adicionalmente, a ferramenta permite adicionar o tamanho das variáveis e em caso de relacionamentos com outras classes, indicá-los.&lt;/p&gt; &lt;p align="JUSTIFY" style="margin-bottom: 0in"&gt;&lt;b&gt;&lt;span class="Apple-style-span"&gt;Criação de Controlador e Criação de Modelo&lt;/span&gt;&lt;/b&gt;&lt;/p&gt; &lt;p align="JUSTIFY" style="margin-bottom: 0in; font-weight: normal"&gt;A criação de controlador e model é o que o nome diz, não existe mistério. Exceto que a criação de controladores com suas actions inclui a criação das views. Em uma versão futura adicionarei a opção de não criar uma view, o que algumas vezes pode ser conveniente. Quanto a criação de modelo, ele gera a entidade com validações, mapeamento, classe de acesso a dados e de serviços.&lt;/p&gt; &lt;p align="JUSTIFY" style="margin-bottom: 0in"&gt;&lt;span&gt;&lt;b&gt;Instalação do StrutsTool&lt;/b&gt;&lt;/span&gt;&lt;/p&gt; &lt;p align="JUSTIFY" style="margin-bottom: 0in; font-weight: normal"&gt;&lt;span&gt;O StrutsTool foi desenvolvido em Java, para fazer o download dele basta ir na &lt;a href="http://code.google.com/p/strutstool/downloads/list"&gt;seção de downloads&lt;/a&gt; do projeto e fazer o download dos arquivos &lt;b&gt;StrutsTool-x.x.tar.gz&lt;/b&gt; (baixe sempre a última versão) e o arquivo &lt;b&gt;lib.zip&lt;/b&gt;.&lt;/span&gt;&lt;/p&gt; &lt;p align="JUSTIFY" style="margin-bottom: 0in; font-weight: normal"&gt;&lt;span&gt;Descompacte o primeiro arquivo na pasta que achar mais conveniente. Dentro desta pasta haverá outra pasta chamada &lt;b&gt;resources&lt;/b&gt;, coloque o arquivo &lt;b&gt;lib.zip&lt;/b&gt; dentro dela. Para executar a ferramenta utilize o arquivo &lt;b&gt;strutstool&lt;/b&gt; (Linux) ou &lt;b&gt;strutstool.bat &lt;/b&gt;(Windows). Antes de executá-lo, abra-o e edite as variáveis nele declaradas, sendo elas: INSTALL_PATH (caminho da instalação do StrutsTool) e JAVA_BIN (caminho da pasta bin do Java (JRE ou JDK) ).&lt;/span&gt;&lt;/p&gt;&lt;p align="JUSTIFY" style="margin-bottom: 0in; "&gt;&lt;span class="Apple-style-span" style="font-weight: normal; "&gt;Para executar o comando sem precisar estar na pasta da ferramenta você precisa, no Linux, editar o arquivo &lt;/span&gt;&lt;b&gt;.bashrc&lt;/b&gt; e adicionar as seguintes linhas:&lt;/p&gt;&lt;p align="JUSTIFY" style="margin-bottom: 0in; "&gt;&lt;/p&gt;&lt;p align="JUSTIFY" style="margin-bottom: 0in; "&gt;&lt;span class="Apple-style-span" &gt;&lt;i&gt;PATH=$PATH:/caminho/completo/para/strutstool&lt;/i&gt;&lt;/span&gt;&lt;/p&gt;&lt;p align="JUSTIFY" style="margin-bottom: 0in; "&gt;&lt;span class="Apple-style-span" &gt;&lt;i&gt;export PATH&lt;/i&gt;&lt;/span&gt;&lt;/p&gt;&lt;p align="JUSTIFY" style="margin-bottom: 0in; "&gt;No windows basta adicionar a pasta do StrutsTool na variável de ambiente &lt;b&gt;path&lt;/b&gt;. Feito isto você pode poderá acessar o aplicativo executando: &lt;b&gt;strutstool&lt;/b&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt; &lt;p align="JUSTIFY" style="margin-bottom: 0in"&gt;&lt;span&gt;&lt;b&gt;Criando um Aplicativo&lt;/b&gt;&lt;/span&gt;&lt;/p&gt; &lt;p align="JUSTIFY" style="margin-bottom: 0in; font-weight: normal"&gt;&lt;span&gt;Feita a instalação, é hora de começar a utilizar a ferramenta para criar um aplicativo de exemplo, para demonstrar o que a ferramenta é capaz de fazer. Nosso aplicativo vai ser algo simples, com duas tabelas, uma de produtos e outra de marcas.&lt;/span&gt;&lt;/p&gt; &lt;p align="JUSTIFY" style="margin-bottom: 0in; font-weight: normal"&gt;&lt;span&gt;Neste exemplo estarei utilizando o banco de dados PostgreSQL, mas qualquer outro banco suportado pelo Hibernate irá funcionar (contanto que sejam feitas as modificações no mapeamento, se necessário). O SQL para criar as tabelas é este:&lt;/span&gt;&lt;/p&gt; &lt;p align="JUSTIFY" style="margin-bottom: 0in; font-weight: normal"&gt;&lt;span class="Apple-style-span"&gt;&lt;i&gt;&lt;span&gt;CREATE TABLE produto( &lt;/span&gt; &lt;/i&gt;&lt;/span&gt;&lt;/p&gt; &lt;p align="JUSTIFY" style="margin-bottom: 0in; font-weight: normal"&gt; &lt;span class="Apple-style-span"&gt;&lt;i&gt;&lt;span&gt;    id Serial NOT NULL, &lt;/span&gt; &lt;/i&gt;&lt;/span&gt;&lt;/p&gt; &lt;p align="JUSTIFY" style="margin-bottom: 0in; font-weight: normal"&gt; &lt;span class="Apple-style-span"&gt;&lt;i&gt;&lt;span&gt;    nome Character varying(100) NOT NULL, &lt;/span&gt; &lt;/i&gt;&lt;/span&gt;&lt;/p&gt; &lt;p align="JUSTIFY" style="margin-bottom: 0in; font-weight: normal"&gt; &lt;span class="Apple-style-span"&gt;&lt;i&gt;&lt;span&gt;    marca Integer NOT NULL &lt;/span&gt; &lt;/i&gt;&lt;/span&gt;&lt;/p&gt; &lt;p align="JUSTIFY" style="margin-bottom: 0in; font-weight: normal"&gt;&lt;span&gt;&lt;i&gt;) WITH (OIDS=FALSE);&lt;/i&gt;&lt;/span&gt;&lt;/p&gt; &lt;p align="JUSTIFY" style="margin-bottom: 0in; font-weight: normal"&gt;&lt;span&gt;&lt;i&gt;ALTER TABLE produto ADD CONSTRAINT pk_produto PRIMARY KEY (id);&lt;/i&gt;&lt;/span&gt;&lt;/p&gt; &lt;p align="JUSTIFY" style="margin-bottom: 0in; font-weight: normal"&gt;&lt;span class="Apple-style-span"&gt;&lt;i&gt;&lt;span&gt;CREATE TABLE marca( &lt;/span&gt; &lt;/i&gt;&lt;/span&gt;&lt;/p&gt; &lt;p align="JUSTIFY" style="margin-bottom: 0in; font-weight: normal"&gt; &lt;span class="Apple-style-span"&gt;&lt;i&gt;&lt;span&gt;    id Serial NOT NULL, &lt;/span&gt; &lt;/i&gt;&lt;/span&gt;&lt;/p&gt; &lt;p align="JUSTIFY" style="margin-bottom: 0in; font-weight: normal"&gt; &lt;span class="Apple-style-span"&gt;&lt;i&gt;&lt;span&gt;    nome Character varying(100) NOT NULL &lt;/span&gt; &lt;/i&gt;&lt;/span&gt;&lt;/p&gt; &lt;p align="JUSTIFY" style="margin-bottom: 0in; font-weight: normal"&gt;&lt;span&gt;&lt;i&gt;) WITH (OIDS=FALSE);&lt;/i&gt;&lt;/span&gt;&lt;/p&gt; &lt;p align="JUSTIFY" style="margin-bottom: 0in; font-weight: normal"&gt;&lt;span&gt;&lt;i&gt;ALTER TABLE marca ADD CONSTRAINT pk_marca PRIMARY KEY (id);&lt;/i&gt;&lt;/span&gt;&lt;/p&gt; &lt;p align="JUSTIFY" style="margin-bottom: 0in; font-weight: normal"&gt;&lt;span&gt;&lt;i&gt;ALTER TABLE produto ADD CONSTRAINT fk_marca_produto FOREIGN KEY (marca) REFERENCES marca (id) ON DELETE NO ACTION ON UPDATE NO ACTION;&lt;/i&gt;&lt;/span&gt;&lt;/p&gt; &lt;p align="JUSTIFY" style="margin-bottom: 0in; font-weight: normal"&gt;Criado o banco de dados, iremos agora criar um novo projeto com o StrutsTool. O comando para realizar esta operação é simples:&lt;/p&gt; &lt;p align="CENTER" style="margin-bottom: 0in"&gt;&lt;b&gt;strutstool new project loja com.app.web&lt;/b&gt;&lt;/p&gt; &lt;p align="JUSTIFY" style="margin-bottom: 0in; font-weight: normal"&gt;Este comando cria o projeto base dentro da pasta &lt;b&gt;loja/&lt;/b&gt;. Agora vamos criar o que realmente interessa nesta aplicação através do scaffolding. Primeiro vamos criar os providers (view, modelo e controlador) para a classe Produto, assim:&lt;/p&gt; &lt;p align="CENTER" style="margin-bottom: 0in"&gt;&lt;b&gt;strutstool scaffold Produto nome:string:100 marca:Marca&lt;/b&gt;&lt;/p&gt; &lt;p align="JUSTIFY" style="margin-bottom: 0in; font-weight: normal"&gt;Após executar o comando deverá aparecer na tela todos os arquivos e pastas criados e/ou modificados. Vale ressaltar que o método &lt;b&gt;scaffold&lt;/b&gt; parte da premissa de que o identificador da tabela é chamado &lt;b&gt;id&lt;/b&gt;, sendo este um valor inteiro e auto-incremento (ou que use uma sequence, como neste caso (consulte a documentação do Hibernate)).&lt;/p&gt; &lt;p align="JUSTIFY" style="margin-bottom: 0in; font-weight: normal"&gt;Outro aspecto importante é o das convenções adotadas pela ferramenta. No caso do &lt;b&gt;Produto&lt;/b&gt;, é assumido (por padrão, você pode alterar) que o nome da tabela é &lt;b&gt;produto&lt;/b&gt; e ela tem, além da chave primária &lt;b&gt;id&lt;/b&gt;, um campo chamado &lt;b&gt;nome&lt;/b&gt; de tamanho &lt;b&gt;100&lt;/b&gt;. Além disso, é criado um controlador chamado &lt;b&gt;ProdutoController&lt;/b&gt; com as actions: &lt;b&gt;index&lt;/b&gt;, &lt;b&gt;edit&lt;/b&gt;, &lt;b&gt;add&lt;/b&gt; e &lt;b&gt;delete&lt;/b&gt;.&lt;/p&gt; &lt;p align="JUSTIFY" style="margin-bottom: 0in"&gt;&lt;span style="font-weight: normal"&gt;E nas views (pasta web/WEB-INF/) é criada a pasta &lt;/span&gt;&lt;b&gt;produto&lt;/b&gt;&lt;span style="font-weight: normal"&gt; com as páginas: index.jsp, edit.jsp e add.jsp (delete utiliza jQuery). A url para acesso a action &lt;/span&gt;&lt;b&gt;index&lt;/b&gt;&lt;span style="font-weight: normal"&gt;, por exemplo, ficaria assim: &lt;/span&gt;&lt;b&gt;http://localhost:8084/loja/produto/index.action&lt;/b&gt;&lt;span style="font-weight: normal"&gt;.&lt;/span&gt;&lt;/p&gt; &lt;p align="JUSTIFY" style="margin-bottom: 0in; font-weight: normal"&gt;Estas são convenções básicas adotadas em várias frameworks conhecidas, exceto o Struts (além de outros frameworks Java), mas que através desta ferramenta poupam o desenvolvedor de configurar mais do que o necessário.&lt;/p&gt; &lt;p align="JUSTIFY" style="margin-bottom: 0in; font-weight: normal"&gt;Agora vamos gerar os providers da classe Marca. Para tanto:&lt;/p&gt; &lt;p align="CENTER" style="margin-bottom: 0in"&gt;&lt;a name="__DdeLink__3_1714848288"&gt;&lt;/a&gt;&lt;b&gt;strutstool scaffold Marca nome:string:100 produtos:set:Produto&lt;/b&gt;&lt;/p&gt; &lt;p align="JUSTIFY" style="margin-bottom: 0in; font-weight: normal"&gt;Aqui adicionamos mais um atributo a classe, &lt;b&gt;produtos:set:Produto&lt;/b&gt;, que corresponde ao relacionamento um para muitos (one-to-many) com a classe de &lt;b&gt;Produto&lt;/b&gt; (uma marca tem vários produtos). O &lt;b&gt;set&lt;/b&gt; do atributo corresponde ao tipo de Collection do Java java.util.Set. Este é o único tipo de coleção suportado pela ferramenta (não consegui fazer List funcionar com o Hibernate).&lt;/p&gt; &lt;p align="JUSTIFY" style="margin-bottom: 0in; font-weight: normal"&gt;Por padrão, a ferramenta gera relacionamentos em duas direções, portanto a classe &lt;b&gt;Produto&lt;/b&gt; poderá acessar a marca a qual pertence, bem como uma marca poderá acessar todos os seus produtos. Para quem notou, a ferramenta não checa os tipos de dados utilizados nos parâmetros. A bem da verdade, ela possui uma lista com os tipos básicos suportados e quando um tipo é desconhecido ela trata-o como um novo tipo, portanto cuidado ao informar os tipos de dados.&lt;/p&gt; &lt;p align="JUSTIFY" style="margin-bottom: 0in; font-weight: normal"&gt;Outra funcionalidade que preferi desativar era a checagem das classes existentes. Neste exemplo a classe Produto referencia a classe Marca, sendo que esta última nem sequer existe ainda. Porém, me pareceu mais prático deixar a cargo do programador cuidar destes detalhes.&lt;/p&gt; &lt;p align="JUSTIFY" style="margin-bottom: 0in; font-weight: normal"&gt;Por equanto esta ferramenta suporta apenas relacionamentos um para muitos (1:n) e muitos para um (n:1). Relacionamentos muitos para muitos (n:m) podem ser feitos com dois relacionamentos um para muitos.&lt;/p&gt; &lt;p align="JUSTIFY" style="margin-bottom: 0in; font-weight: normal"&gt;Agora que a aplicação foi gerada, é hora de abrí-la com o NetBeans e fazer algumas modificações. Basta ir em “Abrir Projeto...” e selecionar a pasta &lt;b&gt;loja. &lt;/b&gt;É provável que o NetBeans exiba um erro sobre o arquivo &lt;b&gt;build-impl.xml&lt;/b&gt;, isto ocorre devido a uma modificação que é feita durante a criação do projeto. Basta clicar em Regenerar e prosseguir normalmente.&lt;/p&gt; &lt;p align="JUSTIFY" style="margin-bottom: 0in; font-weight: normal"&gt;Com o projeto aberto precisamos fazer algumas coisas. Primeiro, adicionar o driver do banco de dados utilizado às bibliotecas do projeto. Depois disso, é preciso abrir o arquivo &lt;b&gt;hibernate.cfg.xml&lt;/b&gt; e modificar as configurações do banco de dados com o qual o Hibernate irá se comunicar.&lt;/p&gt; &lt;p align="JUSTIFY" style="margin-bottom: 0in; font-weight: normal"&gt;Ainda no arquivo de configurações do Hibernate, é preciso modificar o valor da propriedade com nome &lt;b&gt;hibernate.search.default.indexBase&lt;/b&gt;. O valor desta propriedade é o caminho absoluto para a pasta onde o Lucene irá criar os índices para as buscas. Você deve criar a pasta (dar as permissões para escrita na pasta) e informar na propriedade o caminho completo para ela, no meu arquivo a propriedade ficou assim:&lt;/p&gt; &lt;p align="CENTER" style="margin-bottom: 0in"&gt;&lt;b&gt;&lt;property name="hibernate.search.default.indexBase"&gt;/home/maycon/lucene/indexes&lt;/property&gt;&lt;/b&gt;&lt;/p&gt; &lt;p align="JUSTIFY" style="margin-bottom: 0in; font-weight: normal"&gt;Seguindo todos estes passos e com o banco de dados tal qual o deste exemplo, basta executar a aplicação e você terá criado um pequeno aplicativo web com Struts sem muito sofrimento e com pouca configuração.&lt;/p&gt; &lt;p align="JUSTIFY" style="margin-bottom: 0in"&gt;&lt;span&gt;&lt;b&gt;Alguns Ajustes&lt;/b&gt;&lt;/span&gt;&lt;/p&gt; &lt;p align="JUSTIFY" style="margin-bottom: 0in; font-weight: normal"&gt;&lt;span&gt;Para aparar um pouco as arestas deste exemplo vou sugerir algumas modificações no código, especificamente na parte visual. A primeira diz respeito ao campo &lt;i&gt;autocomplete &lt;/i&gt;&lt;span style="font-style: normal"&gt;que é criado no formulário de Produto e referencia Marca. Abra o arquivo &lt;/span&gt;&lt;span style="font-style: normal"&gt;&lt;b&gt;form.jsp&lt;/b&gt;&lt;/span&gt;&lt;span style="font-style: normal"&gt; na pasta &lt;/span&gt;&lt;span style="font-style: normal"&gt;&lt;b&gt;web/WEB-INF/produto/ &lt;/b&gt;&lt;/span&gt;&lt;span style="font-style: normal"&gt;e na tag &lt;/span&gt;&lt;span style="font-style: normal"&gt;&lt;b&gt;&lt;sj:autocompleter&gt; &lt;/sj:autocompleter&gt;&lt;/b&gt;&lt;/span&gt;&lt;span style="font-style: normal"&gt;troque o valor do atributo &lt;/span&gt;&lt;span style="font-style: normal"&gt;&lt;b&gt;listValue &lt;/b&gt;&lt;/span&gt;&lt;span style="font-style: normal"&gt;de &lt;/span&gt;&lt;span style="font-style: normal"&gt;&lt;b&gt;id &lt;/b&gt;&lt;/span&gt;&lt;span style="font-style: normal"&gt;para &lt;/span&gt;&lt;span style="font-style: normal"&gt;&lt;b&gt;nome&lt;/b&gt;&lt;/span&gt;&lt;span style="font-style: normal"&gt;. Se você adicionou alguma marca poderá ver a lista de marcas, e a medida que for digitando as marcas irão sendo filtradas.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt; &lt;p align="JUSTIFY" style="margin-bottom: 0in; font-weight: normal"&gt;&lt;span&gt;&lt;span style="font-style: normal"&gt;Talvez vocês tenham notado que na listagem de produtos, na coluna marca, ao invés de imprimir o nome da Marca está imprimindo algo como: &lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;span style="font-style: normal"&gt;com.app.web.model.entity.Marca@... Para resolver isto basta abrir a entidade Marca e sobreescrever o método toString, assim:&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt; &lt;p align="JUSTIFY" style="margin-bottom: 0in; font-style: normal; font-weight: normal"&gt; &lt;span&gt;    &lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;i&gt;@Override&lt;/i&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt; &lt;p align="JUSTIFY" style="margin-bottom: 0in; font-weight: normal"&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;i&gt;    public String toString() {&lt;/i&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt; &lt;p align="JUSTIFY" style="margin-bottom: 0in; font-weight: normal"&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;i&gt;        return nome;&lt;/i&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt; &lt;p align="JUSTIFY" style="margin-bottom: 0in; font-weight: normal"&gt;&lt;span&gt;    &lt;span&gt;&lt;span&gt;&lt;i&gt;}&lt;/i&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt; &lt;p align="JUSTIFY" style="margin-bottom: 0in; font-weight: normal"&gt;&lt;span&gt;&lt;span style="font-style: normal"&gt;A segunda modificação é apenas para dar um exemplo de como se criam links para actions. Vou colocar os links na página inicial. Para fazer isso abra o arquivo &lt;/span&gt;&lt;span style="font-style: normal"&gt;&lt;b&gt;redirect.jsp&lt;/b&gt;&lt;/span&gt;&lt;span style="font-style: normal"&gt; na pasta &lt;/span&gt;&lt;span style="font-style: normal"&gt;&lt;b&gt;web/WEB-INF/&lt;/b&gt;&lt;/span&gt;&lt;span style="font-style: normal"&gt;. Substitua o conteúdo do arquivo por isto:&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p align="JUSTIFY" style="text-align: center;margin-bottom: 0in; font-weight: normal; "&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 238); -webkit-text-decorations-in-effect: underline; "&gt;&lt;span class="Apple-style-span" style="-webkit-text-decorations-in-effect: underline; "&gt;&lt;img src="http://3.bp.blogspot.com/-8ypXUL-uhAY/TcFmCkFlH5I/AAAAAAAAAAU/euwPLCsnEzQ/s400/Screenshot.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5602871605658460050" style="display: block; margin-top: 0px; margin-right: auto; margin-bottom: 10px; margin-left: auto; text-align: center; cursor: pointer; width: 400px; height: 168px; " /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 238); -webkit-text-decorations-in-effect: underline; "&gt;&lt;span class="Apple-style-span" style="-webkit-text-decorations-in-effect: underline; "&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 238); -webkit-text-decorations-in-effect: underline; "&gt;&lt;/span&gt;&lt;/div&gt;&lt;p align="JUSTIFY" style="margin-bottom: 0in; font-weight: normal"&gt;Acho que não há necessidade de maiores explicações sobre o código acima, para maiores detalhes existe a &lt;a href="https://struts.apache.org/2.2.1.1/docs/home.html"&gt;documentação do Struts 2&lt;/a&gt;, mais especificamente a &lt;a href="https://struts.apache.org/2.0.14/docs/tag-reference.html"&gt;referência das tags dele&lt;/a&gt;. Ainda sobre o arquivo &lt;b&gt;redirect.jsp&lt;/b&gt;, se você precisar exibir como página inicial uma action, usê-o da seguinte forma:&lt;/p&gt;&lt;p align="JUSTIFY" style="margin-bottom: 0in; font-weight: normal"&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 238); -webkit-text-decorations-in-effect: underline; "&gt;&lt;img src="http://1.bp.blogspot.com/-cKL52kdfo7g/TcFmdnKn2iI/AAAAAAAAAAc/bk6VZuHgr-k/s400/Screenshot-1.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5602872070341384738" style="display: block; margin-top: 0px; margin-right: auto; margin-bottom: 10px; margin-left: auto; text-align: center; cursor: pointer; width: 400px; height: 143px; " /&gt;&lt;/span&gt;&lt;/p&gt;&lt;div&gt;Assim você estará redirecionando o usuário para, neste exemplo, a action &lt;b&gt;index&lt;/b&gt; do controlador de &lt;b&gt;login&lt;/b&gt;.&lt;/div&gt; &lt;p align="JUSTIFY" style="margin-bottom: 0in; font-style: normal"&gt;&lt;span&gt;&lt;b&gt;Lucene Search&lt;/b&gt;&lt;/span&gt;&lt;/p&gt; &lt;p align="JUSTIFY" style="margin-bottom: 0in; font-style: normal; font-weight: normal"&gt; &lt;span&gt;O Lucene é uma engine de busca para textos muito poderosa, escrita em Java. Como foi colocado ateriormente, é preciso informar uma pasta onde o Lucene irá criar os índices para as buscas. Estes índices são criados automaticamente quando dados são inseridos, modificados ou removidos. Entretanto, caso você já possua dados no seu banco, terá de executar um comando uma vez na aplicação para criar o índice inicial. Para fazer isso com a tabela de marcas, por exemplo, você precisaria executar o seguinte código:&lt;/span&gt;&lt;/p&gt; &lt;p align="CENTER" style="margin-bottom: 0in; font-style: normal"&gt;&lt;span&gt;&lt;b&gt;new MarcaRepositoryHibernate().createInitialLuceneIndex();&lt;/b&gt;&lt;/span&gt;&lt;/p&gt; &lt;p align="JUSTIFY" style="margin-bottom: 0in; font-style: normal; font-weight: normal"&gt; &lt;span&gt;Pronto, índice criado, já é possível remover o código da aplicação. Espero futuramente inserir esta funcionalidade no StrutsTool.&lt;/span&gt;&lt;/p&gt; &lt;p align="JUSTIFY" style="margin-bottom: 0in"&gt;&lt;span&gt;&lt;b&gt;Para finalizar&lt;/b&gt;&lt;/span&gt;&lt;/p&gt; &lt;p align="JUSTIFY" style="margin-bottom: 0in; font-weight: normal"&gt;&lt;span&gt;Acredito que até o fim deste semestre estarei empenhado no desenvolvimento desta ferramenta, adicionando novas funcionalidades (testes unitários com JUnit e JMock, por exemplo) e, é claro, corrigindo eventuais (provavéis) bugs. Não sei se esta ferramenta terá grande utilidade para outras pessoas, estou desenvolvendo ela de acordo com minhas necessidades.&lt;/span&gt;&lt;/p&gt; &lt;p align="JUSTIFY" style="margin-bottom: 0in; font-weight: normal"&gt;&lt;span&gt;Espero que a ferramenta tenha alguma utilidade para quem esteja lendo isto. E para quem vai utilizá-la no desenvolvimento de aplicações recomendo logo abaixo alguns sites de referência para consulta, até porque a existência de um gerador não significa que você não deva saber como as coisas funcionam por baixo.&lt;/span&gt;&lt;/p&gt; &lt;p align="JUSTIFY" style="margin-bottom: 0in"&gt;&lt;span&gt;&lt;b&gt;Links Recomendados&lt;/b&gt;&lt;/span&gt;&lt;/p&gt; &lt;ul&gt;  &lt;li&gt;&lt;p align="JUSTIFY" style="margin-bottom: 0in"&gt;&lt;a href="http://www.mkyong.com/"&gt;http://www.mkyong.com/&lt;/a&gt;  – o mais completo site de tutoriais para Spring, Hibernate,  Struts, …&lt;/p&gt;  &lt;/li&gt;&lt;li&gt;&lt;p align="JUSTIFY" style="margin-bottom: 0in"&gt;&lt;a href="http://vaannila.com/"&gt;http://vaannila.com/&lt;/a&gt;  – outro site com muitos bons tutoriais para Struts, Tiles,  Validator e Hibernate&lt;/p&gt;  &lt;/li&gt;&lt;li&gt;&lt;p align="JUSTIFY" style="margin-bottom: 0in"&gt;&lt;a href="http://www.weinfreund.de/struts2-jquery-showcase/index.action"&gt;http://www.weinfreund.de/struts2-jquery-showcase/index.action&lt;/a&gt;  – vários exemplos de como utilizar o plugin jQuery para Struts&lt;/p&gt;  &lt;/li&gt;&lt;li&gt;&lt;p align="JUSTIFY" style="margin-bottom: 0in"&gt;&lt;a href="http://www.hibernate.org/docs"&gt;http://www.hibernate.org/docs&lt;/a&gt;&lt;/p&gt;  &lt;/li&gt;&lt;li&gt;&lt;p align="JUSTIFY" style="margin-bottom: 0in"&gt;&lt;a href="http://www.hibernate.org/subprojects/search/docs"&gt;http://www.hibernate.org/subprojects/search/docs&lt;/a&gt;&lt;/p&gt;  &lt;/li&gt;&lt;li&gt;&lt;p align="JUSTIFY" style="margin-bottom: 0in"&gt;&lt;a href="http://www.hibernate.org/subprojects/validator/docs"&gt;http://www.hibernate.org/subprojects/validator/docs&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1900921458821518619-4383512916348988263?l=foojava.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://foojava.blogspot.com/feeds/4383512916348988263/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://foojava.blogspot.com/2011/05/strutstool-desenvolvendo-aplicacoes-em.html#comment-form' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1900921458821518619/posts/default/4383512916348988263'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1900921458821518619/posts/default/4383512916348988263'/><link rel='alternate' type='text/html' href='http://foojava.blogspot.com/2011/05/strutstool-desenvolvendo-aplicacoes-em.html' title='StrutsTool: Desenvolvendo Aplicações em Struts sem Sofrimento'/><author><name>Maycon</name><uri>http://www.blogger.com/profile/16503379532589424850</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/-8ypXUL-uhAY/TcFmCkFlH5I/AAAAAAAAAAU/euwPLCsnEzQ/s72-c/Screenshot.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1900921458821518619.post-7496898654537796564</id><published>2011-05-03T13:47:00.001-03:00</published><updated>2011-05-03T13:50:19.314-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='Struts2'/><category scheme='http://www.blogger.com/atom/ns#' term='Hibernate'/><category scheme='http://www.blogger.com/atom/ns#' term='Struts'/><category scheme='http://www.blogger.com/atom/ns#' term='NetBeans'/><title type='text'>Deleção/Delete/Exclusão de dados com Struts2 e Hibernate em Netbeans</title><content type='html'>Continuando o projeto, agora vamos implementar o delete. Basicamente vamos colocar um link de delete na view da listagem, quando clicar, chama uma action que apaga e volta para a lista.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: large;"&gt;&lt;b&gt;Modificando a view&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;Na view (arquivo jsp), vamos adicionar um link, chamando a action, com um parâmetro. Adicionamos mais uma coluna na tabela. (clique na figura para ampliar)&lt;br /&gt;&lt;a href="http://2.bp.blogspot.com/-WP-ms5Ri7GY/TcAtVuRlrEI/AAAAAAAAA40/CHIySj0cNSY/s1600/03-implemente-a-view.png" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="475" src="http://2.bp.blogspot.com/-WP-ms5Ri7GY/TcAtVuRlrEI/AAAAAAAAA40/CHIySj0cNSY/s640/03-implemente-a-view.png" width="640" /&gt;&lt;/a&gt;&lt;br /&gt;Estamos passando o parâmetro &lt;b&gt;id&lt;/b&gt;, por isso, depois lá na action teremos que criar um&lt;b&gt; atributo id&lt;/b&gt; e implementar os getters e os setters.&lt;br /&gt;&lt;span style="font-size: large;"&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: large;"&gt;&lt;b&gt;Modificando a DAO&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;Na DAO, temos que implementar o método delete. Para isso precisamos importar a &lt;i&gt;&lt;b&gt;org.hibernate.Transaction&lt;/b&gt;&lt;/i&gt;, já que o hibernate por baixo vai rodar um &lt;i&gt;delete from&lt;/i&gt; ...&lt;br /&gt;&lt;a href="http://3.bp.blogspot.com/-XXJDAMLyGWo/TcAtS_J4IdI/AAAAAAAAA4s/TNTbWwqPXS8/s1600/01-implemente-a-dao.png" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://3.bp.blogspot.com/-XXJDAMLyGWo/TcAtS_J4IdI/AAAAAAAAA4s/TNTbWwqPXS8/s1600/01-implemente-a-dao.png" /&gt;&lt;/a&gt; &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: large;"&gt;&lt;b&gt;Modificando a action&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;Preste atenção na linha 8, declaramos o atributo &lt;b&gt;id&lt;/b&gt;, igual passamos no parâmetro lá na view. Implementamos os &lt;i&gt;getters&lt;/i&gt; e os &lt;i&gt;setters&lt;/i&gt; para o id e também o método que efetivamente responde a ação do usuário e chama a DAO no método de exclusão.&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&amp;nbsp;&lt;/b&gt;&lt;a href="http://4.bp.blogspot.com/-NFtuaU8q0Zc/TcAtUbyJUkI/AAAAAAAAA4w/sOhLapiFQMo/s1600/02-implemente-a-action.png" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://4.bp.blogspot.com/-NFtuaU8q0Zc/TcAtUbyJUkI/AAAAAAAAA4w/sOhLapiFQMo/s1600/02-implemente-a-action.png" /&gt;&lt;/a&gt; &lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: large;"&gt;&lt;b&gt;Ajustando os mapeamentos&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;No arquivo struts.xml temos que mapear que quando chamarmos na URL "ListTodolistDelete" deve chamar o método apropriado na action. Quando isso for processado deve redirecionar para "ListTodolist", é isso que faz o type="redirect" na linha 14. (clique na figura para ampliar)&lt;br /&gt;&lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/-kTZcPii86GY/TcAtWPyIfqI/AAAAAAAAA44/VOEhqi8yLr8/s1600/04-configure-struts.png" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="299" src="http://1.bp.blogspot.com/-kTZcPii86GY/TcAtWPyIfqI/AAAAAAAAA44/VOEhqi8yLr8/s640/04-configure-struts.png" width="640" /&gt;&lt;/a&gt; &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: large;"&gt;&lt;b&gt;Rodando a aplicação&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;Salve tudo, "clean and build" e depois "run". Delete funcionando.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://3.bp.blogspot.com/-OJ5zFeGb5E0/TcAtXH96n_I/AAAAAAAAA48/u8HsxAIGFhQ/s1600/05-rode-aplicacao.png" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://3.bp.blogspot.com/-OJ5zFeGb5E0/TcAtXH96n_I/AAAAAAAAA48/u8HsxAIGFhQ/s1600/05-rode-aplicacao.png" /&gt;&lt;/a&gt; &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;No próximo faremos o cadastro.&lt;br /&gt;Saudações!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1900921458821518619-7496898654537796564?l=foojava.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://foojava.blogspot.com/feeds/7496898654537796564/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://foojava.blogspot.com/2011/05/delecaodeleteexclusao-de-dados-com.html#comment-form' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1900921458821518619/posts/default/7496898654537796564'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1900921458821518619/posts/default/7496898654537796564'/><link rel='alternate' type='text/html' href='http://foojava.blogspot.com/2011/05/delecaodeleteexclusao-de-dados-com.html' title='Deleção/Delete/Exclusão de dados com Struts2 e Hibernate em Netbeans'/><author><name>Helton Eduardo Ritter</name><uri>http://www.blogger.com/profile/08450017811928254585</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://3.bp.blogspot.com/_MvDshKp6n3U/TTMBkVo0g0I/AAAAAAAAA0o/-g6L_zkBVSI/S220/SDC13821.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/-WP-ms5Ri7GY/TcAtVuRlrEI/AAAAAAAAA40/CHIySj0cNSY/s72-c/03-implemente-a-view.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1900921458821518619.post-2626927222382324867</id><published>2011-05-02T21:21:00.000-03:00</published><updated>2011-05-02T21:21:28.495-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='Struts2'/><category scheme='http://www.blogger.com/atom/ns#' term='Struts'/><category scheme='http://www.blogger.com/atom/ns#' term='NetBeans'/><title type='text'>Listagem de dados com Struts2 e Hibernate em Netbeans</title><content type='html'>Olá, Inicia-se hoje uma série de tutoriais (começando por esse) de como fazer o elementar (CRUD) usando Struts2 com Hibernate em uma aplicação web. Usaremos como IDE o Netbeans com o &lt;a href="http://foojava.blogspot.com/2011/03/netbeans-tomcat-struts2-hibernate-linux.html"&gt;plugin do Struts2&lt;/a&gt;. Para acompanhar esse tutorial, é recomendado que tenha lido o &lt;a href="http://foojava.blogspot.com/2011/04/ola-mundo-com-struts2-e-netbeans.html"&gt;post anterior introdutório ao assunto&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;span style="font-size: large;"&gt;Criando o banco de dados&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;No exemplo usamos PostgreSQL. A estrutura do banco de dados é a seguinte.&lt;br /&gt;Banco: todolist&lt;br /&gt;&lt;pre class="sql" name="code"&gt;CREATE TABLE todolist&lt;br /&gt;(&lt;br /&gt;   id serial, &lt;br /&gt;   descricao character varying(200), &lt;br /&gt;   feito character(1), &lt;br /&gt;   CONSTRAINT pk_todolist PRIMARY KEY (id)&lt;br /&gt;) &lt;br /&gt;WITH (&lt;br /&gt;  OIDS = FALSE&lt;br /&gt;)&lt;br /&gt;;&lt;br /&gt;&lt;br /&gt;insert into todolist (descricao,feito) values ('Fazer o pos no foojava.blogspo.com','S');&lt;br /&gt;insert into todolist (descricao,feito) values ('Terminar a leitura do livro the long tail','N');&lt;br /&gt;insert into todolist (descricao,feito) values ('Fazer artigo da prática de e-commerce','N');&lt;br /&gt;insert into todolist (descricao,feito) values ('Terminar os layouts do sistema da COTRIMAIO','N');&lt;br /&gt;insert into todolist (descricao,feito) values ('Estudar para prova de adm mercadológica','N');&lt;br /&gt;insert into todolist (descricao,feito) values ('Estudar para prova de Redes e sist. distribuídos','N');&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;span style="font-size: large;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&lt;span style="font-size: large;"&gt;Criando o projeto&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;Na nossa IDE, criamos um projeto web, vou chamar de &lt;b&gt;todolist&lt;/b&gt;.&lt;br /&gt;&lt;br /&gt;Vamos lá! &lt;i&gt;file&lt;/i&gt; &amp;gt; &lt;i&gt;New project&lt;/i&gt;. &lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-KN24WHri_y8/Tb81E6czsvI/AAAAAAAAA3A/yY0jZYs8bN8/s1600/Bildschirmfoto.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://4.bp.blogspot.com/-KN24WHri_y8/Tb81E6czsvI/AAAAAAAAA3A/yY0jZYs8bN8/s1600/Bildschirmfoto.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&amp;nbsp;Chamei de &lt;b&gt;todolist&lt;/b&gt;, salvando no meu home, diretório padrão.&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-IwJvhNckPxI/Tb81FnD-goI/AAAAAAAAA3E/v3ZT7YFz2-c/s1600/Bildschirmfoto-1.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://3.bp.blogspot.com/-IwJvhNckPxI/Tb81FnD-goI/AAAAAAAAA3E/v3ZT7YFz2-c/s1600/Bildschirmfoto-1.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;Agora, escolha o Apache Tomcat (se aparecer mais algum na lista). O resto dessa tela aceite as sugestões da IDE.&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-6ZRW9XtlP8c/Tb81GeZ9dVI/AAAAAAAAA3I/CKqGww8lWNk/s1600/Bildschirmfoto-2.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://3.bp.blogspot.com/-6ZRW9XtlP8c/Tb81GeZ9dVI/AAAAAAAAA3I/CKqGww8lWNk/s1600/Bildschirmfoto-2.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;Aqui, você &lt;b&gt;marca&lt;/b&gt; o &lt;b&gt;Struts2&lt;/b&gt;, e &lt;b&gt;desmarca&lt;/b&gt; para ele criar o arquivo de exemplo do &lt;b&gt;struts2&lt;/b&gt;. Nesta mesma figura tem mais um item para marcar, seguimos abaixo. &lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-Ghz8RrkY_hM/Tb81G41uY9I/AAAAAAAAA3M/Re-TSwAa_OI/s1600/Bildschirmfoto-3.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://4.bp.blogspot.com/-Ghz8RrkY_hM/Tb81G41uY9I/AAAAAAAAA3M/Re-TSwAa_OI/s1600/Bildschirmfoto-3.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;b&gt;Marque o Hibernate&lt;/b&gt;, mas não dê finish ainda, vamos aproveitar para fazer já a conexão&amp;nbsp; com o banco de dados. No combo destacado abaixo, crie uma nova conexão.&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-VpU8w6P7yRU/Tb81HrqkSXI/AAAAAAAAA3Q/sGvSCblD-g0/s1600/Bildschirmfoto-4.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://1.bp.blogspot.com/-VpU8w6P7yRU/Tb81HrqkSXI/AAAAAAAAA3Q/sGvSCblD-g0/s1600/Bildschirmfoto-4.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;Aqui escolhi conectar com PostgreSQL, informo usuário, senha, banco ... Quando dou ok, devo selecionar qual schema (próxima tela), se as informações dessa tela conectaram no banco. &lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-lKJnEk4jRhE/Tb81IorYckI/AAAAAAAAA3U/-brFc7O4Rkc/s1600/Bildschirmfoto-5.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://1.bp.blogspot.com/-lKJnEk4jRhE/Tb81IorYckI/AAAAAAAAA3U/-brFc7O4Rkc/s1600/Bildschirmfoto-5.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&amp;nbsp;Escolha o schema public. Agora sim, ok.&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-vXNmX_YQ8Fg/Tb81JFaMeEI/AAAAAAAAA3Y/LkqBriqDPmg/s1600/Bildschirmfoto-6.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://2.bp.blogspot.com/-vXNmX_YQ8Fg/Tb81JFaMeEI/AAAAAAAAA3Y/LkqBriqDPmg/s1600/Bildschirmfoto-6.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;E Finish!&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-O85EPCSYyts/Tb81J73UoKI/AAAAAAAAA3c/lI8NhHBhVoo/s1600/Bildschirmfoto-7.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://1.bp.blogspot.com/-O85EPCSYyts/Tb81J73UoKI/AAAAAAAAA3c/lI8NhHBhVoo/s1600/Bildschirmfoto-7.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;A essa altura o NetBeans incluiu as bibliotecas necessárias, fez uma configuração básica já do struts, hibernate o do web.xml (que define o projeto web).&lt;br /&gt;&lt;br /&gt;Abaixo você pode ver a web.xml, que define quem é a página inicial quando esse projeto for rodado. &lt;br /&gt;&lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/-FgBqeejcjhA/Tb81KyQvTzI/AAAAAAAAA3k/pi_FhhMwPIc/s1600/Bildschirmfoto-9.png" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://1.bp.blogspot.com/-FgBqeejcjhA/Tb81KyQvTzI/AAAAAAAAA3k/pi_FhhMwPIc/s1600/Bildschirmfoto-9.png" /&gt;&lt;/a&gt; &lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;span style="font-size: large;"&gt;Definindo a Model&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Projeto criado, hora de fazer a classe que fará o mapeamento do banco de dados. Essa classe será usada pelo hibernate, portanto, depois você terá que adicionar as anotations.&lt;br /&gt;&lt;br /&gt;Crie um novo pacote, chame-o de model.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-qu23yjVCiuo/Tb81KcAx8WI/AAAAAAAAA3g/5IHKeKcZqdQ/s1600/Bildschirmfoto-8.png" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://1.bp.blogspot.com/-qu23yjVCiuo/Tb81KcAx8WI/AAAAAAAAA3g/5IHKeKcZqdQ/s1600/Bildschirmfoto-8.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;Dentro da model, clique com o direito e crie um novo "HibernateUtil", mudei apenas&amp;nbsp; o nome do arquivo em relação ao que a IDE me sugeriu.&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-sPUiWfEZY_g/Tb81Ln5yhOI/AAAAAAAAA3o/yv2TJe_TP8k/s1600/Bildschirmfoto-10.png" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://3.bp.blogspot.com/-sPUiWfEZY_g/Tb81Ln5yhOI/AAAAAAAAA3o/yv2TJe_TP8k/s1600/Bildschirmfoto-10.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;Na tela anterior a IDE vai gerar um arquivo (HibernateUtil.java), ele está certo, não tem que mudar nada.&lt;br /&gt;&lt;br /&gt;Agora dentro do pacote model, você precisa fazer a classe que mapeia o seu banco. Então, dentro da model, crie uma nova classe java. O nome dela é o nome da tabela no banco que essa classe vai representar, apenas com o primeiro caracter em maiúsculo.&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-ShDGmpwfWvk/Tb81OjGsJ5I/AAAAAAAAA3s/OetB1MUVglI/s1600/Bildschirmfoto-12.png" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://3.bp.blogspot.com/-ShDGmpwfWvk/Tb81OjGsJ5I/AAAAAAAAA3s/OetB1MUVglI/s1600/Bildschirmfoto-12.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;Na tela abaixo, criei os atributos (linhas 13, 14 e 15), cliquei com o direito em "refactory" e depois em "Encapsulate fields", marquei que ele deveria gerar os geters e os seters de todos os atributos e sem comentários. Pronto! Gerou o código que você vê abaixo. &lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-Cl6hI_ylyV8/Tb81PKfhRQI/AAAAAAAAA3w/0c1BTqQMhl0/s1600/Bildschirmfoto-14.png" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://1.bp.blogspot.com/-Cl6hI_ylyV8/Tb81PKfhRQI/AAAAAAAAA3w/0c1BTqQMhl0/s1600/Bildschirmfoto-14.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;Bom, agora nessa mesma classe, temos que identificar para o Hibernate que isso representa uma tabela.&amp;nbsp; Então adicione as anotações das linhas 18, 19, 21 e 22.&lt;br /&gt;&lt;br /&gt;Quando fizer isso vai a IDE vai ficar te apontando warnings, ctrl+enter em cima do warning (em cima do @Id por exemplo, @table) e faça os imports, todos do pacote &lt;b&gt;javax&lt;/b&gt;. Não pegue os do hibernate.&lt;br /&gt;&lt;br /&gt;Veja o código final da classe model na figura seguinte.&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-ebkjl4-ab6M/Tb81P4U428I/AAAAAAAAA30/DE5iDgvBj88/s1600/Bildschirmfoto-15.png" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://1.bp.blogspot.com/-ebkjl4-ab6M/Tb81P4U428I/AAAAAAAAA30/DE5iDgvBj88/s1600/Bildschirmfoto-15.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: large;"&gt;&lt;b&gt;Criando a DAO (Data Access Object)&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;O nosso objeto de acesso a dados, nada mais é do aque algo que usa a model, e em cima disso cria as SQL's que deverão ser rodadas no banco para a aplicação trazer os dados/ fazer as ações que precisa.&lt;br /&gt;&lt;br /&gt;Crie um &lt;b&gt;novo pacote&lt;/b&gt;, chame-o de &lt;b&gt;dao&lt;/b&gt;. &lt;br /&gt;&lt;br /&gt;&amp;nbsp;Dentro do dao, crie uma classe chamada &lt;b&gt;TodolistDAO&lt;/b&gt;.&lt;br /&gt;&amp;nbsp; &lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-VhRGUPXpySI/Tb81QdBvGrI/AAAAAAAAA34/y4aQXLFYFM4/s1600/Bildschirmfoto-16.png" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://1.bp.blogspot.com/-VhRGUPXpySI/Tb81QdBvGrI/AAAAAAAAA34/y4aQXLFYFM4/s1600/Bildschirmfoto-16.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;Como esse exemplo é só uma listagem, não precisamos dos métodos para inserir, deletar, update, buscar dados de só um registro (para trazer para edição), então implementamos apenas o médoto de listagem de dados.&lt;br /&gt;&lt;br /&gt;O que temos no código abaixo. Bom primeio criamos um atributo chamado session, essa session na verdade representa a conexão com o BD (linha 19).&lt;br /&gt;&lt;br /&gt;Então, no construtor da classe (linhas 21, 22 e 23) dizemos que a session manda abrir uma sessão (conexão) que quem define é o HibernateUtils que criamos antes.&lt;br /&gt;&lt;br /&gt;E depois, nas linhas 24 em diante, implementamos o método que retorna uma lista de dados. Veja que a gente não escreve SQL nenhuma, o hibernate faz isso.&lt;br /&gt;&lt;br /&gt;* Os imports dessa classe sim, &lt;b&gt;são do hibernate&lt;/b&gt; (org.hibernate) e &lt;b&gt;não do javax&lt;/b&gt;.&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-r3XudrweNd4/Tb81RHI9GDI/AAAAAAAAA38/edtkMo0jFqU/s1600/Bildschirmfoto-17.png" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://4.bp.blogspot.com/-r3XudrweNd4/Tb81RHI9GDI/AAAAAAAAA38/edtkMo0jFqU/s1600/Bildschirmfoto-17.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;Nos próximos post's mudaremos essa classe da dao para implementar as demais operaçãos.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: large;"&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: large;"&gt;&lt;b&gt;Implementando a Action (controller)&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;A action não é bem um controller, mas ela tem ligação direta (da a resposta) para uma ação do usuário (que mais tarde será mapeada no struts.xml), então dava para dizer que o struts.xml + a action é o que a gente normalmente implementa em um controller.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Crie um pacote chamado action&lt;/b&gt;. E dentro dele a classe seguinte: &lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-oyTE8127pnY/Tb81RlT6ysI/AAAAAAAAA4A/Yk1offnElGI/s1600/Bildschirmfoto-18.png" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://4.bp.blogspot.com/-oyTE8127pnY/Tb81RlT6ysI/AAAAAAAAA4A/Yk1offnElGI/s1600/Bildschirmfoto-18.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;Aqui da mesma forma, criei o atributo na linha 17, depois deu refactor &amp;gt; encapsulate fields, e então implementei o código das linhas 27-30.&lt;br /&gt;&lt;br /&gt;Explicando, essa propriedade é o valor que vai ser passado para view depois, portanto lá (na view) haverá um objeto chamado "todolist", porque assim o fizemos na linha 17 deste arquivo.&lt;br /&gt;&lt;br /&gt;Aqui precisamos dar import na classe correspondente da &lt;b&gt;dao&lt;/b&gt; e do &lt;b&gt;model&lt;/b&gt;.&lt;br /&gt;&lt;br /&gt;Perceba que o que você vai pagar na view é o que é setado (assessor set), no caso na minha linha 28, onde ele recebe a execução do método que implementamos na dao antes.&lt;br /&gt;&lt;br /&gt;Mas e o get (assessor get)? Faça-o! O struts precisa disso.&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-d5avvNWVAZc/Tb81SXa73yI/AAAAAAAAA4E/ikpptNuP58Y/s1600/Bildschirmfoto-19.png" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://1.bp.blogspot.com/-d5avvNWVAZc/Tb81SXa73yI/AAAAAAAAA4E/ikpptNuP58Y/s1600/Bildschirmfoto-19.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;O return de "SUCESSO" será usado depois no mapeamento, quando esse método retornar "SUCESSO" deve fazer o que... mais adiante. Calma aí.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: large;"&gt;&lt;b&gt;Criando o JSP (view)&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;O JSP é a nossa view, quanto menos processamento, código, regra de negócio rodar aqui melhor!&lt;br /&gt;&lt;br /&gt;Lembra que antes no web.xml estava definido que o index.jsp era a página padrão da nossa aplicação. Vamos modificá-lo, fazer um link de acesso a tela/ação que traz a listagem. Segue (mudanças destacadas)&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-Tc53b9gu__Q/Tb81S_7K1vI/AAAAAAAAA4I/DScjRb4QWzU/s1600/Bildschirmfoto-20.png" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://4.bp.blogspot.com/-Tc53b9gu__Q/Tb81S_7K1vI/AAAAAAAAA4I/DScjRb4QWzU/s1600/Bildschirmfoto-20.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;Crie uma nova página jsp, essa será usada para printar as dados retornados pelo método da action. Chamei de &lt;b&gt;todolist-list&lt;/b&gt;. O final (&lt;b&gt;-list&lt;/b&gt;) é porque depois vai haver um &lt;b&gt;-ins&lt;/b&gt;, &lt;b&gt;-edit&lt;/b&gt; ...&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-_YU2Bd-aReE/Tb81TTjqbYI/AAAAAAAAA4M/ChK4urQ1bEU/s1600/Bildschirmfoto-21.png" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://4.bp.blogspot.com/-_YU2Bd-aReE/Tb81TTjqbYI/AAAAAAAAA4M/ChK4urQ1bEU/s1600/Bildschirmfoto-21.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;Logo no início, adicione o que eu tenho na linha 6.&lt;br /&gt;Depois, na 18 a 33, temos uma tabela para listar os dados, as primeiras linhas são o cabeçalho, depois iteramos o objeto &lt;b&gt;todolist&lt;/b&gt; (linha 25) e mostramos os campos (assim como está definido no model). E é isso.&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-Gbf0UWxjPy0/Tb81ULNcE2I/AAAAAAAAA4Q/06RgKUTgYyg/s1600/Bildschirmfoto-22.png" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://2.bp.blogspot.com/-Gbf0UWxjPy0/Tb81ULNcE2I/AAAAAAAAA4Q/06RgKUTgYyg/s1600/Bildschirmfoto-22.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;span style="font-size: large;"&gt; &lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&lt;span style="font-size: large;"&gt;Ajustando os mapeamentos&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Bom, vamos ajustar algumas coisas no hibernate.xml para ajudarmos a debugar se for preciso, e temos que mapear aqui a model.&lt;br /&gt;&lt;br /&gt;Adicione os itens indicados. &lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-UNmxvv9PJGU/Tb81UsJw1hI/AAAAAAAAA4U/hkn_tly4B-w/s1600/Bildschirmfoto-23.png" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://1.bp.blogspot.com/-UNmxvv9PJGU/Tb81UsJw1hI/AAAAAAAAA4U/hkn_tly4B-w/s1600/Bildschirmfoto-23.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&amp;nbsp;Clique em xml (antes estava em design) e adicione o mapeamento da classe onde está a definição da tabela.&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/--cETTmIt53M/Tb81VPDxFEI/AAAAAAAAA4Y/5-9HtyeJV_M/s1600/Bildschirmfoto-23b.png" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://4.bp.blogspot.com/--cETTmIt53M/Tb81VPDxFEI/AAAAAAAAA4Y/5-9HtyeJV_M/s1600/Bildschirmfoto-23b.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;No struts.xml, temos dizer quem responde pela aquela ação que colocamos lá no href do link no index.jsp. Assim definimos que tal ação, quando invocada chama tal classe, em tal método. &lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-HPtTM_Y1Bcs/Tb81Vk9vQmI/AAAAAAAAA4c/GqAVIJT_o4U/s1600/Bildschirmfoto-24.png" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://4.bp.blogspot.com/-HPtTM_Y1Bcs/Tb81Vk9vQmI/AAAAAAAAA4c/GqAVIJT_o4U/s1600/Bildschirmfoto-24.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;Bem no fim, adicione o que eu tenho na linha 14, isso faz as mensagens de erro do java serem mais amigáveis. Coloque para false antes de publicar a aplicação.&lt;br /&gt;&lt;br /&gt;Em cima do projeto (botão auxliliar) clique em "clean and build" e depois em "run".&lt;br /&gt;&lt;b&gt;&lt;span style="font-size: large;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&lt;span style="font-size: large;"&gt;Rodando a aplicação&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Quando você da "run" no projeto, o NetBeans da deploy automático, exceto das coisas da camada de persistência, portanto sempre que mexer em alguma coisa do hibernate, de "clean and build" antes do "run"&lt;br /&gt;&lt;br /&gt;Executando, teremos algo parecido com isso:&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-FWdB147wTHU/Tb81WYMWp4I/AAAAAAAAA4g/if2tyDPdPlQ/s1600/Bildschirmfoto-26.png" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://3.bp.blogspot.com/-FWdB147wTHU/Tb81WYMWp4I/AAAAAAAAA4g/if2tyDPdPlQ/s1600/Bildschirmfoto-26.png" /&gt;&lt;/a&gt;&lt;/div&gt;&amp;nbsp;Clicando no link, que chama a ação, a action processa, devolve os dados e passa para view. E está aí!&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-rwUB1tC0SVg/Tb81W3wzmAI/AAAAAAAAA4k/DWq94WSCFCE/s1600/Bildschirmfoto-28.png" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://1.bp.blogspot.com/-rwUB1tC0SVg/Tb81W3wzmAI/AAAAAAAAA4k/DWq94WSCFCE/s1600/Bildschirmfoto-28.png" /&gt;&lt;/a&gt;&lt;/div&gt;Achou muita tralha para pouca coisa? Eu também. Mas pior sem frameworks. Deve ser por isso que a lenda diz que pagam bem para programador java.&lt;br /&gt;&lt;br /&gt;Nos próximos, exclusão, cadastro, e edição.&lt;br /&gt;&lt;br /&gt;Com chave estrangeira? Com chave estrangeira? Acompanhe o blog... quem sabe sai alguma coisa.&lt;br /&gt;&lt;br /&gt;* Daqui um tempo (um mês por aí) vai começar uma série de posts de programação para Android, usando a SDK deles, com Java!&lt;br /&gt;&lt;br /&gt;Foo!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1900921458821518619-2626927222382324867?l=foojava.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://foojava.blogspot.com/feeds/2626927222382324867/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://foojava.blogspot.com/2011/05/listagem-de-dados-com-struts2-e.html#comment-form' title='2 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1900921458821518619/posts/default/2626927222382324867'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1900921458821518619/posts/default/2626927222382324867'/><link rel='alternate' type='text/html' href='http://foojava.blogspot.com/2011/05/listagem-de-dados-com-struts2-e.html' title='Listagem de dados com Struts2 e Hibernate em Netbeans'/><author><name>Helton Eduardo Ritter</name><uri>http://www.blogger.com/profile/08450017811928254585</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://3.bp.blogspot.com/_MvDshKp6n3U/TTMBkVo0g0I/AAAAAAAAA0o/-g6L_zkBVSI/S220/SDC13821.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/-KN24WHri_y8/Tb81E6czsvI/AAAAAAAAA3A/yY0jZYs8bN8/s72-c/Bildschirmfoto.png' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1900921458821518619.post-5875386980237245835</id><published>2011-04-29T10:19:00.001-03:00</published><updated>2011-04-29T10:21:06.667-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Struts2'/><category scheme='http://www.blogger.com/atom/ns#' term='Struts'/><category scheme='http://www.blogger.com/atom/ns#' term='NetBeans'/><title type='text'>Olá Mundo com Struts2 e NetBeans</title><content type='html'>Olá galerinha!!&lt;br /&gt;&lt;br /&gt;Vamos pra mais um Hello World, agora com o Struts2. Pra comecar crie um novo projeto no NetBeans (estou usando no Linux, aqui no Foojava tem um post que ensina instalar tudo certinho), segue -&amp;gt; JavaWeb -&amp;gt; Aplicacao Web, de o nome de HelloStruts, estou a utilizar servidor Tomcat 6.0.26 e Java EE 5, no passo 4 selecione o framework Struts2 e desmarque a opcao de Criar pagina de exemplo, caso contrário o hello world já vem pronto de exemplo, sacanagem!&lt;br /&gt;&lt;br /&gt;Segue imagens dessa primeira parte pra ajudar vocês que ficaram com alguma dúvida nessa primeira parte.&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-EuWnvMKiVs8/Tbo1j851PNI/AAAAAAAACBg/Ut55x2MEHxg/s1600/hello1.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="299" src="http://4.bp.blogspot.com/-EuWnvMKiVs8/Tbo1j851PNI/AAAAAAAACBg/Ut55x2MEHxg/s640/hello1.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-QDGGEN27N88/Tbo1mDMb5ZI/AAAAAAAACBk/cqQeMBDCftk/s1600/hello2.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="299" src="http://2.bp.blogspot.com/-QDGGEN27N88/Tbo1mDMb5ZI/AAAAAAAACBk/cqQeMBDCftk/s640/hello2.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-VFm8b-ACqso/Tbo1np7IxpI/AAAAAAAACBo/XKUWl5Ip2Ks/s1600/hello3.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="299" src="http://3.bp.blogspot.com/-VFm8b-ACqso/Tbo1np7IxpI/AAAAAAAACBo/XKUWl5Ip2Ks/s640/hello3.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-sK_5EF02VLA/Tbo1piOq4pI/AAAAAAAACBs/WVkoqD7lysc/s1600/hello4.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://3.bp.blogspot.com/-sK_5EF02VLA/Tbo1piOq4pI/AAAAAAAACBs/WVkoqD7lysc/s1600/hello4.png" /&gt;&lt;/a&gt; &lt;/div&gt;&lt;br /&gt;Bom, projeto criado, vamos editar o arquivo index.jsp que foi criado junto com o projeto, este arquivo está marcado para ser sua página inicial no arquivo web.xml. Dentro do index coloque o seguinte código:&lt;br /&gt;&lt;br /&gt;&lt;pre style="background-color: white; color: #181615;"&gt;&lt;i&gt;&lt;span style="color: #898887;"&gt;&amp;lt;%-- &lt;/span&gt;&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&lt;span style="color: #898887;"&gt;    Document   : index&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&lt;span style="color: #898887;"&gt;    Created on : 28/04/2011, 20:55:03&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&lt;span style="color: #898887;"&gt;    Author     : bolivar&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&lt;span style="color: #898887;"&gt;--%&amp;gt;&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;i&gt;&lt;span style="color: blue;"&gt;&amp;lt;%@page&lt;/span&gt;&lt;/i&gt;&lt;/b&gt;&lt;span style="color: #006e28;"&gt; contentType&lt;/span&gt;=&lt;span style="color: #bf0303;"&gt;"text/html"&lt;/span&gt;&lt;span style="color: #006e28;"&gt; pageEncoding&lt;/span&gt;=&lt;span style="color: #bf0303;"&gt;"UTF-8"&lt;/span&gt;&lt;b&gt;&lt;i&gt;&lt;span style="color: blue;"&gt;%&amp;gt;&lt;/span&gt;&lt;/i&gt;&lt;/b&gt;&lt;br /&gt;&amp;lt;&lt;span style="color: #006e28;"&gt;!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #006e28;"&gt;   "http://www.w3.org/TR/html4/loose.dtd"&lt;/span&gt;&amp;gt;&lt;br /&gt;&lt;br /&gt;&lt;i&gt;&lt;span style="color: #898887;"&gt;&amp;lt;%-- Adicione essa taglib para usar as tags do Struts --%&amp;gt;&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;&lt;b&gt;&lt;i&gt;&lt;span style="color: blue;"&gt;&amp;lt;%@taglib&lt;/span&gt;&lt;/i&gt;&lt;/b&gt;&lt;span style="color: #006e28;"&gt; uri&lt;/span&gt;=&lt;span style="color: #bf0303;"&gt;"/struts-tags"&lt;/span&gt;&lt;span style="color: #006e28;"&gt; prefix&lt;/span&gt;=&lt;span style="color: #bf0303;"&gt;"s"&lt;/span&gt;&lt;span style="color: #006e28;"&gt; &lt;/span&gt;&lt;b&gt;&lt;i&gt;&lt;span style="color: blue;"&gt;%&amp;gt;&lt;/span&gt;&lt;/i&gt;&lt;/b&gt;&lt;br /&gt;&amp;lt;html&amp;gt;&lt;br /&gt;    &amp;lt;head&amp;gt;&lt;br /&gt;        &amp;lt;meta&lt;span style="color: #006e28;"&gt; http-equiv&lt;/span&gt;=&lt;span style="color: #0057ae;"&gt;"Content-Type"&lt;/span&gt;&lt;span style="color: #006e28;"&gt; content&lt;/span&gt;=&lt;span style="color: #0057ae;"&gt;"text/html; charset=UTF-8"&lt;/span&gt;&amp;gt;&lt;br /&gt;        &amp;lt;title&amp;gt;JSP Page&amp;lt;/title&amp;gt;&lt;br /&gt;    &amp;lt;/head&amp;gt;&lt;br /&gt;    &amp;lt;body&amp;gt;&lt;br /&gt;        &lt;b&gt;&amp;lt;s:form&lt;/b&gt;&lt;span style="color: #006e28;"&gt; action&lt;/span&gt;=&lt;span style="color: #0057ae;"&gt;"Hello"&lt;/span&gt;&lt;b&gt;&amp;gt;&lt;/b&gt;&lt;br /&gt;            &lt;b&gt;&amp;lt;s:textfield&lt;/b&gt;&lt;span style="color: #006e28;"&gt; name&lt;/span&gt;=&lt;span style="color: #0057ae;"&gt;"nomeUsuario"&lt;/span&gt;&lt;span style="color: #006e28;"&gt; label&lt;/span&gt;=&lt;span style="color: #0057ae;"&gt;"Seu nome"&lt;/span&gt;&lt;span style="color: #006e28;"&gt; &lt;/span&gt;&lt;b&gt;/&amp;gt;&lt;/b&gt;&lt;br /&gt;            &lt;b&gt;&amp;lt;s:submit&lt;/b&gt;&lt;span style="color: #006e28;"&gt; &lt;/span&gt;&lt;b&gt;/&amp;gt;&lt;/b&gt;&lt;br /&gt;        &lt;b&gt;&amp;lt;/s:form&amp;gt;&lt;/b&gt;&lt;br /&gt;    &amp;lt;/body&amp;gt;&lt;br /&gt;&amp;lt;/html&amp;gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Perceba que no início da página foi adicionado uma linha de código que inclui as tags especiais do Struts, para usar essas tags devemos adicionar o prefixo s: nas tags, é interessante dar uma olhada nessas tags, o NetBeans tem um autoComplete que msotra todas as tags possíveis de serem utilizadas. Essas tags serão substituidas por tags HTML normais quando o projeto for executado, em tempo de execução/compilaçao, não tenho bem certeza.&lt;br /&gt;&lt;br /&gt;Crie agora mais duas páginas JSP, chame uma de sucesso.jsp e outra de erro.jsp.&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-q3ab35AXkZU/TbqyClNfM6I/AAAAAAAACBw/ARaAOPp3dYg/s1600/hello+6+novo+jsp1.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="380" src="http://1.bp.blogspot.com/-q3ab35AXkZU/TbqyClNfM6I/AAAAAAAACBw/ARaAOPp3dYg/s640/hello+6+novo+jsp1.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-VBT5-C94TpQ/TbqyDl9fIwI/AAAAAAAACB0/_cL1-_1Uc1U/s1600/hello6+new+jsp2.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="380" src="http://1.bp.blogspot.com/-VBT5-C94TpQ/TbqyDl9fIwI/AAAAAAAACB0/_cL1-_1Uc1U/s640/hello6+new+jsp2.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&amp;nbsp;Na página de erro coloque apenas HTML normal com uma mesangem de erro e link para volar ao início.&lt;br /&gt;&lt;pre style="background-color: white; color: #181615;"&gt;&lt;i&gt;&lt;span style="color: #898887;"&gt;&amp;lt;%-- &lt;/span&gt;&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&lt;span style="color: #898887;"&gt;    Document   : erro&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&lt;span style="color: #898887;"&gt;    Created on : 28/04/2011, 21:08:18&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&lt;span style="color: #898887;"&gt;    Author     : bolivar&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&lt;span style="color: #898887;"&gt;--%&amp;gt;&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;&lt;b&gt;&lt;i&gt;&lt;span style="color: blue;"&gt;&amp;lt;%@page&lt;/span&gt;&lt;/i&gt;&lt;/b&gt;&lt;span style="color: #006e28;"&gt; contentType&lt;/span&gt;=&lt;span style="color: #bf0303;"&gt;"text/html"&lt;/span&gt;&lt;span style="color: #006e28;"&gt; pageEncoding&lt;/span&gt;=&lt;span style="color: #bf0303;"&gt;"UTF-8"&lt;/span&gt;&lt;b&gt;&lt;i&gt;&lt;span style="color: blue;"&gt;%&amp;gt;&lt;/span&gt;&lt;/i&gt;&lt;/b&gt;&lt;br /&gt;&amp;lt;&lt;span style="color: #006e28;"&gt;!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #006e28;"&gt;   "http://www.w3.org/TR/html4/loose.dtd"&lt;/span&gt;&amp;gt;&lt;br /&gt;&amp;lt;html&amp;gt;&lt;br /&gt;    &amp;lt;head&amp;gt;&lt;br /&gt;        &amp;lt;meta&lt;span style="color: #006e28;"&gt; http-equiv&lt;/span&gt;=&lt;span style="color: #0057ae;"&gt;"Content-Type"&lt;/span&gt;&lt;span style="color: #006e28;"&gt; content&lt;/span&gt;=&lt;span style="color: #0057ae;"&gt;"text/html; charset=UTF-8"&lt;/span&gt;&amp;gt;&lt;br /&gt;        &amp;lt;title&amp;gt;Primeiro Hello Struts&amp;lt;/title&amp;gt;&lt;br /&gt;    &amp;lt;/head&amp;gt;&lt;br /&gt;    &amp;lt;body&amp;gt;&lt;br /&gt;        &amp;lt;p&amp;gt;&lt;br /&gt;            Erro: Campo nome nao pode ser vazio, informe seu nome!&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;            &amp;lt;a&lt;span style="color: #006e28;"&gt; href&lt;/span&gt;=&lt;span style="color: #0057ae;"&gt;"index.jsp"&lt;/span&gt;&amp;gt;clique aqui pra voltar&amp;lt;/a&amp;gt;&lt;br /&gt;        &amp;lt;/p&amp;gt;&lt;br /&gt;    &amp;lt;/body&amp;gt;&lt;br /&gt;&amp;lt;/html&amp;gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Na página de sucesso vamos utilizar novamente a taglib do Struts2, para exibir uma &lt;b&gt;mensagem &lt;/b&gt;de Ola.&lt;br /&gt;&lt;pre style="background-color: white; color: #181615;"&gt;&lt;i&gt;&lt;span style="color: #898887;"&gt;&amp;lt;%-- &lt;/span&gt;&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&lt;span style="color: #898887;"&gt;    Document   : sucesso&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&lt;span style="color: #898887;"&gt;    Created on : 28/04/2011, 21:06:57&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&lt;span style="color: #898887;"&gt;    Author     : bolivar&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&lt;span style="color: #898887;"&gt;--%&amp;gt;&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;i&gt;&lt;span style="color: blue;"&gt;&amp;lt;%@page&lt;/span&gt;&lt;/i&gt;&lt;/b&gt;&lt;span style="color: #006e28;"&gt; contentType&lt;/span&gt;=&lt;span style="color: #bf0303;"&gt;"text/html"&lt;/span&gt;&lt;span style="color: #006e28;"&gt; pageEncoding&lt;/span&gt;=&lt;span style="color: #bf0303;"&gt;"UTF-8"&lt;/span&gt;&lt;b&gt;&lt;i&gt;&lt;span style="color: blue;"&gt;%&amp;gt;&lt;/span&gt;&lt;/i&gt;&lt;/b&gt;&lt;br /&gt;&amp;lt;&lt;span style="color: #006e28;"&gt;!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #006e28;"&gt;   "http://www.w3.org/TR/html4/loose.dtd"&lt;/span&gt;&amp;gt;&lt;br /&gt;&lt;b&gt;&lt;i&gt;&lt;span style="color: blue;"&gt;&amp;lt;%@taglib&lt;/span&gt;&lt;/i&gt;&lt;/b&gt;&lt;span style="color: #006e28;"&gt; uri&lt;/span&gt;=&lt;span style="color: #bf0303;"&gt;"/struts-tags"&lt;/span&gt;&lt;span style="color: #006e28;"&gt; prefix&lt;/span&gt;=&lt;span style="color: #bf0303;"&gt;"s"&lt;/span&gt;&lt;span style="color: #006e28;"&gt; &lt;/span&gt;&lt;b&gt;&lt;i&gt;&lt;span style="color: blue;"&gt;%&amp;gt;&lt;/span&gt;&lt;/i&gt;&lt;/b&gt;&lt;br /&gt;&amp;lt;html&amp;gt;&lt;br /&gt;    &amp;lt;head&amp;gt;&lt;br /&gt;        &amp;lt;meta&lt;span style="color: #006e28;"&gt; http-equiv&lt;/span&gt;=&lt;span style="color: #0057ae;"&gt;"Content-Type"&lt;/span&gt;&lt;span style="color: #006e28;"&gt; content&lt;/span&gt;=&lt;span style="color: #0057ae;"&gt;"text/html; charset=UTF-8"&lt;/span&gt;&amp;gt;&lt;br /&gt;        &amp;lt;title&amp;gt;Primeiro Hello Struts&amp;lt;/title&amp;gt;&lt;br /&gt;    &amp;lt;/head&amp;gt;&lt;br /&gt;    &amp;lt;body&amp;gt;&lt;br /&gt;        &amp;lt;h1&amp;gt;&lt;b&gt;&amp;lt;s:property&lt;/b&gt;&lt;span style="color: #006e28;"&gt; value&lt;/span&gt;=&lt;span style="color: #0057ae;"&gt;"mensagem"&lt;/span&gt;&lt;span style="color: #006e28;"&gt; &lt;/span&gt;&lt;b&gt;/&amp;gt;&lt;/b&gt;&amp;lt;/h1&amp;gt;&lt;br /&gt;    &amp;lt;/body&amp;gt;&lt;br /&gt;&amp;lt;/html&amp;gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Bom, até agora temos duas variáveis/propriedades para trabalhar, uma está na index.jsp que é o &lt;b&gt;nomeUsuario &lt;/b&gt;e outra na página de sucesso que é a &lt;b&gt;mensagem&lt;/b&gt;. Para manipularmos estes campos vamos criar uma classe Java que será a nossa &lt;i&gt;Action&lt;/i&gt;, crie uma classe java dentro de um novo pacote chamado &lt;b&gt;acoes&lt;/b&gt;. De o nome para a nova classe de HelloAction.&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-VWZ5e11hd-c/Tbq0gFEToUI/AAAAAAAACB4/wZ_a0tNT4p8/s1600/new+class.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="400" src="http://4.bp.blogspot.com/-VWZ5e11hd-c/Tbq0gFEToUI/AAAAAAAACB4/wZ_a0tNT4p8/s640/new+class.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-lt_Ix5iDLtI/Tbq0hhn64EI/AAAAAAAACB8/iPB36py50nI/s1600/nome+e+pacote.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="418" src="http://3.bp.blogspot.com/-lt_Ix5iDLtI/Tbq0hhn64EI/AAAAAAAACB8/iPB36py50nI/s640/nome+e+pacote.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;Criado a classe HelloAction, dentro de um pacote acoes, coloque o seguinte código.&lt;br /&gt;&lt;br /&gt;&lt;pre style="background-color: white; color: #181615;"&gt;&lt;b&gt;package&lt;/b&gt;&lt;span style="color: olive;"&gt; acoes;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;span style="color: green;"&gt;/**&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&lt;span style="color: green;"&gt; * &lt;/span&gt;&lt;/b&gt;&lt;b&gt;&lt;span style="color: grey;"&gt;@author &lt;/span&gt;&lt;/b&gt;&lt;i&gt;&lt;span style="color: green;"&gt;bolivar&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&lt;span style="color: green;"&gt; &lt;/span&gt;&lt;/i&gt;&lt;b&gt;&lt;span style="color: green;"&gt;*/&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;public&lt;/b&gt; &lt;b&gt;class&lt;/b&gt; HelloAction {&lt;br /&gt;&lt;br /&gt;    &lt;b&gt;private&lt;/b&gt; &lt;b&gt;&lt;span style="color: #0095ff;"&gt;String&lt;/span&gt;&lt;/b&gt; Mensagem;&lt;br /&gt;    &lt;b&gt;private&lt;/b&gt; &lt;b&gt;&lt;span style="color: #0095ff;"&gt;String&lt;/span&gt;&lt;/b&gt; nomeUsuario;&lt;br /&gt;&lt;br /&gt;    &lt;b&gt;public&lt;/b&gt; &lt;b&gt;&lt;span style="color: #0095ff;"&gt;String&lt;/span&gt;&lt;/b&gt; &lt;span style="color: #644a9b;"&gt;execute&lt;/span&gt;() {&lt;br /&gt;        &lt;b&gt;if&lt;/b&gt; (&lt;span style="color: #644a9b;"&gt;getNomeUsuario&lt;/span&gt;().&lt;span style="color: #644a9b;"&gt;length&lt;/span&gt;() &amp;gt; &lt;span style="color: #b08000;"&gt;0&lt;/span&gt;)&lt;br /&gt;        {&lt;br /&gt;            &lt;span style="color: #644a9b;"&gt;setMensagem&lt;/span&gt;(&lt;span style="color: #bf0303;"&gt;"Ola "&lt;/span&gt; + &lt;span style="color: #644a9b;"&gt;getNomeUsuario&lt;/span&gt;());&lt;br /&gt;            &lt;b&gt;return&lt;/b&gt; &lt;span style="color: #bf0303;"&gt;"SUCESSO"&lt;/span&gt;;&lt;br /&gt;        } &lt;b&gt;else&lt;/b&gt;&lt;br /&gt;        {&lt;br /&gt;            &lt;b&gt;return&lt;/b&gt; &lt;span style="color: #bf0303;"&gt;"ERRO"&lt;/span&gt;;&lt;br /&gt;        }&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    &lt;b&gt;&lt;span style="color: green;"&gt;/**&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&lt;span style="color: green;"&gt;     * &lt;/span&gt;&lt;/b&gt;&lt;b&gt;&lt;span style="color: grey;"&gt;@return &lt;/span&gt;&lt;/b&gt;&lt;i&gt;&lt;span style="color: green;"&gt;the Mensagem&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&lt;span style="color: green;"&gt;     &lt;/span&gt;&lt;/i&gt;&lt;b&gt;&lt;span style="color: green;"&gt;*/&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;    &lt;b&gt;public&lt;/b&gt; &lt;b&gt;&lt;span style="color: #0095ff;"&gt;String&lt;/span&gt;&lt;/b&gt; &lt;span style="color: #644a9b;"&gt;getMensagem&lt;/span&gt;() {&lt;br /&gt;        &lt;b&gt;return&lt;/b&gt; Mensagem;&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    &lt;b&gt;&lt;span style="color: green;"&gt;/**&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&lt;span style="color: green;"&gt;     * &lt;/span&gt;&lt;/b&gt;&lt;b&gt;&lt;span style="color: grey;"&gt;@param &lt;/span&gt;&lt;/b&gt;&lt;i&gt;&lt;span style="color: teal;"&gt;Mensagem &lt;/span&gt;&lt;/i&gt;&lt;i&gt;&lt;span style="color: green;"&gt;the Mensagem to set&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&lt;span style="color: green;"&gt;     &lt;/span&gt;&lt;/i&gt;&lt;b&gt;&lt;span style="color: green;"&gt;*/&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;    &lt;b&gt;public&lt;/b&gt; &lt;span style="color: #0057ae;"&gt;void&lt;/span&gt; &lt;span style="color: #644a9b;"&gt;setMensagem&lt;/span&gt;(&lt;b&gt;&lt;span style="color: #0095ff;"&gt;String&lt;/span&gt;&lt;/b&gt; Mensagem) {&lt;br /&gt;        &lt;b&gt;this&lt;/b&gt;.&lt;span style="color: #644a9b;"&gt;Mensagem&lt;/span&gt; = Mensagem;&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    &lt;b&gt;&lt;span style="color: green;"&gt;/**&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&lt;span style="color: green;"&gt;     * &lt;/span&gt;&lt;/b&gt;&lt;b&gt;&lt;span style="color: grey;"&gt;@return &lt;/span&gt;&lt;/b&gt;&lt;i&gt;&lt;span style="color: green;"&gt;the nomeUsuario&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&lt;span style="color: green;"&gt;     &lt;/span&gt;&lt;/i&gt;&lt;b&gt;&lt;span style="color: green;"&gt;*/&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;    &lt;b&gt;public&lt;/b&gt; &lt;b&gt;&lt;span style="color: #0095ff;"&gt;String&lt;/span&gt;&lt;/b&gt; &lt;span style="color: #644a9b;"&gt;getNomeUsuario&lt;/span&gt;() {&lt;br /&gt;        &lt;b&gt;return&lt;/b&gt; nomeUsuario;&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    &lt;b&gt;&lt;span style="color: green;"&gt;/**&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&lt;span style="color: green;"&gt;     * &lt;/span&gt;&lt;/b&gt;&lt;b&gt;&lt;span style="color: grey;"&gt;@param &lt;/span&gt;&lt;/b&gt;&lt;i&gt;&lt;span style="color: teal;"&gt;nomeUsuario &lt;/span&gt;&lt;/i&gt;&lt;i&gt;&lt;span style="color: green;"&gt;the nomeUsuario to set&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&lt;span style="color: green;"&gt;     &lt;/span&gt;&lt;/i&gt;&lt;b&gt;&lt;span style="color: green;"&gt;*/&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;    &lt;b&gt;public&lt;/b&gt; &lt;span style="color: #0057ae;"&gt;void&lt;/span&gt; &lt;span style="color: #644a9b;"&gt;setNomeUsuario&lt;/span&gt;(&lt;b&gt;&lt;span style="color: #0095ff;"&gt;String&lt;/span&gt;&lt;/b&gt; nomeUsuario) {&lt;br /&gt;        &lt;b&gt;this&lt;/b&gt;.&lt;span style="color: #644a9b;"&gt;nomeUsuario&lt;/span&gt; = nomeUsuario;&lt;br /&gt;    }&lt;br /&gt;    &lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Esta classe estamos criando duas variáveis String que correspondem aos nossos elementos nas JSP, nomeUsuario e mensagem, implementamos os métodos GET e SET para definir valores e recuperar os valores dessas propriedades e criamos uma função chamada execute(), que é o método padrão das actions dentro do Struts.&lt;br /&gt;&lt;br /&gt;Dentro desse método execute() nós verificamos se foi preenchido o campo nomeUsuario, em caso TRUE nós setamos a propriedade mensagem com o valor 'Olá ' e concatenamos com nome informado pelo usuário que está na propriedade nomeUsuario, tudo certo, retorna 'SUCESSO', este retorno é muito importante, não é necessário ter o nome 'sucesso', mas precisa existir para mapearmos dentro do struts depois.&lt;br /&gt;&lt;br /&gt;No caso do usuário não ter digitado o seu nome, o método vai retornar 'ERRO'. &lt;br /&gt;&lt;br /&gt;Muito bem, vamos para nossa parte final do Hello World, é impressão minha ou fazer um hello em Struts é super complicado? hehe Seguindo, agora só nos falta relacionar tudo isso dentro do arquivo de configuração struts.xml, o código abaixo simples e comentadinho.&lt;br /&gt;&lt;br /&gt;&lt;pre style="background-color: white; color: #181615;"&gt;&lt;b&gt;&amp;lt;struts&amp;gt;&lt;/b&gt;&lt;br /&gt;    &lt;i&gt;&lt;span style="color: #898887;"&gt;&amp;lt;!-- Configuration for the default package. --&amp;gt;&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;    &lt;b&gt;&amp;lt;package&lt;/b&gt;&lt;span style="color: #006e28;"&gt; name=&lt;/span&gt;&lt;span style="color: #aa0000;"&gt;"default"&lt;/span&gt;&lt;span style="color: #006e28;"&gt; extends=&lt;/span&gt;&lt;span style="color: #aa0000;"&gt;"struts-default"&lt;/span&gt;&lt;b&gt;&amp;gt;&lt;/b&gt;&lt;br /&gt;        &lt;i&gt;&lt;span style="color: #898887;"&gt;&amp;lt;!-- Configura as actions, o name é o que esta sendo chamada no form da index.jsp,&lt;br /&gt; class é local da action a ser executada e adicionei também o method execute, &lt;br /&gt;isso não é necessário quando o método tem este nome, mas se tivesse outro nome como remover, listar... ai seria necessário --&amp;gt;&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;        &lt;b&gt;&amp;lt;action&lt;/b&gt;&lt;span style="color: #006e28;"&gt; name=&lt;/span&gt;&lt;span style="color: #aa0000;"&gt;"Hello"&lt;/span&gt;&lt;span style="color: #006e28;"&gt; class=&lt;/span&gt;&lt;span style="color: #aa0000;"&gt;"acoes.HelloAction"&lt;/span&gt;&lt;span style="color: #006e28;"&gt; method=&lt;/span&gt;&lt;span style="color: #aa0000;"&gt;"execute"&lt;/span&gt;&lt;b&gt;&amp;gt;&lt;/b&gt;&lt;br /&gt;            &lt;i&gt;&lt;span style="color: #898887;"&gt;&amp;lt;!-- Configura os resultados da action, em caso da funçao retornar SUCESSO &lt;br /&gt;vai ir para pagina JSP sucesso, caso de ERRO vai para erro.jsp --&amp;gt;&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;            &lt;b&gt;&amp;lt;result&lt;/b&gt;&lt;span style="color: #006e28;"&gt; name=&lt;/span&gt;&lt;span style="color: #aa0000;"&gt;"SUCESSO"&lt;/span&gt;&lt;b&gt;&amp;gt;&lt;/b&gt;/sucesso.jsp&lt;b&gt;&amp;lt;/result&amp;gt;&lt;/b&gt;&lt;br /&gt;            &lt;b&gt;&amp;lt;result&lt;/b&gt;&lt;span style="color: #006e28;"&gt; name=&lt;/span&gt;&lt;span style="color: #aa0000;"&gt;"ERRO"&lt;/span&gt;&lt;b&gt;&amp;gt;&lt;/b&gt;/erro.jsp&lt;b&gt;&amp;lt;/result&amp;gt;&lt;/b&gt;&lt;br /&gt;        &lt;b&gt;&amp;lt;/action&amp;gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;    &lt;b&gt;&amp;lt;/package&amp;gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&amp;lt;/struts&amp;gt;&lt;/b&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Bom pessoal, basicamente é isso ai, para ver o Hello com Struts funcionando basta executar o projeto agora e correr pro abraço. A estrutura do projeto ficou igual a imagem abaixo.&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-z_11gducPxY/Tbq6tGJT8AI/AAAAAAAACCA/aU80T2Ib6ak/s1600/diretorios.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="347" src="http://4.bp.blogspot.com/-z_11gducPxY/Tbq6tGJT8AI/AAAAAAAACCA/aU80T2Ib6ak/s400/diretorios.png" width="294" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;Até mais!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1900921458821518619-5875386980237245835?l=foojava.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://foojava.blogspot.com/feeds/5875386980237245835/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://foojava.blogspot.com/2011/04/ola-mundo-com-struts2-e-netbeans.html#comment-form' title='1 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1900921458821518619/posts/default/5875386980237245835'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1900921458821518619/posts/default/5875386980237245835'/><link rel='alternate' type='text/html' href='http://foojava.blogspot.com/2011/04/ola-mundo-com-struts2-e-netbeans.html' title='Olá Mundo com Struts2 e NetBeans'/><author><name>Bolívar Arthur Butzke</name><uri>https://profiles.google.com/115253865457720310323</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-DKxFfFY7jkw/AAAAAAAAAAI/AAAAAAAACAc/L2U5KijlcQA/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/-EuWnvMKiVs8/Tbo1j851PNI/AAAAAAAACBg/Ut55x2MEHxg/s72-c/hello1.png' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1900921458821518619.post-801855064177349425</id><published>2011-03-30T14:46:00.000-03:00</published><updated>2011-03-30T14:46:38.912-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='instalação'/><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='NetBeans'/><title type='text'>Netbeans + Tomcat + Struts2 + Hibernate + Linux</title><content type='html'>Buenas, vou mostrar aqui rapidamente como instar o Netbeans em Linux (alguma distro baseada em Debian). A &lt;a href="http://foojava.blogspot.com/2009/06/instalando-netbeans-em-linux.html"&gt;diferença básica&lt;/a&gt; é que vamos instalar o servidor de aplicação Tomcat também, e vamos dar suporte a Struts2, e padrão o Netbeans suporta a 1.8 se não me engano.&lt;br /&gt;&lt;br /&gt;Na teba abaixo tenho a versão completa baixada. Mando instalar: &lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-wMDx5QVNLoA/TZNoErzcLII/AAAAAAAAA2I/ogkM5idTbgo/s1600/01-install.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://2.bp.blogspot.com/-wMDx5QVNLoA/TZNoErzcLII/AAAAAAAAA2I/ogkM5idTbgo/s1600/01-install.png" /&gt;&lt;/a&gt;&lt;/div&gt;sh nome_do_executavel.&lt;br /&gt;&lt;br /&gt;Em seguida, resista a tentação de dar "next" na primeira tela e vá em "costomize".&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-79sJaU2l3gY/TZNoFQDe6OI/AAAAAAAAA2M/nmHPRrbVjNk/s1600/02-customize.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://4.bp.blogspot.com/-79sJaU2l3gY/TZNoFQDe6OI/AAAAAAAAA2M/nmHPRrbVjNk/s1600/02-customize.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;Marque o Tomcat, e aí sim, daqui por diante é instalação padrão.&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-Bop2JhDpX8Q/TZNoF1-mSSI/AAAAAAAAA2Q/gsW9mQpN_2w/s1600/03-check-tomcat.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://1.bp.blogspot.com/-Bop2JhDpX8Q/TZNoF1-mSSI/AAAAAAAAA2Q/gsW9mQpN_2w/s1600/03-check-tomcat.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-HlIxIY_R0cY/TZNoGFSahfI/AAAAAAAAA2U/QOJuwmPsmjo/s1600/04-proced-install.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://1.bp.blogspot.com/-HlIxIY_R0cY/TZNoGFSahfI/AAAAAAAAA2U/QOJuwmPsmjo/s1600/04-proced-install.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;Se por um acaso, na tela seguinte ele reclamar que você não tem o JDK, ou ele não acha o path, mande instalar o JDK antes. Repita daí a instalação.&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-NV9-9sjvNZU/TZNoGjpD-ZI/AAAAAAAAA2Y/-IbJzIFbbLI/s1600/if-not-sdk-installed.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://1.bp.blogspot.com/-NV9-9sjvNZU/TZNoGjpD-ZI/AAAAAAAAA2Y/-IbJzIFbbLI/s1600/if-not-sdk-installed.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;span style="font-size: large;"&gt;&lt;b&gt;Hibenate&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;Não há nada a fazer, na instalação padrão vem com suporte tudo certinho, drivers para alguns bancos. Tudo ok.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: large;"&gt;&lt;b&gt;Struts2&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;No o Netbeans instado, precisamos dar suporte a Struts2. Baixe &lt;a href="http://www.4shared.com/file/X3PLzoiE/Struts2Support.html"&gt;esse aquivo aqui&lt;/a&gt;. Descompacte a pasta.&lt;br /&gt;&lt;br /&gt;Abra o Netbeans, no menu "tools" e em seguida em "plugins", e na aba "downloaded". Vamos instalá-los.&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-QmDxVtdGxKM/TZNrotRT7oI/AAAAAAAAA2c/ynRXIJzsS30/s1600/01-add-plugin.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://4.bp.blogspot.com/-QmDxVtdGxKM/TZNrotRT7oI/AAAAAAAAA2c/ynRXIJzsS30/s1600/01-add-plugin.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;Mande adicionar os plugins, busque-os, selecione-os.&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-0V3GOvPxcJc/TZNrppCUzUI/AAAAAAAAA2g/DCzfdF91pkw/s1600/02-select.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://3.bp.blogspot.com/-0V3GOvPxcJc/TZNrppCUzUI/AAAAAAAAA2g/DCzfdF91pkw/s1600/02-select.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;E em seguida vá em "install".&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-1QicykKqudU/TZNrqGH3gBI/AAAAAAAAA2k/VNqZElvrW4Y/s1600/03-install.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://3.bp.blogspot.com/-1QicykKqudU/TZNrqGH3gBI/AAAAAAAAA2k/VNqZElvrW4Y/s1600/03-install.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;Aceite os termos, mande continuar no aviso que ele fala da compatibilidade... e no fim ele vai pedir para reiniciar a IDE. Ok, pode ser.&lt;br /&gt;&lt;br /&gt;Pronto! IDE configurada!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1900921458821518619-801855064177349425?l=foojava.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://foojava.blogspot.com/feeds/801855064177349425/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://foojava.blogspot.com/2011/03/netbeans-tomcat-struts2-hibernate-linux.html#comment-form' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1900921458821518619/posts/default/801855064177349425'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1900921458821518619/posts/default/801855064177349425'/><link rel='alternate' type='text/html' href='http://foojava.blogspot.com/2011/03/netbeans-tomcat-struts2-hibernate-linux.html' title='Netbeans + Tomcat + Struts2 + Hibernate + Linux'/><author><name>Helton Eduardo Ritter</name><uri>http://www.blogger.com/profile/08450017811928254585</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://3.bp.blogspot.com/_MvDshKp6n3U/TTMBkVo0g0I/AAAAAAAAA0o/-g6L_zkBVSI/S220/SDC13821.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/-wMDx5QVNLoA/TZNoErzcLII/AAAAAAAAA2I/ogkM5idTbgo/s72-c/01-install.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1900921458821518619.post-8033236741230096585</id><published>2010-11-27T15:40:00.000-02:00</published><updated>2010-11-27T15:40:56.960-02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='joguinho'/><title type='text'>Jogo da Forca em Java</title><content type='html'>Olá pessoas!&lt;br /&gt;Voltando a postar no Blog.&lt;br /&gt;Desta vez, vou postar um joguinho que tivemos que fazer para a aula de Java, um jogo da Forca. Não é muito complicado, visual bonitinho e funciona \o/&lt;br /&gt;Vou colocar as telas e o código abaixo.&lt;br /&gt;&lt;br /&gt;Tela Inicial:&lt;br /&gt;&lt;a href="http://3.bp.blogspot.com/_flq6AhElpp4/TPDxkAtJqMI/AAAAAAAAA5w/DshDljIil7s/s1600/inicial.JPG" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="217" src="http://3.bp.blogspot.com/_flq6AhElpp4/TPDxkAtJqMI/AAAAAAAAA5w/DshDljIil7s/s320/inicial.JPG" width="320" /&gt;&lt;/a&gt;&lt;br /&gt;&amp;nbsp;Nesta tela, temos o desenho da forca e onde será colocado as letras para verificação e aparecem as dicas. Para jogar, é necessário ir em Arquivo, Novo Jogo, que habilitará as caixas de texto e ja sorteara uma palavra. Claro que pode não haver nenhuma palavra cadastrada, então o usuário terá que ir no menu Cadastrar, Palavras e Dicas, que será explicado depois.&lt;br /&gt;Voltando ao jogo, uma palavra foi sorteada, como na imagem abaixo, mostrando a dica:&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_flq6AhElpp4/TPDzD74ZCRI/AAAAAAAAA50/RR34CFGyyuQ/s1600/novo+jogo.JPG" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="217" src="http://4.bp.blogspot.com/_flq6AhElpp4/TPDzD74ZCRI/AAAAAAAAA50/RR34CFGyyuQ/s320/novo+jogo.JPG" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;Após aparecer a dica, o usuário pode testar as letras, embaixo aparecerão riscos, mostrando quantas letras a palavra possui.&lt;br /&gt;Testarei a letra E:&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_flq6AhElpp4/TPDziDnNk3I/AAAAAAAAA54/iSM4BqMsQ5s/s1600/letra+que+n%25C3%25A3o+existe.JPG" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="217" src="http://3.bp.blogspot.com/_flq6AhElpp4/TPDziDnNk3I/AAAAAAAAA54/iSM4BqMsQ5s/s320/letra+que+n%25C3%25A3o+existe.JPG" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&amp;nbsp;Como a letra não existe na palavra, ele ja mostra uma parte da figura que formará o corpo do enforcado.&lt;br /&gt;Vou agora inserir a letra A:&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_flq6AhElpp4/TPDz_5KjmoI/AAAAAAAAA58/z7skUEAg19U/s1600/04+letra+que+existe.JPG" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="217" src="http://4.bp.blogspot.com/_flq6AhElpp4/TPDz_5KjmoI/AAAAAAAAA58/z7skUEAg19U/s320/04+letra+que+existe.JPG" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;Como esta letra existe na palavra, ela aparece em seu(s) respectivo(s) lugar(es) nos riscos abaixo.&lt;br /&gt;Completando com as letras C e S:&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_flq6AhElpp4/TPD0fYR4YYI/AAAAAAAAA6A/_yoAQXL7Hzo/s1600/05+palavra+completa.JPG" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="217" src="http://1.bp.blogspot.com/_flq6AhElpp4/TPD0fYR4YYI/AAAAAAAAA6A/_yoAQXL7Hzo/s320/05+palavra+completa.JPG" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;Como eu acertei a palavra, o programa exibe uma mensagem de que eu venci o jogo e me pede se eu quero jogar novamente. Se eu escolher Sim, ele sorteará uma nova palavra; se eu escolher Não, o programa será fechado.&lt;br /&gt;Vou colocar agora os códigos para ver como funciona.&lt;br /&gt;O Primeiro código será do botão Novo Jogo:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre class="java" name="codeaaaaa"&gt;private void jMenuItem1ActionPerformed(java.awt.event.ActionEvent evt) {                                           &lt;br /&gt;   lblDigite.enable(true);//habilita os campos do jogo&lt;br /&gt;   CampoTentar.enable(true);&lt;br /&gt;   // btVerifica.enable(true); não desabilitar botão pq depois não habilita        TxtDica.enable(true);&lt;br /&gt;   PalavraForca.enable(true);&lt;br /&gt;   // Dá um reset no jogo:&lt;br /&gt;   PalavraForca.setText("");//limpa os campos&lt;br /&gt;   Tentativas.clear();//limpa as tentativas&lt;br /&gt;   sortearpalavra(); //pega uma palavra do Txt e sorteia&lt;br /&gt;   FimDoJogo=false; //Como ainda não é o fim do jogo, a opção se torna falsa&lt;br /&gt;   LabelImagem.setIcon(icon0); //seta o ícone normal, do desenho da forca&lt;br /&gt;   NumTentativas=0; // zera o numero de tentativas&lt;br /&gt;   desenharpalavra(false);//a palavra só será desenhada se o usuário perder o jogo&lt;br /&gt;}&lt;/pre&gt;&lt;br /&gt;O próximo código, é o do botao verificar:&lt;br /&gt;&lt;br /&gt;&lt;pre class="java" name="codeaaaaa"&gt;private void btVerificaActionPerformed(java.awt.event.ActionEvent evt) {                                           &lt;br /&gt;   if(!FimDoJogo){//verifica se não é o fim do jogo&lt;br /&gt;      tentarletra(CampoTentar.getText());//se não for, pega a letra escrita e verifica se tem na palavra&lt;br /&gt;      CampoTentar.setText("");//deixa o campo onde são digitadas as letras vazio&lt;br /&gt;   }&lt;br /&gt;&lt;br /&gt;}&lt;/pre&gt;&lt;br /&gt;Agora, vou colocar os métodos utilizados, que são chamados no menu e botão:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre class="java" name="codeaaaaa"&gt;public class principal extends javax.swing.JFrame { //criacao de variáveis e definição das imagens e cria os vetores&lt;br /&gt;    String PalavraSorteada = new String();&lt;br /&gt;    ArrayList Tentativas = new ArrayList();&lt;br /&gt;    int MaxTentativas = 6 ;&lt;br /&gt;    int NumTentativas = 0 ;&lt;br /&gt;    boolean FimDoJogo = true;&lt;br /&gt;    ImageIcon icon0 = new ImageIcon("forca00.jpg");&lt;br /&gt;    ImageIcon icon1 = new ImageIcon("forca11.jpg");&lt;br /&gt;    ImageIcon icon2 = new ImageIcon("forca22.jpg");&lt;br /&gt;    ImageIcon icon3 = new ImageIcon("forca33.jpg");&lt;br /&gt;    ImageIcon icon4 = new ImageIcon("forca44.jpg");&lt;br /&gt;    ImageIcon icon5 = new ImageIcon("forca55.jpg");&lt;br /&gt;    ImageIcon icon6 = new ImageIcon("forca66.jpg");&lt;br /&gt;    ArrayList PalavrasArquivo = new ArrayList();&lt;br /&gt;    ArrayList DicasArquivo = new ArrayList();&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Essas são as declarações no começo da classe; é necessário importar:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre class="java" name="codeaaaaa"&gt;import java.awt.Image;&lt;br /&gt;import java.io.BufferedReader;&lt;br /&gt;import java.io.File;&lt;br /&gt;import java.io.FileReader;&lt;br /&gt;import java.util.ArrayList;&lt;br /&gt;import javax.swing.ImageIcon;&lt;br /&gt;import javax.swing.JDialog;&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Abaixo, o método que faz o sorteio da palavra:&lt;br /&gt;&lt;br /&gt;&lt;pre class="java" name="codeaaaaa"&gt;public void sortearpalavra() {&lt;br /&gt;&amp;nbsp;&amp;nbsp; try {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  File Arquivo = new File("Palavras.txt"); //lê o arquivo Txt&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; FileReader leitor = new FileReader(Arquivo);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; BufferedReader leitorBuf = new BufferedReader(leitor);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; PalavrasArquivo.clear(); //limpa o temporario que armazena as palavras&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; DicasArquivo.clear(); //limpa o temporaio que aramzena a dica&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; String linha=null;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; while((linha = leitorBuf.readLine()) !=null){&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; String colunas[] = linha.split("#"); //lê a linha contendo a palavra e a dica, sabendo q as mesmas sao separadas pelo&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; PalavrasArquivo.add(colunas[0]);//caractere #&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; DicasArquivo.add(colunas[1]);&lt;br /&gt;&amp;nbsp;&amp;nbsp;      }&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;      leitorBuf.close();&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;      int TotalPalavras = PalavrasArquivo.size();//lê o tamanho da palavra para desenhar os traços&lt;br /&gt;&amp;nbsp;&amp;nbsp;      int CodPalavraSorteada = (int) (Math.random()*(TotalPalavras)) ;//sorteia uma palavra randomicamente&lt;br /&gt;&amp;nbsp;&amp;nbsp;      PalavraSorteada = (String) PalavrasArquivo.get(CodPalavraSorteada);//pega a plavra sorteada&lt;br /&gt;&amp;nbsp;&amp;nbsp;      PalavraSorteada= PalavraSorteada.toUpperCase();//coloca em maiusculo&lt;br /&gt;&amp;nbsp;&amp;nbsp;      TxtDica.setText("DICA: "+(String) DicasArquivo.get(CodPalavraSorteada));//pega a dica e exibe&lt;br /&gt;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp; catch(Exception ex) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; System.out.println("Erro: "+ ex.toString());};&lt;br /&gt;} &lt;/pre&gt;&lt;br /&gt;O próximo método, é o que desenha a palavra na tela, nos riscos, quando o usuário acerta a palavra:&lt;br /&gt;&lt;br /&gt;&lt;pre class="java" name="codeaaaaa"&gt;public void desenharpalavra(boolean MostrarTodaAPalavra){&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; String tempTexto = new String();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; boolean faltauma = false;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; for(int n=1;n&amp;lt;=PalavraSorteada.length();n++){ //pega o tamanho da palavra e cria os tracinhos&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if((MostrarTodaAPalavra) || (Tentativas.contains(PalavraSorteada.substring(n-1, n)))){&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; tempTexto=tempTexto+PalavraSorteada.substring(n-1, n);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }else{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; tempTexto=tempTexto+"_";&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; faltauma=true;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; tempTexto=tempTexto+" ";&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; PalavraForca.setText(tempTexto);&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if(!faltauma){&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; FimDoJogo=true;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if ((NumTentativas)&amp;lt;6){ //verifica se o num de tentativas é menor q 6; se for, o usuario ganhou&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; joga_nov.pack(); //abre a mensagem q pede se o usuário quer jogar novamente&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; joga_nov.setLocationRelativeTo(null);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; joga_nov.setVisible(true);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Dá pra mostrar uma outra mensagem aqui.&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;O próximo método, é o qe verifica as letras se existem na palavra:&lt;br /&gt;&lt;br /&gt;&lt;pre class="java" name="codeaaaaa"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; public void tentarletra(String Letra){&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Letra= Letra.toUpperCase();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if(Tentativas.contains(Letra)){&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Mostrar mensagem de q já foi tentada esta letra&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }else{ &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Armazena a letra nova na lista de tentativas.&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Tentativas.add(Letra);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if(PalavraSorteada.contains(Letra)){&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Acertou&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; desenharpalavra(false);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }else{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; NumTentativas=NumTentativas+1;//vai adicionando o num de tentativas; se errar, adiciona o desenho&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; switch(NumTentativas){&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; case(1):{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; LabelImagem.setIcon(icon1);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; break;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; case(2):{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; LabelImagem.setIcon(icon2);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; break;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; case(3):{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; LabelImagem.setIcon(icon3);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; break;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; case(4):{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; LabelImagem.setIcon(icon4);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; break;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; case(5):{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; LabelImagem.setIcon(icon5);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; break;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; case(6):{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; LabelImagem.setIcon(icon6);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; FimDoJogo=true;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; desenharpalavra(true);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; FimDoJogo=true;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; jogo_novo.pack();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; jogo_novo.setLocationRelativeTo(null);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; jogo_novo.setVisible(true);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; break;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/pre&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_flq6AhElpp4/TPE0Lf-MHeI/AAAAAAAAA6E/KficXZEM9qc/s1600/06+voc%25C3%25AA+ganhou.JPG" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://1.bp.blogspot.com/_flq6AhElpp4/TPE0Lf-MHeI/AAAAAAAAA6E/KficXZEM9qc/s1600/06+voc%25C3%25AA+ganhou.JPG" /&gt;&lt;/a&gt;&lt;/div&gt;Esta é a tela que aparece se o usuário ganha o Jogo. Se clicar em Sim, o jogo recomeçará, com uma nova palavra; se Não, o jogo seá fechado.&lt;br /&gt;O código no botão Sim é o seguinte:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre class="java" name="codeaaaaa"&gt;private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {                                         &lt;br /&gt;        // Dá um reset no jogo:&lt;br /&gt;        PalavraForca.setText("");&lt;br /&gt;        Tentativas.clear();&lt;br /&gt;        sortearpalavra();&lt;br /&gt;        FimDoJogo=false;&lt;br /&gt;        LabelImagem.setIcon(icon0);&lt;br /&gt;        NumTentativas=0;&lt;br /&gt;        desenharpalavra(false);&lt;br /&gt;        joga_nov.setVisible(false);&lt;br /&gt;    }&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;E no botão Não:&lt;br /&gt;&lt;br /&gt;&lt;pre class="java" name="codeaaaaa"&gt;private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) {                                         &lt;br /&gt;        System.exit(0);&lt;br /&gt;    }&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Quando o usuário perde o jogo, as mensagens são as mesmas, com os mesmos códigos.&lt;br /&gt;&lt;br /&gt;Vou passar agora para a parte do Cadastro. O post ta grandinho ja hehehe&lt;br /&gt;Não estou explicando muito o código porque a maior parte está comentada. E acho que o código não é muito difícil de entender.&lt;br /&gt;Continuando, a seguir a tela de Cadastro.&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_flq6AhElpp4/TPE_L6yrAUI/AAAAAAAAA6I/Q8ZWBmsgX7g/s1600/07+Tela+Cadastro.JPG" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="237" src="http://4.bp.blogspot.com/_flq6AhElpp4/TPE_L6yrAUI/AAAAAAAAA6I/Q8ZWBmsgX7g/s320/07+Tela+Cadastro.JPG" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;No primeiro Campo, o usuário digita a Palavra que ele quer que seja usada no jogo; na segunda, a Dica da palavra.&lt;br /&gt;No botão Salvar, o código é o seguinte:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre class="java" name="codeaaaaa"&gt;private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {                                         &lt;br /&gt;        BufferedWriter arquivo;&lt;br /&gt; String valores = txtpalavra.getText() + "#" + txtdica.getText();&lt;br /&gt; try {&lt;br /&gt;  // abre o arquivo de texto para acrescentar linhas&lt;br /&gt;  arquivo = new BufferedWriter(new FileWriter("Palavras.txt", true));&lt;br /&gt;  // escreve a linha de texto&lt;br /&gt;  arquivo.write(valores);&lt;br /&gt;  // insere uma quebra de linha&lt;br /&gt;  arquivo.newLine();&lt;br /&gt;  // força a gravação dos dados em disco&lt;br /&gt;  arquivo.flush();&lt;br /&gt;  arquivo.close();&lt;br /&gt;                txtpalavra.setText("");&lt;br /&gt;                txtdica.setText("");&lt;br /&gt;  }&lt;br /&gt; catch (IOException erro)&lt;br /&gt;  {&lt;br /&gt;  // trata o erro&lt;br /&gt;  }&lt;br /&gt;    } &lt;/pre&gt;&lt;br /&gt;É claro que terá alguns imports também, nada muito complicado.&lt;br /&gt;&lt;br /&gt;Bom, acho que no básico é isso.&lt;br /&gt;Não sou uma grande Expert em Java, mas to aprendendo ^^&lt;br /&gt;Faltou implementar algumas coisas também, quem sabe depois de modificar eu posto as mudanças aqui.&lt;br /&gt;&lt;br /&gt;Eabaixo, segue o Link pra quem quiser fazer download do Jogo. Só não consegui fazer o .jar executável funcionar XD&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.4shared.com/file/NKEODY4G/FORCA.html"&gt;http://www.4shared.com/file/NKEODY4G/FORCA.html&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Fui! :D&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1900921458821518619-8033236741230096585?l=foojava.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://foojava.blogspot.com/feeds/8033236741230096585/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://foojava.blogspot.com/2010/11/jogo-da-forca-em-java.html#comment-form' title='1 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1900921458821518619/posts/default/8033236741230096585'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1900921458821518619/posts/default/8033236741230096585'/><link rel='alternate' type='text/html' href='http://foojava.blogspot.com/2010/11/jogo-da-forca-em-java.html' title='Jogo da Forca em Java'/><author><name>Cátia</name><uri>http://www.blogger.com/profile/01601377648478797309</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='26' src='http://1.bp.blogspot.com/_flq6AhElpp4/TNqVynL2zcI/AAAAAAAAA3M/UAqRi7zht9o/S220/Foto-0246.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_flq6AhElpp4/TPDxkAtJqMI/AAAAAAAAA5w/DshDljIil7s/s72-c/inicial.JPG' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1900921458821518619.post-4984021226050012527</id><published>2010-04-20T22:56:00.001-03:00</published><updated>2010-04-20T22:59:31.916-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='jsp'/><category scheme='http://www.blogger.com/atom/ns#' term='NetBeans'/><title type='text'>Hello world, soma em JSP  - JavaServer Pages - Java para web</title><content type='html'>Olá pessoal! Bem vindos ao site que a um ano prublica tudo quanto é tipo de "hello world" em java. Mas esse vocês ainda não viram, pelo menos não aqui.&lt;br /&gt;&lt;br /&gt;Estou usando o NetBeans 6.8, completo. Devidamente instalado (&lt;a href="http://foojava.blogspot.com/2009/06/instalando-netbeans-em-linux.html"&gt;já vimos como fazer isso&lt;/a&gt;).&lt;br /&gt;&lt;br /&gt;Vou criar minha primeira JSP! Que emoção!&lt;br /&gt;&lt;br /&gt;Com a IDE aberta, vamos em file-&amp;gt;New Project. Escolha "Java Web" e "Web Application". Next.&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_MvDshKp6n3U/S85XYvtIzaI/AAAAAAAAArw/knk6WjB-i_8/s1600/file-new-project-web-app.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="414" src="http://3.bp.blogspot.com/_MvDshKp6n3U/S85XYvtIzaI/AAAAAAAAArw/knk6WjB-i_8/s640/file-new-project-web-app.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;Agora definimos onde vamos salvar os arquivos e qual vai ser o nome do projeto. Chamamos ele de "hello". Next.&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_MvDshKp6n3U/S85Xbph1L9I/AAAAAAAAAr4/DQrZoPn9fC0/s1600/hello-next.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="414" src="http://4.bp.blogspot.com/_MvDshKp6n3U/S85Xbph1L9I/AAAAAAAAAr4/DQrZoPn9fC0/s640/hello-next.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;O próximo passo é configurar "quem" vai rodar essas páginas. Durante a instalação instalamos o "GlassFish" que é um servidor web que entende JAVA. Tipo um "mod-php" do apache. Finish.&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_MvDshKp6n3U/S85XgnDtRyI/AAAAAAAAAsA/TjpG-J_6Kig/s1600/hello-server-finish.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="370" src="http://4.bp.blogspot.com/_MvDshKp6n3U/S85XgnDtRyI/AAAAAAAAAsA/TjpG-J_6Kig/s640/hello-server-finish.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;Depois do finish, ele vai demorar um pouco, criar arquivos, diretórios, registrar qualquer coisa... e vai te largar numa tela como a seguinte:&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_MvDshKp6n3U/S85ZVeDGfYI/AAAAAAAAAsI/iUbvunoRiAY/s1600/05-hello-scren.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="468" src="http://4.bp.blogspot.com/_MvDshKp6n3U/S85ZVeDGfYI/AAAAAAAAAsI/iUbvunoRiAY/s640/05-hello-scren.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;Nosso código ficou assim:&lt;br /&gt;&lt;pre class="java" name="codeaaaaa"&gt;int a = 5;&lt;br /&gt;int b = 8;        &lt;br /&gt;int r = a+b;&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;Veja a tela - preste atenção nos delimitadores do bloco de instruções (linha 18 e 22):&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_MvDshKp6n3U/S85bmU_ollI/AAAAAAAAAsg/gtNM2153WLE/s1600/07-codigo-ok.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="468" src="http://2.bp.blogspot.com/_MvDshKp6n3U/S85bmU_ollI/AAAAAAAAAsg/gtNM2153WLE/s640/07-codigo-ok.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;br /&gt;Observem que junto a "resultado" tem o comando para imprimir o &lt;b style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;r&lt;/b&gt;.&lt;br /&gt;&lt;br /&gt;Buenas! É isso!&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_MvDshKp6n3U/S85b4VMmlNI/AAAAAAAAAso/SxpDQ3tT2QY/s1600/06-resultado.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="280" src="http://4.bp.blogspot.com/_MvDshKp6n3U/S85b4VMmlNI/AAAAAAAAAso/SxpDQ3tT2QY/s400/06-resultado.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;br /&gt;Bom feriado!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1900921458821518619-4984021226050012527?l=foojava.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://foojava.blogspot.com/feeds/4984021226050012527/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://foojava.blogspot.com/2010/04/hello-world-soma-em-jsp-javaserver.html#comment-form' title='2 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1900921458821518619/posts/default/4984021226050012527'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1900921458821518619/posts/default/4984021226050012527'/><link rel='alternate' type='text/html' href='http://foojava.blogspot.com/2010/04/hello-world-soma-em-jsp-javaserver.html' title='Hello world, soma em JSP  - JavaServer Pages - Java para web'/><author><name>Helton Eduardo Ritter</name><uri>http://www.blogger.com/profile/08450017811928254585</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://3.bp.blogspot.com/_MvDshKp6n3U/TTMBkVo0g0I/AAAAAAAAA0o/-g6L_zkBVSI/S220/SDC13821.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_MvDshKp6n3U/S85XYvtIzaI/AAAAAAAAArw/knk6WjB-i_8/s72-c/file-new-project-web-app.png' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1900921458821518619.post-7475349886740610088</id><published>2010-04-16T22:29:00.001-03:00</published><updated>2010-04-16T22:34:41.573-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='matemática'/><category scheme='http://www.blogger.com/atom/ns#' term='swing/awt'/><category scheme='http://www.blogger.com/atom/ns#' term='jdeveloper'/><category scheme='http://www.blogger.com/atom/ns#' term='Tipos de dados'/><title type='text'>Soma em Java, com swing!</title><content type='html'>Hoje, durante a aula de Delphi, sem nada para fazer vi que tinha instalado na máquina da escola o Jdeveloper. Pensei em ver se eu ainda sabia alguma coisa, já que faz quase um ano que não digito uma linha de Java.&lt;br /&gt;&lt;br /&gt;Buenas, passo a passo.&lt;br /&gt;1 - Abra o Jdevelopper. File &amp;gt; New &amp;gt; General &amp;gt; Generic Application. Next.&lt;br /&gt;2 - Escolha o nome, onde salvar ... Next&lt;br /&gt;&lt;br /&gt;Na próxima tela ele vai pedir "que tecnologias" você quer adicionar no seu projeto.&lt;br /&gt;3 - Na aba "project tecnologies" adicione para sua aplicação "swing/awt". Next&lt;br /&gt;4 - Finish&lt;br /&gt;&lt;br /&gt;Agora vamos ao código, com o projeto criado, faça uma nova classe, a "&lt;strong&gt;&lt;em&gt;Calculo&lt;/em&gt;&lt;/strong&gt;" que faz a incrível soma:&lt;br /&gt;&lt;pre class="java" name="codeaaaaa"&gt;package javal;&lt;br /&gt;&lt;br /&gt;public class Calculo {&lt;br /&gt;    private int va;&lt;br /&gt;    private int vb;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;    public void setVa(int va) {&lt;br /&gt;        this.va = va;&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    public int getVa() {&lt;br /&gt;        return va;&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    public void setVb(int vb) {&lt;br /&gt;        this.vb = vb;&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    public int getVb() {&lt;br /&gt;        return vb;&lt;br /&gt;    }&lt;br /&gt;    &lt;br /&gt;    public int getSoma(){&lt;br /&gt;        return this.va + this.vb;&lt;br /&gt;    }&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Agora vamos criar a tela gráfica. File &amp;gt; New. Selecione "Client Tier" &amp;gt; Frame. Veja abaixo.&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_MvDshKp6n3U/S8kK0Xx-c0I/AAAAAAAAArc/G3i0eMGKm04/s1600/tela_grafica.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="457" src="http://3.bp.blogspot.com/_MvDshKp6n3U/S8kK0Xx-c0I/AAAAAAAAArc/G3i0eMGKm04/s640/tela_grafica.png" width="640" wt="true" /&gt;&lt;/a&gt;&lt;/div&gt;De ok. Na tela seguinte é deinido o nome da classe, no meu caso&amp;nbsp;coloquei o nome de "&lt;em&gt;&lt;strong&gt;Window&lt;/strong&gt;&lt;/em&gt;". Em seguida adicionei os componentes, jTextField's e JButton. Ficou como na figuira a seguir.&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_MvDshKp6n3U/S8kMJ9jkOnI/AAAAAAAAArk/uFWf4U0PI3U/s1600/tela_com_campos.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="379" src="http://3.bp.blogspot.com/_MvDshKp6n3U/S8kMJ9jkOnI/AAAAAAAAArk/uFWf4U0PI3U/s640/tela_com_campos.png" width="640" wt="true" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;Legal!&lt;br /&gt;Agora vamos fazer a tela que tem o main(), que inicia, roda o sistema todo!&lt;br /&gt;&lt;br /&gt;Faça uma nova classe, chamei ela de &lt;strong&gt;&lt;em&gt;Sistema&lt;/em&gt;&lt;/strong&gt;. Segue o código.&lt;br /&gt;&lt;pre class="java" name="codeaaaaa"&gt;package javal;&lt;br /&gt;&lt;br /&gt;public class Sistema {&lt;br /&gt;    public Sistema() {&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    public static void main(String[] args) {&lt;br /&gt;        Sistema sistema = new Sistema();&lt;br /&gt;        Window win = new Window();&lt;br /&gt;        System.out.print("Running...");&lt;br /&gt;        win.setVisible(true);&lt;br /&gt;    }&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Agora o que temos a fazer é na classe &lt;em&gt;&lt;strong&gt;Window&lt;/strong&gt;&lt;/em&gt;, fazer pegar o que o usuário digita nos campos, e fazer a chamada dos métodos de &lt;em&gt;&lt;strong&gt;Calculo&lt;/strong&gt;&lt;/em&gt;. De um clique duplo no botão, aí vai o seguinte código. Ele é auto-explicativo.&lt;br /&gt;&lt;br /&gt;&lt;pre class="java" name="codeaaaaa"&gt;int A = Integer.parseInt(jTextField1.getText());&lt;br /&gt;        int B = Integer.parseInt(jTextField2.getText());&lt;br /&gt;        int C = 0;&lt;br /&gt;                                                         &lt;br /&gt;        Calculo c = new Calculo();&lt;br /&gt;        &lt;br /&gt;        c.setVa(A);&lt;br /&gt;        c.setVb(B);&lt;br /&gt;        C = c.getSoma();&lt;br /&gt;        &lt;br /&gt;        jTextField3.setText(String.valueOf(C));   &lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;O primeiro campo é p &lt;strong&gt;&lt;em&gt;jTextField1&lt;/em&gt;&lt;/strong&gt; e assim na sequencia, como está na tela. Lembre que antes de passar o vaor para o método &lt;em&gt;&lt;strong&gt;c.setVa&lt;/strong&gt;&lt;/em&gt; ele tem que estar no formato/tipo correto, por isso tem que dar um &lt;strong&gt;&lt;em&gt;Integer.parseInt()&lt;/em&gt;&lt;/strong&gt; no &lt;strong&gt;&lt;em&gt;getText&lt;/em&gt;&lt;/strong&gt; do &lt;strong&gt;&lt;em&gt;jTextField&lt;/em&gt;&lt;/strong&gt;.&lt;br /&gt;&lt;br /&gt;O mesmo antes de mandar imprimir o valor, tem que converter para string. Aqui usamos o &lt;strong&gt;&lt;em&gt;String.valueOf().&lt;/em&gt;&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;Bem, funciona! Até o próximo.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1900921458821518619-7475349886740610088?l=foojava.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://foojava.blogspot.com/feeds/7475349886740610088/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://foojava.blogspot.com/2010/04/soma-em-java-com-swing.html#comment-form' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1900921458821518619/posts/default/7475349886740610088'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1900921458821518619/posts/default/7475349886740610088'/><link rel='alternate' type='text/html' href='http://foojava.blogspot.com/2010/04/soma-em-java-com-swing.html' title='Soma em Java, com swing!'/><author><name>Helton Eduardo Ritter</name><uri>http://www.blogger.com/profile/08450017811928254585</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://3.bp.blogspot.com/_MvDshKp6n3U/TTMBkVo0g0I/AAAAAAAAA0o/-g6L_zkBVSI/S220/SDC13821.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_MvDshKp6n3U/S8kK0Xx-c0I/AAAAAAAAArc/G3i0eMGKm04/s72-c/tela_grafica.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1900921458821518619.post-7010848043963984764</id><published>2010-02-26T11:43:00.036-03:00</published><updated>2010-02-26T16:05:33.496-03:00</updated><title type='text'>Primeira postagem \o/ - Exercícios em Java - Parte I</title><content type='html'>Bom dia!!!&lt;br /&gt;É minha primeira postagem aqui no blog!&lt;br /&gt;&lt;br /&gt;No semestre passado, comecei a matéria "Linguagem de Programação I" na faculdade de Ciência da Computação na UNIJUÍ, a qual se trata de Java.&lt;br /&gt;&lt;br /&gt;É claro que tem que haver exercícios. E é claro que praticamente ninguém faz o trabalho &lt;span style="font-style: italic;"&gt;totalmente &lt;/span&gt;sozinho. Copia um pouco de um, um pouco de outro, e faz um pouquinho também.&lt;br /&gt;&lt;br /&gt;Então, esses exercícios que pretendo postar,aviso desde já, são meus, mas com participações de alguns colegas que não vou citar, porque não lembro com quem peguei o que ^^&lt;br /&gt;&lt;br /&gt;Bom, como são 20 exercícios (que professor cruel...), vou postar 5 hoje, talvez 5 amanhã, e assim consecutivamente (eta palavra difícil!).&lt;br /&gt;&lt;br /&gt;Bom, então vamos ao que interessa: vou postar primeiro a questão dada pelo professor, e em seguida o código da solução.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Sugestões de modos diferentes, de complementos, críticas e talz, por favor, nos comentário.&lt;br /&gt;Let's go!&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;1)&lt;/b&gt;    Escrever um programa que lê três valores, que são os lados de um triângulo, e calcule a área deste triângulo:&lt;br /&gt;&lt;b&gt;Área&amp;nbsp; &lt;/b&gt;= raíz quadrada(&amp;nbsp;  S ( S – A ) ( S – B ) ( S – C ) )&lt;br /&gt;onde S é o semi-perímetro&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Solução:&lt;br /&gt;Arquivo: exe1.java&lt;br /&gt;&lt;pre class="java" name="codeaaaaa"&gt;import java.util.Scanner;&lt;br /&gt;&lt;br /&gt;class exe1&lt;br /&gt;&lt;br /&gt;{&lt;br /&gt;&lt;br /&gt;  static public void main (String[] args) {&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;     double x,a,b,c,s,area;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;     Scanner myScanner= new Scanner(System.in);&lt;br /&gt;&lt;br /&gt;     System.out.println ("Digite o lado 'A' do triangulo: ");&lt;br /&gt;&lt;br /&gt;     a=myScanner.nextDouble();&lt;br /&gt;&lt;br /&gt;     System.out.println ("Digite o lado 'B' do triangulo: ");&lt;br /&gt;&lt;br /&gt;     b=myScanner.nextDouble();&lt;br /&gt;&lt;br /&gt;     System.out.println ("Digite o lado 'C' do triangulo: ");&lt;br /&gt;&lt;br /&gt;     c=myScanner.nextDouble();&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;     s=(a+b+c)/2;&lt;br /&gt;&lt;br /&gt;     area= s*(s-a)*(s-b)*(s-c);&lt;br /&gt;&lt;br /&gt;     area=Math.sqrt(area);&lt;br /&gt;&lt;br /&gt;     System.out.println ("A area do triangulo e "+area);&lt;br /&gt;&lt;br /&gt;   }&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;2)&lt;/b&gt; Escrever um programa que determine o número de notas necessárias para compor o salário de um funcionário. Supondo a existência das notas de R$ 100,00, R$ 50,00, R$ 20,00, R$ 5,00, R$ 2,00 e R$ 1,00 um salário de R$ 1234,00 deveria ser decomposto da seguinte maneira:&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;Notas------------Quantidade&lt;br /&gt;R$ 100,00....................12&lt;br /&gt;R$ 50,00........................0&lt;br /&gt;R$ 20,00........................1&lt;br /&gt;R$ 10,00 .......................1&lt;br /&gt;R$ 5,00..........................0&lt;br /&gt;R$ 2,00..........................2&lt;br /&gt;R$ 1,00..........................0&lt;br /&gt;Total..................1234,00&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Solução:&lt;br /&gt;&lt;br /&gt;&lt;pre class="java" name="codeaaaaa"&gt;import java.util.Scanner;&lt;br /&gt;&lt;br /&gt;class exe2&lt;br /&gt;&lt;br /&gt;{ &lt;br /&gt;&lt;br /&gt; static public void main (String[] args) {&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt; Scanner myScanner = new Scanner(System.in);&lt;br /&gt;&lt;br /&gt; int sal,nota1,nota2,nota3,nota4,nota5,nota6,nota7,resto;&lt;br /&gt;&lt;br /&gt; System.out.println("Escreva o salario liquido do funcionario: ");&lt;br /&gt;&lt;br /&gt; sal=myScanner.nextInt();&lt;br /&gt;&lt;br /&gt; nota1=sal/100;&lt;br /&gt;&lt;br /&gt; resto=sal%100;&lt;br /&gt;&lt;br /&gt; nota2=resto/50;&lt;br /&gt;&lt;br /&gt; resto=resto%50;&lt;br /&gt;&lt;br /&gt; nota3=resto/20;&lt;br /&gt;&lt;br /&gt; resto=resto%20;&lt;br /&gt;&lt;br /&gt; nota4=resto/10;&lt;br /&gt;&lt;br /&gt; resto=resto%10;&lt;br /&gt;&lt;br /&gt; nota5=resto/5;&lt;br /&gt;&lt;br /&gt; resto=resto%5;&lt;br /&gt;&lt;br /&gt; nota6=resto/2;&lt;br /&gt;&lt;br /&gt; nota7=resto%2;&lt;br /&gt;&lt;br /&gt; System.out.println(" Notas "+"    Quantidade  ");&lt;br /&gt;&lt;br /&gt; System.out.println("R$ 100,00 "+nota1);&lt;br /&gt;&lt;br /&gt; System.out.println("R$ 50,00  "+nota2);&lt;br /&gt;&lt;br /&gt; System.out.println("R$ 20,00  "+nota3);&lt;br /&gt;&lt;br /&gt; System.out.println("R$ 10,00  "+nota4);&lt;br /&gt;&lt;br /&gt; System.out.println("R$ 5,00  "+nota5);&lt;br /&gt;&lt;br /&gt; System.out.println("R$ 2,00  "+nota6);&lt;br /&gt;&lt;br /&gt; System.out.println("R$ 1,00  "+nota7);&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt; System.out.println("Total: R$   "+sal);&lt;br /&gt;&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;3)&lt;/b&gt; Faça um programa em JAVA que leia o tempo de duração de um evento em uma fábrica expressa em segundos e mostre-o expresso em horas, minutos e segundos.&lt;br /&gt;&lt;br /&gt;Solução:&lt;br /&gt;&lt;br /&gt;&lt;pre class="java" name="codeaaaaa"&gt;import java.util.Scanner;&lt;br /&gt;&lt;br /&gt;class exe3&lt;br /&gt;&lt;br /&gt;{&lt;br /&gt;&lt;br /&gt;  static public void main (String[] args) {&lt;br /&gt;&lt;br /&gt; &lt;br /&gt;&lt;br /&gt; int seg,min,hor;&lt;br /&gt;&lt;br /&gt; Scanner myScanner=new Scanner(System.in);&lt;br /&gt;&lt;br /&gt; System.out.println("Digite os segundos: ");&lt;br /&gt;&lt;br /&gt; seg=myScanner.nextInt();&lt;br /&gt;&lt;br /&gt; hor=seg/3600;&lt;br /&gt;&lt;br /&gt; seg=seg%3600;&lt;br /&gt;&lt;br /&gt; min=seg/60;&lt;br /&gt;&lt;br /&gt; seg=seg%60;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt; System.out.println(hor+":"+min+":"+seg);&lt;br /&gt;&lt;br /&gt;      }&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;4)&lt;/b&gt; Escrever um programa que receba um par de valores X,Y que representam as coordenadas de um ponto no plano e determine o quadrante ao qual pertence o ponto ou se está sobre a origem ou ainda se está sobre um dos eixos cartesianos.&lt;br /&gt;&lt;br /&gt;Solução:&lt;br /&gt;&lt;br /&gt;&lt;pre class="java" name="codeaaaaa"&gt;import java.util.Scanner;&lt;br /&gt;&lt;br /&gt;class exe4&lt;br /&gt;&lt;br /&gt;{&lt;br /&gt;&lt;br /&gt;  static public void main (String[] args) {&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt; double coord1,coord2;&lt;br /&gt;&lt;br /&gt; double quadrante = 0d;&lt;br /&gt;&lt;br /&gt; Scanner myScanner = new Scanner(System.in);&lt;br /&gt;&lt;br /&gt; System.out.println ("Digite a cordenada de x: ");&lt;br /&gt;&lt;br /&gt; coord1=myScanner.nextDouble();&lt;br /&gt;&lt;br /&gt; System.out.println ("Digite a cordenada de y: ");&lt;br /&gt;&lt;br /&gt; coord2=myScanner.nextDouble();&lt;br /&gt;&lt;br /&gt; if (coord1==0 &amp;amp; coord2==0){&lt;br /&gt;&lt;br /&gt;  System.out.println ("Nenhum quadrante");&lt;br /&gt;&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; else&lt;br /&gt;&lt;br /&gt; {&lt;br /&gt;&lt;br /&gt;  if(coord1&amp;gt;0)  {&lt;br /&gt;&lt;br /&gt;   if(coord2&amp;gt;0){&lt;br /&gt;&lt;br /&gt;     quadrante=1d;&lt;br /&gt;&lt;br /&gt;   }&lt;br /&gt;&lt;br /&gt;   else{&lt;br /&gt;&lt;br /&gt;     quadrante=4d;&lt;br /&gt;&lt;br /&gt;   }&lt;br /&gt;&lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt;  else{&lt;br /&gt;&lt;br /&gt;  &lt;br /&gt;&lt;br /&gt;    if(coord2&amp;gt;0){&lt;br /&gt;&lt;br /&gt;     quadrante=2d;&lt;br /&gt;&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    else{&lt;br /&gt;&lt;br /&gt;     quadrante=3d;&lt;br /&gt;&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; System.out.println ("As coordenadas de x,y estão no: "+quadrante+" quadrante");&lt;br /&gt;&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt; &lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;5)&lt;/b&gt; Escrever um programa que leia quatro valores e os exiba em ordem decrescente.&lt;br /&gt;&lt;br /&gt;Solução:&lt;br /&gt;&lt;pre class="java" name="codeaaaaa"&gt;import java.io.*;&lt;br /&gt;&lt;br /&gt;import java.util.Scanner;&lt;br /&gt;&lt;br /&gt;import java.util.Arrays;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;class exe5 {&lt;br /&gt;&lt;br /&gt; static public double[] reverse(double array[]) {&lt;br /&gt;&lt;br /&gt;  double newArray[] = new double[array.length];&lt;br /&gt;&lt;br /&gt;  int j = (array.length - 1);&lt;br /&gt;&lt;br /&gt;  for(int i = 0; i &amp;lt; array.length; ++i){&lt;br /&gt;&lt;br /&gt;   newArray[i] = array[j];&lt;br /&gt;&lt;br /&gt;   --j;&lt;br /&gt;&lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt;  return newArray;&lt;br /&gt;&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt; static public void main (String[] args) {&lt;br /&gt;&lt;br /&gt;  double values[] = new double[4];&lt;br /&gt;&lt;br /&gt;  &lt;br /&gt;&lt;br /&gt;  Scanner scanner = new Scanner(System.in);&lt;br /&gt;&lt;br /&gt;  &lt;br /&gt;&lt;br /&gt;  for(int i = 0; i &amp;lt; 4; ++i){&lt;br /&gt;&lt;br /&gt;   System.out.println ("Digite o valor " + (i + 1));&lt;br /&gt;&lt;br /&gt;   values[i] = scanner.nextDouble();&lt;br /&gt;&lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt;  &lt;br /&gt;&lt;br /&gt;  Arrays.sort(values);&lt;br /&gt;&lt;br /&gt;  values = reverse(values);&lt;br /&gt;&lt;br /&gt;  System.out.println ("\nValores\n");&lt;br /&gt;&lt;br /&gt;  &lt;br /&gt;&lt;br /&gt;  for(int i = 0; i &amp;lt; values.length; ++i){&lt;br /&gt;&lt;br /&gt;   System.out.println(values[i]);&lt;br /&gt;&lt;br /&gt;  }           &lt;br /&gt;&lt;br /&gt;  &lt;br /&gt;&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Bom, aí estão os primeiros exercícios. Por favor, não sejam cruéis em seu comentário... hehehe... Foi no semestre passado, ja nem lembro direito... hehehe...&lt;br /&gt;Vou esperar vossa avaliação...&lt;br /&gt;Fui e ....&lt;br /&gt;...Voltaremos!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1900921458821518619-7010848043963984764?l=foojava.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://foojava.blogspot.com/feeds/7010848043963984764/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://foojava.blogspot.com/2010/02/primeira-postagem-o-exercicios-em-java.html#comment-form' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1900921458821518619/posts/default/7010848043963984764'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1900921458821518619/posts/default/7010848043963984764'/><link rel='alternate' type='text/html' href='http://foojava.blogspot.com/2010/02/primeira-postagem-o-exercicios-em-java.html' title='Primeira postagem \o/ - Exercícios em Java - Parte I'/><author><name>Cátia</name><uri>http://www.blogger.com/profile/01601377648478797309</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='33' height='26' src='http://1.bp.blogspot.com/_flq6AhElpp4/TNqVynL2zcI/AAAAAAAAA3M/UAqRi7zht9o/S220/Foto-0246.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1900921458821518619.post-7714857125632758580</id><published>2010-02-24T18:00:00.001-03:00</published><updated>2010-02-24T18:01:00.699-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='instalação'/><category scheme='http://www.blogger.com/atom/ns#' term='windows'/><category scheme='http://www.blogger.com/atom/ns#' term='jdeveloper'/><title type='text'>Instalando JDeveloper 11g no Windows</title><content type='html'>Olá pessoal, este é meu primeiro post aqui no Foo Java e, apesar do Helton ter dito em &lt;a href="http://foojava.blogspot.com/2009/06/instalando-jdeveloper-11-em-linux.html"&gt;seu post&lt;/a&gt; (recomendo a leitura) que não haveria um tutorial de instalação&amp;nbsp;para Windows pois segue o padrão NNF, vou colocar aqui os passos e algumas dicas para deixar seu Windows&amp;nbsp;pronto para programar em Java,&amp;nbsp;bem,&amp;nbsp;vamos lá!!&lt;br /&gt;&lt;br /&gt;Na minha máquina estou utilizando Windows 7 mas sei que funciona em XP e Vista também, abaixo disso não sei. Para começar é necessário se cadastrar no site da Oracle e&amp;nbsp;fazer o download do JDeveloper (&lt;a href="http://www.oracle.com/technology/software/products/jdev/htdocs/soft11.html"&gt;download - 993 MB&lt;/a&gt;) e do JDK (&lt;a href="http://java.sun.com/javase/downloads/index.jsp"&gt;download&lt;/a&gt;).&lt;br /&gt;&lt;br /&gt;Feito os downloads, primeiramente instalamos o JDK (NNF) e após ir até a pasta bin da instalação que provavelmente será "C:\Program Files\Java\jdk1.5.0_14\bin", copie este caminho, depois abra propriedades do sistema (Super+pause+break), clique em "Configurações avançadas do sistema" que está no lado esquerdo, veja imagem.&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_VjhF_SEitUs/S4WPhQ5DO2I/AAAAAAAABuQ/UU2IyCb7sWM/s1600-h/propriedades.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="250" kt="true" src="http://4.bp.blogspot.com/_VjhF_SEitUs/S4WPhQ5DO2I/AAAAAAAABuQ/UU2IyCb7sWM/s400/propriedades.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;Vai abrir um nova janela, abra a aba "Avançado" e depois clique&amp;nbsp;em "Váriaveis de Ambiente...", nesta nova janela procure por&amp;nbsp;"Path" nas variáveis do sistema, selecine e clica em editar, vai abrir&amp;nbsp;uma nova janela, adicione&amp;nbsp;um ponto e vírgula (;) ao final do que já estiver ai dentro e depois cole o caminho que está guardado na memória (bin JDK) conforme imagem abaixo.&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_VjhF_SEitUs/S4WRfvmEWfI/AAAAAAAABuY/BwcN0PXRdF0/s1600-h/valorvar.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="250" kt="true" src="http://2.bp.blogspot.com/_VjhF_SEitUs/S4WRfvmEWfI/AAAAAAAABuY/BwcN0PXRdF0/s400/valorvar.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;Clique em Ok, Ok e&amp;nbsp;Ok e pronto, vamos agora testar se foi instalado corretamente, no prompt de comando digite os seguintes comandos: "java -version" e "javac -version", um de cada vez, deve aparecer algo semelhante a imagem abaixo se estiver ok.&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_VjhF_SEitUs/S4WSP-QqHRI/AAAAAAAABug/iYr2PNUnLvc/s1600-h/teste.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="287" kt="true" src="http://1.bp.blogspot.com/_VjhF_SEitUs/S4WSP-QqHRI/AAAAAAAABug/iYr2PNUnLvc/s400/teste.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;Vamos agora instalar o JDeveloper em si (NNF), na primeira vez vai pedir para selecinoar qual interface carregar e tal, isso tudo você já viu no post do Helton &lt;a href="http://foojava.blogspot.com/2009/06/instalando-jdeveloper-11-em-linux.html"&gt;Instalando JDeveloper&amp;nbsp;11 em&amp;nbsp;Linux&lt;/a&gt;, no Windows é semelhante.&lt;br /&gt;&lt;br /&gt;Bom pessoal, quando aprender algo novo (Java) que o Helton ainda não tenha escrito aqui eu volto, se quiser dar uma passada no meu blog clique em &lt;a href="http://bolivarbutzke.blogspot.com/"&gt;Blog do Bolívar&lt;/a&gt;!&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Abraços!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1900921458821518619-7714857125632758580?l=foojava.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://foojava.blogspot.com/feeds/7714857125632758580/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://foojava.blogspot.com/2010/02/instalando-jdeveloper-11g-no-windows.html#comment-form' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1900921458821518619/posts/default/7714857125632758580'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1900921458821518619/posts/default/7714857125632758580'/><link rel='alternate' type='text/html' href='http://foojava.blogspot.com/2010/02/instalando-jdeveloper-11g-no-windows.html' title='Instalando JDeveloper 11g no Windows'/><author><name>Bolívar Arthur Butzke</name><uri>https://profiles.google.com/115253865457720310323</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-DKxFfFY7jkw/AAAAAAAAAAI/AAAAAAAACAc/L2U5KijlcQA/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_VjhF_SEitUs/S4WPhQ5DO2I/AAAAAAAABuQ/UU2IyCb7sWM/s72-c/propriedades.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1900921458821518619.post-8441372861656736472</id><published>2009-08-19T21:08:00.000-03:00</published><updated>2009-08-19T21:08:21.568-03:00</updated><title type='text'>Trabalhando com bancos de dados: Conectando com Mysql</title><content type='html'>&lt;div style="text-align: justify;"&gt;A linguagem Java oferece uma camada para acesso a banco de dados chamada JDBC que busca unificar a forma de acesso a diversos bancos de dados.&lt;br /&gt;&lt;br /&gt;A idéia é dinamicamente carregar o driver do banco de dados e então usar a classe &lt;i&gt;&lt;b&gt;Statement&lt;/b&gt;&lt;/i&gt; para executar as querys. Esta abastração permite uma programação independente do banco de dados.&lt;br /&gt;&lt;br /&gt;A maneira mais usual é deixar o sistema operacional se encarregar da conexão real com o banco de dados e usar pelo java a conexão ODBC já criada pelo SO, isso funciona bem em ambiente windows e com bancos de dados pequenos, mas por outro lado é uma solução muito vulnerável, pois o usuário pode apagar a ODBC, mudar o nome, desinstalar o driver pensando que “é um programa que ele não usa”.&lt;br /&gt;&lt;br /&gt;Há também dificuldades técnicas na questão de performance além do fato que ODBC é padrão apenas em ambiente windows, em outros sistemas operacionais não existe esse conceito (porque é ruim!).&lt;br /&gt;&lt;br /&gt;Se precisarmos usar uma conexão ODBC em Linux por exemplo precisa instalar e configurar o pacote “unixODBC” o que não é trivial.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;A melhor solução é não usar ODBC&lt;/b&gt; (mesmo que seja mais fácil em windows que é a maioria dos usuários) e &lt;b&gt;preferir pela conexão nativa&lt;/b&gt;.&lt;br /&gt;&lt;br /&gt;As IDE's Java normalmente já tem o driver JDBC de alguns bancos de dados (conforme interesse do fabricante da IDE) para conexão, o Oracle Jdeveoper possui conexão com BD Oracle por exemplo.&lt;br /&gt;&lt;br /&gt;Aqui faremos conexão com Mysql, como ainda não temos o driver, &lt;a href="http://dev.mysql.com/downloads/connector/j/5.1.html"&gt;baixamos ele&lt;/a&gt; do site do banco de dados. Normalmente a maioria dos bancos de dados em sei site tem ou indicam onde baixar o driver Java para conectar-se ao banco.&lt;br /&gt;&lt;br /&gt;Baixamos aqui o driver (do site www.mysql.com) para conectar-se, descompactamos o diretório e neste tem um arquivo “.jar”, um pacote de várias classes Java, esse é nosso driver de acesso nativo ao banco, independente de plataforma ou SO.&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_MvDshKp6n3U/SoyPu1XDgII/AAAAAAAAAds/KU0fp3SgXsE/s1600-h/java1.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://1.bp.blogspot.com/_MvDshKp6n3U/SoyPu1XDgII/AAAAAAAAAds/KU0fp3SgXsE/s320/java1.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Com o projeto aberto, clicamos com o botão auxiliar em “Project Properties”. O que precisamos fazer é que &lt;b&gt;esse driver seja compilado junto com os arquivos do nosso projeto&lt;/b&gt;, o detalhe é que ele não é um arquivo original de nosso projeto, por isso temos que indicar em &lt;i&gt;&lt;b&gt;classpath &lt;/b&gt;&lt;/i&gt;o caminho do driver.&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_MvDshKp6n3U/SoyP1eWeEZI/AAAAAAAAAd0/OoH3RkiNzFs/s1600-h/java2.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://2.bp.blogspot.com/_MvDshKp6n3U/SoyP1eWeEZI/AAAAAAAAAd0/OoH3RkiNzFs/s320/java2.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;Na tela que foi aberta escolha no menu “Liberaries and Classpath” (item 1). Em seguida aponte onde está o driver para conexão nativa (itens 2, 3 e 4). Aqui também poderiam ser adicionadas bibliotecas, componentes de terceiros como para geração de PDF ou algo do gênero. Por fim, clique em “ok” para gravar as novas configurações do ambiente.&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_MvDshKp6n3U/SoyQB03dbfI/AAAAAAAAAd8/7kTPrSeATQk/s1600-h/java3.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://3.bp.blogspot.com/_MvDshKp6n3U/SoyQB03dbfI/AAAAAAAAAd8/7kTPrSeATQk/s320/java3.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;Na página seguinte temos o código de uma classe para conexão e para executar de modo bem básico consultas em banco da dados.&lt;br /&gt;&lt;br /&gt;Importante destacar apenas o import nas bibliotecas do Java referentes a SQL, e o bloco try/catch que será discutido mais adiante em outro post possivelmente.&lt;br /&gt;&lt;br /&gt;O JDBC possui métodos diferentes para executar consultas (selects) e alterações (insert, update, delete) no banco de dados, por isso criamos também dois métodos para isso. O método de conexão é privado porque é chamado no momento de executar uma instrução, ele retorna um Statement, sobre o Statement é que as operações com o banco de dados acontecem.&lt;br /&gt;&lt;br /&gt;O que muda de coenxão entre os diversos bancos de dados é os poucos passos até se conseguir criar um objeto do tipo Statement, no caso&amp;nbsp; do Mysql temos que apontar o servidor de banco de dados, o banco que queremos trabalhar, qual usuário e senha estão fazendo essa conexão.&lt;br /&gt;&lt;br /&gt;O método executeSelect retorna um ResultSet, ou seja, um objeto com a coleção de dado atingida pelo select executado. O método executeUpdate retorna um inteiro apenas indicando quantos dados foram atingidos pelo comando. Observe que nem sempre aqui o resultado 0 (zero) indica que a SQL falhou ou não foi executada, apenas que nenhum dado foi atingido pelo comando DML. Confira a classe na sequencia. (clique para ver ela mais grande)&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_MvDshKp6n3U/SoyQTa_Hb5I/AAAAAAAAAeE/tsu5wslIfRo/s1600-h/java4.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://3.bp.blogspot.com/_MvDshKp6n3U/SoyQTa_Hb5I/AAAAAAAAAeE/tsu5wslIfRo/s320/java4.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;Nesta classe que usa a anterior apenas temos a chamada dos métodos. Premeiro limpamos a tabela (truncate), depois executamos um select e trazemos para tela o que ele retornou (nada), depois mandamos inserir dados e executamos o select novamente trazendo para tela o que tem nessa tabela no banco de dados.&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_MvDshKp6n3U/SoyQadkBepI/AAAAAAAAAeM/ElyL7YBLtEk/s1600-h/java5.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://1.bp.blogspot.com/_MvDshKp6n3U/SoyQadkBepI/AAAAAAAAAeM/ElyL7YBLtEk/s320/java5.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;Como pode perceber &lt;b&gt;trabalhar com banco de dados em sí é fácil, o complicado é ligar a camada de BD com a interface da aplicação e fazer isso de modo OO&lt;/b&gt;. Essas duas classes são o básico, com isso e mais um pouco de lógica da para fazer praticamente tudo em BD, o restante são minúcias de pegar valores de uma interface swing, concatenar esses valores dentro da SQL e mandar executar.&lt;br /&gt;&lt;br /&gt;Veja a prova do crime na figura abaixo. &lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_MvDshKp6n3U/SoyQ3dyHxOI/AAAAAAAAAeU/eGvpZxPuoFs/s1600-h/java6.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://3.bp.blogspot.com/_MvDshKp6n3U/SoyQ3dyHxOI/AAAAAAAAAeU/eGvpZxPuoFs/s320/java6.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;Valeu pessoal, nos vemos!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1900921458821518619-8441372861656736472?l=foojava.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://foojava.blogspot.com/feeds/8441372861656736472/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://foojava.blogspot.com/2009/08/trabalhando-com-bancos-de-dados.html#comment-form' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1900921458821518619/posts/default/8441372861656736472'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1900921458821518619/posts/default/8441372861656736472'/><link rel='alternate' type='text/html' href='http://foojava.blogspot.com/2009/08/trabalhando-com-bancos-de-dados.html' title='Trabalhando com bancos de dados: Conectando com Mysql'/><author><name>Helton Eduardo Ritter</name><uri>http://www.blogger.com/profile/08450017811928254585</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://3.bp.blogspot.com/_MvDshKp6n3U/TTMBkVo0g0I/AAAAAAAAA0o/-g6L_zkBVSI/S220/SDC13821.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_MvDshKp6n3U/SoyPu1XDgII/AAAAAAAAAds/KU0fp3SgXsE/s72-c/java1.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1900921458821518619.post-3565873185810179161</id><published>2009-07-03T08:46:00.003-03:00</published><updated>2009-07-03T08:54:59.732-03:00</updated><title type='text'>Tipos de dados em Java: Array e Vector</title><content type='html'>Olá, neste post/texto/artigo vamos falar um pouco sobre tipos de dados chamados de &amp;quot;coleções&amp;quot; em Java, são classes que agrupam outros dados.&lt;br&gt;&lt;br&gt;&lt;font size="4"&gt;&lt;b&gt;Tipos de dados: Array&lt;/b&gt;&lt;/font&gt;&lt;br&gt;&lt;br&gt;Um &lt;i&gt;Array&lt;/i&gt; ou uma matriz é um conjunto de dados de um mesmo tipo agrupados em uma mesma variável, esses valores são acessados através de índices numéricos, índices associativos (&lt;i&gt;Arrays&lt;/i&gt; associativos não são suportados).&lt;br&gt; &lt;br&gt;Em Java por ser uma linguagem estaticamente tipada, podemos ter em uma coleção de dados de um mesmo tipo apenas, logo podemos ter um &lt;i&gt;Array&lt;/i&gt; de inteiros, de Strings .... podemos também ter matrizes, ou seja em duas dimensões (&lt;i&gt;Array&lt;/i&gt; bidimensional) ou de mais dimensões, os índices a direita vão indicando em que nível de profundidade estamos acessando.&lt;br&gt; &lt;br&gt;Exemplo, declarando um &lt;i&gt;Array&lt;/i&gt; de inteiros:&lt;br&gt;&lt;br&gt;&lt;i style="color: rgb(51, 51, 255);"&gt;int[] parafusos;&lt;br&gt;&lt;br&gt;parafusos = new int[10];&lt;/i&gt;&lt;br&gt;&lt;br&gt;A limitação do Array é que ele tem um tamanho estático, ou seja, usamos esta estrutura quando sabemos quantos valores queremos armazenar na variável, por ser uma estrutura estática, seu uso requer menos processamento, por outro lado é inflexível.&lt;br&gt; &lt;br&gt;Para atribuir e resgatar dados de um Array, acessamos os seus índices. Veja no código a seguir.&lt;br&gt;&lt;br&gt;&lt;i style="color: rgb(51, 51, 255);"&gt;parafusos[1] = 12;&lt;br&gt;&lt;br&gt;parafusos[2] = 50;&lt;br&gt;&lt;br&gt;parafusos[3] = 9;&lt;br&gt;&lt;br&gt;parafusos[4] = 1;&lt;br&gt; &lt;br&gt;System.out.print(&amp;quot;Valor 1:&amp;quot;+parafusos[3]);&lt;/i&gt;&lt;br&gt;&lt;br&gt;Faz-se importante destacar que em Java os índices iniciam em 1 não em 0 como em C, JavaScript, PHP ou outras.&lt;br&gt;&lt;br&gt;Ainda é possível atribuir os valores do &lt;i&gt;Array&lt;/i&gt; de outra forma.&lt;br&gt; &lt;i&gt;&lt;br style="color: rgb(51, 51, 255);"&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;parafusos = {12,50,9,1};&lt;/span&gt;&lt;/i&gt;&lt;br&gt;&lt;br&gt;Para percorreu um &lt;i&gt;Array&lt;/i&gt; seja ele um vetor ou multidimensional, normalmente se usa um for, passando do primeiro ao último, e o índice do &lt;i&gt;Array&lt;/i&gt; é a variável contadora do for.&lt;br&gt; &lt;br&gt;&lt;b&gt;&lt;font size="4"&gt;Tipos de dados: Vector&lt;/font&gt;&lt;/b&gt;&lt;br&gt;&lt;br&gt;&lt;i&gt;Vector&lt;/i&gt; é uma classe (um tipo de dados) assim como o &lt;i&gt;Array&lt;/i&gt;, mas tem tamanho flexível, ao criar um não é preciso especificar seu tamanho(embora opcionalmente possa se fazer) e incluir as classes através de um &lt;i&gt;import&lt;/i&gt; no código java. No código a seguir onde criamos uma lista de n &lt;i&gt;Strings&lt;/i&gt; que são nomes de pessoas.&lt;br&gt; &lt;br&gt;&lt;a href="http://picasaweb.google.com/lh/photo/R7tg8AkOtLUPewHJWMi3xw?authkey=Gv1sRgCM7Tq4i3pJqCCg&amp;feat=embedwebsite"&gt;&lt;img src="http://lh4.ggpht.com/_MvDshKp6n3U/Sk3xCnHM94I/AAAAAAAAAbg/a-PpZFT4lqY/s800/01.png" /&gt;&lt;/a&gt;&lt;br&gt;Diferente do &lt;i&gt;Array&lt;/i&gt;, o &lt;i&gt;Vector&lt;/i&gt; pode armazenar qualquer tipo de dados, isso porque o Vector não guarda a informação em sí, apenas uma referência (um ponteiro) para onde está essa informação na memória. Dessa forma podemos guaradar qualquer objetos (das nossas classes e das do Java) em um Vector.&lt;br&gt; &lt;br&gt;Na classe main, criamos um objeto dessa classe (TesteVector). Usamos um tipo de dados &lt;i&gt;Enumeration&lt;/i&gt; para percorrer os dados do Vector. O tipo de dados &lt;i&gt;Enumeration&lt;/i&gt; possui métodos para percorrer listas, sendo de podemos avançar uma linha com&lt;i&gt; nextElement()&lt;/i&gt; e verificar se o "ponteiro" já não está na última linha com &lt;i&gt;hasMoreElements()&lt;/i&gt;.&lt;br&gt; &lt;br&gt;&lt;a href="http://picasaweb.google.com/lh/photo/Cu5Xd8qgmZXlAP8ZPbFsBQ?authkey=Gv1sRgCM7Tq4i3pJqCCg&amp;feat=embedwebsite"&gt;&lt;img src="http://lh5.ggpht.com/_MvDshKp6n3U/Sk3xCqJdBoI/AAAAAAAAAbk/XXyUg7pw6GQ/s400/02.png" /&gt;&lt;/a&gt;&lt;br&gt;&lt;br&gt;No código anterior, não declaramos o tamanho do Vector e adicionamos 4 nomes de pessoas, mas poderíamos adicionar mais. O Vector então se mostra uma boa opção quando estamos trabalhando com dados variáveis, como quando queremos armazenar em memória os dados de retorno de uma consulta SQL, ou leitura de um arquivo texto... sempre que teremos uma "coleção de dados" de tamanho variável.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1900921458821518619-3565873185810179161?l=foojava.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://foojava.blogspot.com/feeds/3565873185810179161/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://foojava.blogspot.com/2009/07/tipos-de-dados-em-java-array-e-vector.html#comment-form' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1900921458821518619/posts/default/3565873185810179161'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1900921458821518619/posts/default/3565873185810179161'/><link rel='alternate' type='text/html' href='http://foojava.blogspot.com/2009/07/tipos-de-dados-em-java-array-e-vector.html' title='Tipos de dados em Java: Array e Vector'/><author><name>Helton Eduardo Ritter</name><uri>http://www.blogger.com/profile/08450017811928254585</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://3.bp.blogspot.com/_MvDshKp6n3U/TTMBkVo0g0I/AAAAAAAAA0o/-g6L_zkBVSI/S220/SDC13821.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh4.ggpht.com/_MvDshKp6n3U/Sk3xCnHM94I/AAAAAAAAAbg/a-PpZFT4lqY/s72-c/01.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1900921458821518619.post-6250421769776364746</id><published>2009-06-23T08:31:00.001-03:00</published><updated>2009-06-23T08:31:39.552-03:00</updated><title type='text'>Convenções no/de código Java</title><content type='html'>Talvez por isso Java tenha ganhado tanto destaque nas empresas... porque você tem que ser um programador muito ruim mesmo para conseguir bagunçar um programa em Java. A linguagem, as IDE&amp;#39;s é tudo muito regrado, tem forma especificada para tudo, isso de certa forma é muito bom.&lt;br&gt; &lt;br&gt;Existe então padrão para como codificar, como escrever um programa, se uma variável deve ser minúscula, maiúscula, se for palavra composta devo usar &amp;quot;OutraPavara&amp;quot; ou &amp;quot;outra_palavra&amp;quot;? Enfim, muitas questões que são subjetivas ao programador, em java não são.&lt;br&gt; &lt;br&gt;Confesso que tinha rascunhado um artigo sobre isso, mas achei outros muito melhor elaborados do que meu planejamento, então não vou escrever nada e vou passar os links. &lt;br&gt;&lt;br&gt;Se você ainda tem dúvida de como fazer, quais prática adotar, não deixe de ler, é um tempo que vale a pena gastar.&lt;br&gt; &lt;br&gt;&lt;a href="http://montanhajava.blogspot.com/2009/02/convencoes-de-codificacao-java.html"&gt;Convenções de codificação em Java&lt;/a&gt;&lt;br&gt;&lt;a href="http://montanhajava.blogspot.com/2009/02/convencoes-de-codificacao-java-parte-2.html"&gt;&lt;br&gt; Convenções de codificação em Java - parte 2&lt;/a&gt;&lt;br&gt;&lt;a href="http://montanhajava.blogspot.com/2009/03/convencoes-de-codificacao-java-parte-3.html"&gt;&lt;br&gt;Convenções de codificação em Java - parte 3&lt;/a&gt;&lt;br&gt;&lt;br&gt;&lt;a href="http://montanhajava.blogspot.com/2009/03/convencoes-de-codificacao-java-parte-4.html"&gt;Convenções de codificação em Java - parte 4&lt;/a&gt;&lt;br&gt; &lt;br&gt;Até mais.&lt;br&gt; &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1900921458821518619-6250421769776364746?l=foojava.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://foojava.blogspot.com/feeds/6250421769776364746/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://foojava.blogspot.com/2009/06/convencoes-node-codigo-java.html#comment-form' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1900921458821518619/posts/default/6250421769776364746'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1900921458821518619/posts/default/6250421769776364746'/><link rel='alternate' type='text/html' href='http://foojava.blogspot.com/2009/06/convencoes-node-codigo-java.html' title='Convenções no/de código Java'/><author><name>Helton Eduardo Ritter</name><uri>http://www.blogger.com/profile/08450017811928254585</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://3.bp.blogspot.com/_MvDshKp6n3U/TTMBkVo0g0I/AAAAAAAAA0o/-g6L_zkBVSI/S220/SDC13821.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1900921458821518619.post-6436854270668493672</id><published>2009-06-22T19:56:00.005-03:00</published><updated>2009-06-22T20:26:02.038-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Tipos de dados'/><title type='text'>Tipos de dados em Java: int, Double e String</title><content type='html'>Olá novamente.&lt;br /&gt;&lt;br /&gt;Neste texto veremos como fazer uma classe em Java (bem simples) e como manipular 3 tipos de dados, o int e o Double e String, esses dois últimos são classes. Lembre de identificar e seguir as normas, uma classe (declaração) sempre deve iniciar com letra maiúscula, sendo assim "int" é um tipo primitivo de dados, String e Double são classes.&lt;br /&gt;&lt;br /&gt;Veja o código e comentamos depois.&lt;br /&gt;&lt;pre name="codeaaaaa" class="java"&gt;&lt;br /&gt;public class Sistema {&lt;br /&gt;private String nome;&lt;br /&gt;private int idade;&lt;br /&gt;private Double peso;&lt;br /&gt;&lt;br /&gt;public void setNome(String nome) {&lt;br /&gt;  this.nome = nome;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;public String getNome() {&lt;br /&gt;  return this.nome;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;public void setIdade(Integer idade) {&lt;br /&gt;  this.idade = idade;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;public int getIdade() {&lt;br /&gt;  return this.idade;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;public void setPeso(Double peso) {&lt;br /&gt;  this.peso = peso;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;public Double getPeso() {&lt;br /&gt;  return this.peso;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;public static void main(String[] args) {&lt;br /&gt;  Sistema sistema = new Sistema();&lt;br /&gt;&lt;br /&gt;  sistema.setIdade(10);&lt;br /&gt;  sistema.setNome("Teste");&lt;br /&gt;  sistema.setPeso(3.14);&lt;br /&gt;  System.out.println(""+sistema.getIdade()+"\n");&lt;br /&gt;  System.out.println(""+sistema.getPeso()+"\n");&lt;br /&gt;  System.out.println(sistema.getNome());&lt;br /&gt;}&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;Logo no início declaramos nome, idade e peso, com seus respectivos tipos. Em seguida implementamos os métodos assessores (get's e set's) para os atributos.&lt;br /&gt;&lt;br /&gt;Dentro do main, criamos um objeto do tipo "Sistema" (instanciamos a classe que é o nosso programa) e setamos dados aos atributos. No fim usamos os get's para exibir na tela o valor que tem em cada atributo.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Observações gerais sobre o código:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;- Você deve fornecer os dados no formato que o método está esperando. No caso o Double espera um valor do tipo decimal ou inteiro. O &lt;span style="font-style: italic;"&gt;System.out.println&lt;/span&gt; espera uma string, como os atributos idade e peso não são, com a conactenação (que só é possível com strings) convertemos os valores para serem exibidos pelo método.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1900921458821518619-6436854270668493672?l=foojava.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://foojava.blogspot.com/feeds/6436854270668493672/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://foojava.blogspot.com/2009/06/tipos-de-dados-em-java-int-double-e.html#comment-form' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1900921458821518619/posts/default/6436854270668493672'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1900921458821518619/posts/default/6436854270668493672'/><link rel='alternate' type='text/html' href='http://foojava.blogspot.com/2009/06/tipos-de-dados-em-java-int-double-e.html' title='Tipos de dados em Java: int, Double e String'/><author><name>Helton Eduardo Ritter</name><uri>http://www.blogger.com/profile/08450017811928254585</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://3.bp.blogspot.com/_MvDshKp6n3U/TTMBkVo0g0I/AAAAAAAAA0o/-g6L_zkBVSI/S220/SDC13821.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1900921458821518619.post-4184977543997603940</id><published>2009-06-09T22:00:00.001-03:00</published><updated>2009-06-09T22:19:31.332-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='analise oo'/><title type='text'>Antes de programar: Análise Orientada a Objetos</title><content type='html'>Vamos recordar como pensar na solução computacional de um problema pelo ponto de vista da orientação a objetos. Este texto não é específico para Java, vale para qualquer linguagem que lhe possibilite programar OO (orientado a objetos).&lt;br /&gt;&lt;br /&gt;Linguagens de programação orientadas a objeto assim como &lt;a href="http://includec.blogspot.com/"&gt;C++&lt;/a&gt; e Java nos forçam a desenvolver em outro paradigma. Mais que desenvolver, esse novo paradigma provoca também modificações na análise de um software, oferecendo as diversas "visões" do mesmo problema, cada visão busca identificar e de certa forma representar os artefatos do software a ser desenvolvido.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-size:130%;" &gt;O que é um objeto?&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Objeto é a unidade base desse paradigma de análise e programação. Um objeto é uma abstração da realidade de tal forma que lhes restem apenas as características que interessam no mundo computacional. Não necessariamente um objeto computacional tenha que ser um objeto real.&lt;br /&gt;&lt;br /&gt;Ao definir um objeto (e chamamos isso de classe, pois descreve uma "categoria", "conjunto de objetos"), nos perguntamos o que ele tem, e o que ele faz (os atributos e os métodos).&lt;br /&gt;&lt;br /&gt;Exemplos:&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Conexão com o banco de dados&lt;/span&gt;&lt;br /&gt;- (tem) usuário&lt;br /&gt;- (tem) senha&lt;br /&gt;- (tem) endereço do servidor de BD&lt;br /&gt;- (tem) nome do banco de dados&lt;br /&gt;- (faz) Conectar&lt;br /&gt;- (faz) Desconectar&lt;br /&gt;&lt;br /&gt;Aqui basicamente definimos o objeto "conexão", que não é um objeto do mundo real, mas existe no mundo computacional.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Livro&lt;/span&gt;&lt;br /&gt;- (tem) Título&lt;br /&gt;- (tem) Autor&lt;br /&gt;- (tem) Editora&lt;br /&gt;- (tem) Nro de páginas&lt;br /&gt;- (faz) ???&lt;br /&gt;&lt;br /&gt;O que um livro faz? Quais são as ações de um livro? Aqui chegamos a mais um ponto interessante. As características e ações (atributos e métodos) de UM MESMO OBJETO DO MUNDO REAL podem ser diferentes para problemas distintos. Cada análise usa apenas o que é necessário daquele objeto na resolução do problema. Sendo assim, para uma transportadora, pouco importa o título do livro, importa qual o seu peso e volume (volume de quantidade de espaço), características essas que são dispensáveis para o caso de uma biblioteca.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Conclusão 1:&lt;/span&gt; A representação de um objeto no mundo computacional é menos complexa do que no mundo real, pois no mundo computacional usa-se apenas o que convém para a resolução de um problema epecífico. Faz-se uma abstração.&lt;br /&gt;&lt;br /&gt;Isso nos leva a segunda conclusão.&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Conclusão 2:&lt;/span&gt; A análise orientada a objetos torna as coisas mais simples, porque cada objeto é uma entidade simples, tendo de forma organizada seus atributos e métodos.&lt;br /&gt;&lt;br /&gt;Para finalizar esse tópico, um objeto é representado, documentado, descrito através de uma Classe. O objeto é uma instância de uma classe, é um exemplar dentre os vários objetos que são do tipo de uma determinada classe.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-size:130%;" &gt;Qual o problema de programar ou analisar estruturado?&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Na verdade não há problema que não possa ser contornado, programadores e analistas experientes que nunca pensaram "orientado a objetos" tem em geral soluções elegantes para seus sotwares. O que acontece é que cada um tem uma, e cada um gasta um bom tempo até chegar a melhor solução, e a minha solução pode não se aplicar a outra pessoa, outro problema computacional.&lt;br /&gt;&lt;br /&gt;Orientação a objeto é um padrão de como fazer as coisas de modo que todos o façam daquela forma, objetivando nenhum retrabalho, total reaproveitamento de códigos e análises já feitas anteriormente e ainda que isso se aplique a uma ampla gama de problemas computacionais.&lt;br /&gt;&lt;br /&gt;Quem programa/analisa estrutural, pensa em que funções o software como um todo deverá ter. Orientado a objetos, pensa-se que dados e que ações cada objeto deverá ter. Pensando assim, em fragmentos mais pequenos e menos complexos há menos risco de esquecer ou menosprezar algum detalhe que no futuro (em uma análise/programação) estruturada poderia aparecer apenas durante um estágio avançado do desenvolvimento e complicar o projeto todo.&lt;br /&gt;&lt;br /&gt;Em geral costuma-se dizer que os dados possuem maior integridade quando tratados por um programa OO, porque cada objeto é responsável apenas por SEUS métodos e seus dados, podendo apenas o objeto fazer sua manipulação, e isso de forma especializada.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="font-weight: bold;"&gt;Quem programa procedural/estruturado programa errado?&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Não, em geral programas pequenos e de baixa complexidade não precisam de muito trabalho de análise para que possam ser desenvolvidos. A regra do custo/benefício da POO e análise OO é conforme o "tamanho do problema", quanto maior o programa, maiores serão os benefícios de uma análise OO.&lt;br /&gt;&lt;br /&gt;Porém é mais trabalhoso no processo inicial a análise OO em comparação da estruturada, e na estruturada, os resultados em forma de "programa executável" (quando é um problema pequeno) tendem a aparecer antes. Como tanto para analisar como para programar OO há muitas regras, demora mais até que a "burocracia" seja resolvida e possa-se programar efetivamente. Ressalto que esse trabalho adicional de análise é muito valho, uma análise mal feita é um projeto fracassado.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="font-weight: bold;"&gt;Ok, e como eu analiso um problema "pelo ponto de vista da orientação a objetos" ?&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Se leu até aqui já deve ter notado. O primeiro passo é identificar quem seão os objetos do problema. Vamos a um exemplo que fica mais fácil. Queremos fazer um software que é um dicionário, então um dos objetos é "o dicionário", um outro objeto poderiam ser "as palavras". Temos dois objetos, agora temos que descobrir dos nossos objetos quais atributos nos interessam.&lt;br /&gt;&lt;br /&gt;Objeto dicionário:&lt;br /&gt;Nro de palavras&lt;br /&gt;Idioma&lt;br /&gt;&lt;br /&gt;Objeto palavra&lt;br /&gt;TextoPalavra&lt;br /&gt;TextoSignificado&lt;br /&gt;&lt;br /&gt;O segundo passo é identificar que ações correspondem a cada objeto. No caso o objeto "dicionário" teria os métodos "abrir", "fechar" e "procurar palavra". temos aqui mais um tópico interessante, o dicionário "procura palavras" ou seja, as palavras tem uma "relação" com o objeto "dicionário.&lt;br /&gt;&lt;br /&gt;Mapeando as relações entre as classes podemos montar um diagrama de classes, que é um dos principais artefatos da análise pelo padrão UML.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="font-weight: bold;"&gt;UML? Quer dizer que tem um padrão para produzir uma especificação de análise orientada a objetos?&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;Exato, UML é um padrão para criar documentos de análise de software OO.&lt;br /&gt;&lt;br /&gt;UML (Unified Modeling Language), de acordo com Rumbaugh e Jacobson (2000), é uma linguagem para especificar, visualizar e construir os artefatos de sistemas de software. Ela é um sistema de notação (incluindo a semântica para suas notações) dirigida à modelagem de sistemas, usando conceitos orientados a objetos.&lt;br /&gt;&lt;/span&gt;&lt;span style="font-weight: bold;font-size:130%;" &gt;&lt;br /&gt;Nossa! Mas isso é complicado de mais. Não teria como resumir isso tudo "ao essencial" ?&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Muita coisa é essencial, tem que ler muito e praticar, não teria como resumir não.&lt;br /&gt;&lt;br /&gt;Justamente por ser muitas regras, precisar ter uma "base de conhecimento" pelo menos "meio boa" é que a maioria ainda prefere analisar e programar de forma estruturada (cada um cria seus padrões), e que os quem programa e analisa OO se destaca, se fosse "comum" não teria porque fazer um blog falando de Java, que é uma linguagem voltada para programação OO.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="font-weight: bold;"&gt;Ok, me de alguns links então ...&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Pesquise no google sobre "orientação a objeto", "análise orientada a objetos"... vá seguindo as pistas.&lt;br /&gt;&lt;br /&gt;É interessante ler também algum livro (ou apostila) sobre UML, seja UML 1 ou 2.&lt;br /&gt;&lt;br /&gt;Vamos aos softwares:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://jude.change-vision.com/jude-web/product/community.html"&gt;Jude Comunnity&lt;/a&gt; - Um programa free para criar documentos UML de análise de software.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://uml.sourceforge.net/"&gt;Umbrello&lt;/a&gt; - É o software usado pelo pessoal que faz análise do &lt;a href="http://www.kde.org/"&gt;KDE&lt;/a&gt;. Na &lt;a href="http://docs.kde.org/stable/pt_BR/kdesdk/umbrello/"&gt;documentação do KDE&lt;/a&gt; tem o help completíssimo. Eu particularmente aprendi mais sobre OO lendo essa documentação do que em livros. É claro, o conjunto é quem compõe a obra, talvez sem os livros o que diz na documentação não faria sentido nenhum.&lt;br /&gt;&lt;br /&gt;Em futuras postagens que envolvam algum documento UML, usarei o Umbrello por preferência própria.&lt;br /&gt;&lt;br /&gt;É isso! Até mais ver.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="font-weight: bold;"&gt;Referências:&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;RUMBAUGH, James; JACOBSON, Ivar; BOOCH, Grady. UML : Guia do Usuário. Rio de Janeiro, Campus, 2000.&lt;br /&gt;&lt;br /&gt;RITTER, Helton. PACHECO, Jonas R. Gestão Financeira para Propriedades Rurais na Perspectiva de Análise Orientada a Objetos. Relatório de Prática Profissional Direcionada III do curso Bacharelado do Sistemas de Informação. Três de Maio, SETREM: novembro de 2008.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1900921458821518619-4184977543997603940?l=foojava.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://foojava.blogspot.com/feeds/4184977543997603940/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://foojava.blogspot.com/2009/06/antes-de-programar-analise-orientada.html#comment-form' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1900921458821518619/posts/default/4184977543997603940'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1900921458821518619/posts/default/4184977543997603940'/><link rel='alternate' type='text/html' href='http://foojava.blogspot.com/2009/06/antes-de-programar-analise-orientada.html' title='Antes de programar: Análise Orientada a Objetos'/><author><name>Helton Eduardo Ritter</name><uri>http://www.blogger.com/profile/08450017811928254585</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://3.bp.blogspot.com/_MvDshKp6n3U/TTMBkVo0g0I/AAAAAAAAA0o/-g6L_zkBVSI/S220/SDC13821.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1900921458821518619.post-5097759591727279468</id><published>2009-06-09T00:16:00.005-03:00</published><updated>2009-06-13T00:22:04.335-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='where is the bug'/><title type='text'>Rodada 01: Where is the bug?</title><content type='html'>Olá pessoal! queremos que os Javaneses que leem esse blog participem! Por isso criamos os posts "where is the bug" onde serão cometidos todos os tipos de atrocidades programando em java.&lt;br /&gt;&lt;br /&gt;A gente posta um código ou alguma coisa COM ERRO(S) e vocês respondem nos comentáios tentando solucionar. Quem responder mais coisas certas nos comentários GANHA fama de ser "o bom (ou a boa)" do "where is the bug?" aqui do blog.&lt;br /&gt;&lt;br /&gt;Se ninguém postar solução, a solução oficial encontrada aqui pela equipe é postada duas semanas após lançado o desafio. O post do blog com o problema é atualizado, contendo aí a solução.&lt;br /&gt;&lt;br /&gt;Entendidas as regras do jogo?&lt;br /&gt;&lt;br /&gt;Well... play now!&lt;br /&gt;&lt;br /&gt;O primeiro problema é um código de "Hello World" (para ver que até nisso da para errar). Segue o código na figura abaixo:&lt;br /&gt;&lt;a href="http://picasaweb.google.com/lh/photo/aGG-Loiiiwo-cdZlwhumxQ?authkey=Gv1sRgCM7Tq4i3pJqCCg&amp;amp;feat=embedwebsite"&gt;&lt;img src="http://lh6.ggpht.com/_MvDshKp6n3U/Si3Usr36vBI/AAAAAAAAAZA/JNM80-tg-yA/s400/whereIsTheBug01.png" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;O código está no arquivo "teste.java" e não compila!&lt;br /&gt;&lt;br /&gt;O que devo fazer?&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;--&gt; SOLUCIONADO por Dalvan: veja nos comentários.&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1900921458821518619-5097759591727279468?l=foojava.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://foojava.blogspot.com/feeds/5097759591727279468/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://foojava.blogspot.com/2009/06/rodada-01-where-is-bug.html#comment-form' title='5 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1900921458821518619/posts/default/5097759591727279468'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1900921458821518619/posts/default/5097759591727279468'/><link rel='alternate' type='text/html' href='http://foojava.blogspot.com/2009/06/rodada-01-where-is-bug.html' title='Rodada 01: Where is the bug?'/><author><name>Helton Eduardo Ritter</name><uri>http://www.blogger.com/profile/08450017811928254585</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://3.bp.blogspot.com/_MvDshKp6n3U/TTMBkVo0g0I/AAAAAAAAA0o/-g6L_zkBVSI/S220/SDC13821.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh6.ggpht.com/_MvDshKp6n3U/Si3Usr36vBI/AAAAAAAAAZA/JNM80-tg-yA/s72-c/whereIsTheBug01.png' height='72' width='72'/><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1900921458821518619.post-5185748318226181061</id><published>2009-06-07T10:40:00.004-03:00</published><updated>2009-06-07T10:59:13.710-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='desktop'/><category scheme='http://www.blogger.com/atom/ns#' term='NetBeans'/><title type='text'>Hello World com NetBeans</title><content type='html'>Nesse rápido passo a passo para inaugurar  nossa &lt;a href="http://foojava.blogspot.com/2009/06/instalando-netbeans-em-linux.html"&gt;nova IDE instalada&lt;/a&gt;, vamos fazer um "Hello World".&lt;br /&gt;&lt;br /&gt;NetBeans é simples, maioria das coisas até mais intuitivo que o &lt;a href="http://foojava.blogspot.com/2009/06/hello-world-com-jdeveloper.html"&gt;JDeveloper&lt;/a&gt;. Era desenvolvido pela Sun, e JDeveloper pela Oracle, agora que a Oracle comprou a Sun, acho que os dois projetos vão acabar virando um só. Espero eu que vá para o lado do NetBeans, que é &lt;a href="http://www.opensource.org/"&gt;Open Source&lt;/a&gt;, não apenas Free como o JDeveloper.&lt;br /&gt;&lt;br /&gt;Abra o NetBeans, vá em "arquivo &gt; Novo Projeto". Escolha "aplicativo java".&lt;br /&gt;&lt;br /&gt;&lt;a href="http://picasaweb.google.com/lh/photo/RhdUu0Ajr5JR9X-VmCBacA?authkey=Gv1sRgCM7Tq4i3pJqCCg&amp;amp;feat=embedwebsite"&gt;&lt;img src="http://lh3.ggpht.com/_MvDshKp6n3U/SivDhxLAoiI/AAAAAAAAAYk/NEjQUxW3mP4/s400/aNetBeans01.png" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Nome do projeto, perceba que o nome da classe principal do aplicativo vai ficar com o nome do projeto que inserimos. E "finalizar".&lt;br /&gt;&lt;a href="http://picasaweb.google.com/lh/photo/FjFLgXCZO34DSgI9qbxJlw?authkey=Gv1sRgCM7Tq4i3pJqCCg&amp;amp;feat=embedwebsite"&gt;&lt;img src="http://lh6.ggpht.com/_MvDshKp6n3U/SivDiKy2HCI/AAAAAAAAAYo/2F3Qs2eTCCc/s400/aNetBeans02.png" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Escrevendo o código (ctrl + espaço para abrir a ajuda). Aqui também, conforme formos "navegando nas classes" ele vai mostrando uma curta documentação sobre aquela classe ou método. Lendo isso da para aprender muito.&lt;br /&gt;&lt;a href="http://picasaweb.google.com/lh/photo/xc0V578S5m-NYQVCfX7PIg?authkey=Gv1sRgCM7Tq4i3pJqCCg&amp;amp;feat=embedwebsite"&gt;&lt;img src="http://lh3.ggpht.com/_MvDshKp6n3U/SivDiFaL7zI/AAAAAAAAAYs/0nNoKiptzgs/s400/aNetBeans03.png" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;E clique em "executar Main project" (o botão tipo um play), ou tecla F6 no seu teclado. Na parte inferior da janela aparece a saída do programa com o nosso "hello" (clique para ver maior essa tela).&lt;br /&gt;&lt;a href="http://picasaweb.google.com/heltonritter/FooJava?authkey=Gv1sRgCM7Tq4i3pJqCCg&amp;amp;feat=embedwebsite#5344580377165234066"&gt;&lt;img src="http://lh5.ggpht.com/_MvDshKp6n3U/SivDiUZ0_5I/AAAAAAAAAYw/D442R2PeGQo/s400/aNetBeans04.png" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;De momento é isso. Divirta-se!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1900921458821518619-5185748318226181061?l=foojava.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://foojava.blogspot.com/feeds/5185748318226181061/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://foojava.blogspot.com/2009/06/hello-world-com-netbeans.html#comment-form' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1900921458821518619/posts/default/5185748318226181061'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1900921458821518619/posts/default/5185748318226181061'/><link rel='alternate' type='text/html' href='http://foojava.blogspot.com/2009/06/hello-world-com-netbeans.html' title='Hello World com NetBeans'/><author><name>Helton Eduardo Ritter</name><uri>http://www.blogger.com/profile/08450017811928254585</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://3.bp.blogspot.com/_MvDshKp6n3U/TTMBkVo0g0I/AAAAAAAAA0o/-g6L_zkBVSI/S220/SDC13821.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh3.ggpht.com/_MvDshKp6n3U/SivDhxLAoiI/AAAAAAAAAYk/NEjQUxW3mP4/s72-c/aNetBeans01.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1900921458821518619.post-7380512288415358122</id><published>2009-06-06T23:34:00.004-03:00</published><updated>2009-06-07T10:32:52.207-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='instalação'/><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='NetBeans'/><title type='text'>Instalando NetBeans em Linux</title><content type='html'>NetBeans é um ambiente de desenvolvimento completo, muito usado e &lt;a href="http://en.wikipedia.org/wiki/NetBeans"&gt;veja mais na wikipedia&lt;/a&gt;. Nas palavras do site oficial "The only IDE you need! Runs on Windows, Linux, Mac OS X and Solaris. NetBeans IDE is open-source and free."&lt;br /&gt;&lt;br /&gt;Baixe ele aqui: &lt;a href="http://www.netbeans.org/"&gt;http://www.netbeans.org&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;A instalação não tem mistério, você baixa do site o pacote mais adequado para o seu uso (beixei o completo), abre o terminal (com root) e manda executar o ".sh" de instalação. Um assistente gráfico lhe ajudará daqui por diante.&lt;br /&gt;&lt;br /&gt;Veja que aqui entrei como root e mandei executar o instalador.&lt;br /&gt;&lt;a href="http://picasaweb.google.com/lh/photo/TK-XhSF71kPqC95Ic7FDDA?authkey=Gv1sRgCM7Tq4i3pJqCCg&amp;amp;feat=embedwebsite"&gt;&lt;img src="http://lh4.ggpht.com/_MvDshKp6n3U/Sisn9K9gApI/AAAAAAAAAXs/BQgZVRfUTu0/s400/netbeens01.png" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Interface abre, e aí dou sequência a instalação.&lt;br /&gt;&lt;a href="http://picasaweb.google.com/lh/photo/V-npEoeKDPxEDzc0qkuHRw?authkey=Gv1sRgCM7Tq4i3pJqCCg&amp;amp;feat=embedwebsite"&gt;&lt;img src="http://lh3.ggpht.com/_MvDshKp6n3U/Sisn9VkGvlI/AAAAAAAAAXw/IIX7LQRcT9c/s400/netbeens02.png" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Aqui estou instalando a IDE completa, suporte a Java, PHP, Ruby, C/C++ ...&lt;br /&gt;&lt;a href="http://picasaweb.google.com/lh/photo/17DTHc1cwWR_91gGgLwivQ?authkey=Gv1sRgCM7Tq4i3pJqCCg&amp;amp;feat=embedwebsite"&gt;&lt;img src="http://lh3.ggpht.com/_MvDshKp6n3U/Sisn9cieTUI/AAAAAAAAAX0/TlRvgn14_7I/s400/netbeens03.png" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Leio e aceito a licença.&lt;br /&gt;&lt;a href="http://picasaweb.google.com/lh/photo/pqYfTzr1sJvJ7iAcnmzIPA?authkey=Gv1sRgCM7Tq4i3pJqCCg&amp;amp;feat=embedwebsite"&gt;&lt;img src="http://lh3.ggpht.com/_MvDshKp6n3U/Sisn9XhC03I/AAAAAAAAAX4/-uITfbJtCrI/s400/netbeens04.png" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Para mim, ao chegar nessa tela não deixava avançar porque não tinha encontrado onde  estavam os arquivos do JDK (dentre outras coisas aqui está o compilador para Java), então como eu já tenho o JDeveloper instalado, indiquei o diretório do JDK que vem com o JDeveloper. Enfim, caso o botão "próximo" não esteja abilitado, você terá que instalar ou indicar onde está o JDK.&lt;br /&gt;&lt;a href="http://picasaweb.google.com/lh/photo/YcqkiWZELcgIHBTEMkKltw?authkey=Gv1sRgCM7Tq4i3pJqCCg&amp;amp;feat=embedwebsite"&gt;&lt;img src="http://lh6.ggpht.com/_MvDshKp6n3U/Sisn9knkDMI/AAAAAAAAAX8/lZS2foMc1Ms/s400/netbeens05.png" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Guarde essas informações (ou salve essa figura aqui do blog) para caso precisar.&lt;br /&gt;&lt;a href="http://picasaweb.google.com/lh/photo/qPfFHg_jJb_p2rXR_QhzMQ?authkey=Gv1sRgCM7Tq4i3pJqCCg&amp;amp;feat=embedwebsite"&gt;&lt;img src="http://lh3.ggpht.com/_MvDshKp6n3U/SisouZsqLyI/AAAAAAAAAYA/lGlb15SEyNU/s400/netbeens06.png" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Siga em "próximo"&lt;br /&gt;&lt;a href="http://picasaweb.google.com/lh/photo/yVepMQ1F2AS_SybaPK79fQ?authkey=Gv1sRgCM7Tq4i3pJqCCg&amp;amp;feat=embedwebsite"&gt;&lt;img src="http://lh3.ggpht.com/_MvDshKp6n3U/SisoufNuPnI/AAAAAAAAAYE/m3gKLwEHtOI/s400/netbeens07.png" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;E "Instalar".&lt;br /&gt;&lt;a href="http://picasaweb.google.com/lh/photo/0z6sWv4BTBHui2R17yOeRQ?authkey=Gv1sRgCM7Tq4i3pJqCCg&amp;amp;feat=embedwebsite"&gt;&lt;img src="http://lh3.ggpht.com/_MvDshKp6n3U/SisouYI65kI/AAAAAAAAAYI/02OabayoxaQ/s400/netbeens08.png" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Vá fazer um cafézinho, assistir a propaganda na novela ou assistir um episódio do Chapolin Colorado, navegue no orkut, facebook, twitte alguma coisa ... (aguarde)&lt;br /&gt;&lt;a href="http://picasaweb.google.com/lh/photo/Bejac_fafEE6oWepGlLGPw?authkey=Gv1sRgCM7Tq4i3pJqCCg&amp;amp;feat=embedwebsite"&gt;&lt;img src="http://lh6.ggpht.com/_MvDshKp6n3U/SisouodUSMI/AAAAAAAAAYM/QEubn8YPTBA/s400/netbeens09.png" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Conforme quiser, desmarque os checkedboxes e vá em "terminar".&lt;br /&gt;&lt;a href="http://picasaweb.google.com/lh/photo/jJPSZN3Dd2airZm6HKub5w?authkey=Gv1sRgCM7Tq4i3pJqCCg&amp;amp;feat=embedwebsite"&gt;&lt;img src="http://lh3.ggpht.com/_MvDshKp6n3U/SisoulZdFHI/AAAAAAAAAYQ/jXVwsyeIbUk/s400/netbeens10.png" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Pronto! Instalado! O NetBeans provavelmente está no grupo "Desenvolvimento" no menu do seu computador.&lt;br /&gt;&lt;a href="http://picasaweb.google.com/lh/photo/DDiVTLQnXsPqXasMxKhDog?authkey=Gv1sRgCM7Tq4i3pJqCCg&amp;amp;feat=embedwebsite"&gt;&lt;img src="http://lh6.ggpht.com/_MvDshKp6n3U/Sispya_1zvI/AAAAAAAAAYU/xah_12QQJEw/s400/netbeens11.png" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Como instalei completo, vai demorar um pouco para abrir, mas vale a pena, é uma ótima IDE, a maioria dos tutoriais de Java na internet são usando NetBeans, porque realmente é a "IDE padrão".&lt;br /&gt;&lt;a href="http://picasaweb.google.com/lh/photo/EMrXc7fYs8bkegNcjlYScQ?authkey=Gv1sRgCM7Tq4i3pJqCCg&amp;amp;feat=embedwebsite"&gt;&lt;img src="http://lh6.ggpht.com/_MvDshKp6n3U/Sispya2d3EI/AAAAAAAAAYY/bS6F68JK4UU/s288/netbeens12.png" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Aqui mandei abrir um exemplo. Componentes, eventos e propriedades dos objetos no painel a direita, artefatos do software a direita. Bem familiar não (clique na figura para ampliar)?&lt;br /&gt;&lt;a href="http://picasaweb.google.com/lh/photo/jzCwt3SThhddqdwjlSuBOg?authkey=Gv1sRgCM7Tq4i3pJqCCg&amp;amp;feat=embedwebsite"&gt;&lt;img src="http://lh5.ggpht.com/_MvDshKp6n3U/SispyQ8Y9NI/AAAAAAAAAYc/p_tqIcaPjYo/s400/netbeens13.png" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Para executar/compilar aperte o "play".&lt;br /&gt;&lt;a href="http://picasaweb.google.com/lh/photo/EfZ10Fwc-bPpYijhFGOOdA?authkey=Gv1sRgCM7Tq4i3pJqCCg&amp;amp;feat=embedwebsite"&gt;&lt;img src="http://lh6.ggpht.com/_MvDshKp6n3U/SispynpMv6I/AAAAAAAAAYg/8B48ftXDqaQ/s400/netbeens15.png" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Aqui também a IDE é bem carregada, muitos componentes, um pouco diferente de trabalhar em relação ao JDeveloper, mas é coisa pouca, ainda falaremos sobre isso aqui no blog.&lt;br /&gt;&lt;br /&gt;E aí pessoal, precisa fazer um "Hello world!" com NetBeans?&lt;br /&gt;&lt;br /&gt;Qual IDE você prefere? Confesso que ainda não tenho opinião plenamente formada.&lt;br /&gt;&lt;br /&gt;Até o próximo!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1900921458821518619-7380512288415358122?l=foojava.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://foojava.blogspot.com/feeds/7380512288415358122/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://foojava.blogspot.com/2009/06/instalando-netbeans-em-linux.html#comment-form' title='1 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1900921458821518619/posts/default/7380512288415358122'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1900921458821518619/posts/default/7380512288415358122'/><link rel='alternate' type='text/html' href='http://foojava.blogspot.com/2009/06/instalando-netbeans-em-linux.html' title='Instalando NetBeans em Linux'/><author><name>Helton Eduardo Ritter</name><uri>http://www.blogger.com/profile/08450017811928254585</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://3.bp.blogspot.com/_MvDshKp6n3U/TTMBkVo0g0I/AAAAAAAAA0o/-g6L_zkBVSI/S220/SDC13821.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh4.ggpht.com/_MvDshKp6n3U/Sisn9K9gApI/AAAAAAAAAXs/BQgZVRfUTu0/s72-c/netbeens01.png' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1900921458821518619.post-7141653709952931405</id><published>2009-06-03T09:30:00.002-03:00</published><updated>2009-06-03T09:54:42.865-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='desktop'/><category scheme='http://www.blogger.com/atom/ns#' term='jdeveloper'/><title type='text'>Hello World com Jdeveloper</title><content type='html'>Novamente Olá!&lt;br /&gt;&lt;br /&gt;Vamos fazer um "olá mundo" em Java usando a ferramenta que instalamos no &lt;a href="http://foojava.blogspot.com/2009/06/instalando-jdeveloper-11-em-linux.html"&gt;post passado&lt;/a&gt;. Não vai ser "explicado" porque das coisas, é mais para "inaugurar" o novo programa instalado.&lt;br /&gt;&lt;br /&gt;Bom, primeira coisa então, abrir o JDeveloper. Vale lembrar que quem usa em Windows ou outro sistema operacional, o procedimento é o mesmo, já que esse texto é focado na ferramenta.&lt;br /&gt;&lt;a href="http://picasaweb.google.com/lh/photo/6se1sANWzq1PWU9bhiqY_w?authkey=Gv1sRgCM7Tq4i3pJqCCg&amp;amp;feat=embedwebsite"&gt;&lt;img src="http://lh4.ggpht.com/_MvDshKp6n3U/SiW9sPcWR5I/AAAAAAAAAUU/p2Fihkl7Lbk/s400/14.png" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;JDeveloper aberto, vá no menu em "file&gt;new". Na tela que se apresenta escolha "Generic Application".&lt;br /&gt;&lt;a href="http://picasaweb.google.com/heltonritter/FooJava?authkey=Gv1sRgCM7Tq4i3pJqCCg&amp;amp;feat=embedwebsite#5342901168406798322"&gt;&lt;img src="http://lh4.ggpht.com/_MvDshKp6n3U/SiXMTgToH_I/AAAAAAAAAUk/qDFUoeHffl0/s400/a01.png" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Agora ele nos pede onde salvar os arquivos do nossa aplicação, criei aqui uma pasta qualquer e indiquei esse caminho. Avançe em "next".&lt;br /&gt;&lt;a href="http://picasaweb.google.com/lh/photo/BA6DdjxLN0Gf5TAQZBgfSA?authkey=Gv1sRgCM7Tq4i3pJqCCg&amp;amp;feat=embedwebsite"&gt;&lt;img src="http://lh5.ggpht.com/_MvDshKp6n3U/SiXMTuOxrlI/AAAAAAAAAUo/K-b7X_e3VPE/s400/a2.png" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;A próxima tela é a do projeto. Uma aplicação no conceito do JDeveloper pode ter vários projetos, esse projeto se chama "teste" e vai ser salvo na pasta "teste" (dentro de /home/helton2/javatestes/). Aqui também podemos adicionar "quais tecnologias" o nosso programa vai usar. No nosso caso nenhuma, só o "core" da linguagem em sí. Avançe em "finish".&lt;br /&gt;&lt;a href="http://picasaweb.google.com/lh/photo/1tl-T0teMsSIVxa-2jFg4w?authkey=Gv1sRgCM7Tq4i3pJqCCg&amp;amp;feat=embedwebsite"&gt;&lt;img src="http://lh6.ggpht.com/_MvDshKp6n3U/SiXMTlY6jcI/AAAAAAAAAUs/zvchwA7EwSA/s400/a3.png" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Perceba que na lateral foi criado "teste", que é o nosso projeto, agora temos que efetivamente dizer "do que é composto" esse nosso aplicativo. Então como botão direito em cima de "teste" (lateral direita), clique em "new". Na tela que se abre escolha "Java Class". Siga em "ok".&lt;br /&gt;&lt;a href="http://picasaweb.google.com/lh/photo/FNGfEYWqCTgKZDwVJ76UwQ?authkey=Gv1sRgCM7Tq4i3pJqCCg&amp;amp;feat=embedwebsite"&gt;&lt;img src="http://lh4.ggpht.com/_MvDshKp6n3U/SiXMTkTAG3I/AAAAAAAAAUw/W38oqn0He4Y/s400/a4.png" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Hora de criar a classe principal de nosso programa. Perceba que &lt;span style="font-weight: bold;"&gt;o nome de uma classe&lt;/span&gt;, segundo a &lt;span style="font-weight: bold;"&gt;nomenclatura padrão do Java deve iniciar com uma letra maiúscula&lt;/span&gt;, e se aplicam aqui todas aquelas regras de nomes de variáveis das outras linguagens de programação. Criamos então a classe "Hello", marque a opção "generate Main method" e de "ok". Aqui o conceito é igual em C, main é a função (no caso de java método) principal, ela que chama, execute, invoca todo o restante do programa. Todo programa deve ter uma "main".&lt;br /&gt;&lt;a href="http://picasaweb.google.com/lh/photo/GBjBpl2OoOH9Iq540IWDhg?authkey=Gv1sRgCM7Tq4i3pJqCCg&amp;amp;feat=embedwebsite"&gt;&lt;img src="http://lh3.ggpht.com/_MvDshKp6n3U/SiXMTznOn_I/AAAAAAAAAU0/3LvKEftXu4Q/s288/a5.png" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Agora o JDeveloper criou um pouco de código para nós, a declaração do pacote (qualquer dia falamos disso), a declaração da classe pública "main" que se chama "Hello" e dentro dela o método construtor, e abaixo ainda o método estático (qualquer dia falamos disso) main.&lt;br /&gt;&lt;a href="http://picasaweb.google.com/lh/photo/gTKEcy2Wt1OHcWluFM2r4Q?authkey=Gv1sRgCM7Tq4i3pJqCCg&amp;amp;feat=embedwebsite"&gt;&lt;img src="http://lh3.ggpht.com/_MvDshKp6n3U/SiXOhiHrpAI/AAAAAAAAAU4/XF_arkg7880/s400/a6.png" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;É dentro da main que entra nosso código de "olá mundo". o comando é o seguinte:&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;System.out.print("Ola mundo");&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Clique e veja a figura abaixo um pouco maior. Para executar tem um botão verde, um "play". Clique lá, vai compilar e executar nosso teste. A saída do nosso programa é na parte inferior do programa. Veja que está destacado na tela "Hello World! Java is Here!".&lt;br /&gt;&lt;a href="http://picasaweb.google.com/lh/photo/FNBwW6CY9r5jk0tnqTcW3w?authkey=Gv1sRgCM7Tq4i3pJqCCg&amp;amp;feat=embedwebsite"&gt;&lt;img src="http://lh3.ggpht.com/_MvDshKp6n3U/SiXOhoxvLbI/AAAAAAAAAU8/iYtabz4rMqI/s400/a8.png" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Missão cumprida, Hello word em Java com JDeveloper  não é mais mistério!&lt;br /&gt;&lt;br /&gt;Até o próximo.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1900921458821518619-7141653709952931405?l=foojava.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://foojava.blogspot.com/feeds/7141653709952931405/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://foojava.blogspot.com/2009/06/hello-world-com-jdeveloper.html#comment-form' title='1 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1900921458821518619/posts/default/7141653709952931405'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1900921458821518619/posts/default/7141653709952931405'/><link rel='alternate' type='text/html' href='http://foojava.blogspot.com/2009/06/hello-world-com-jdeveloper.html' title='Hello World com Jdeveloper'/><author><name>Helton Eduardo Ritter</name><uri>http://www.blogger.com/profile/08450017811928254585</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://3.bp.blogspot.com/_MvDshKp6n3U/TTMBkVo0g0I/AAAAAAAAA0o/-g6L_zkBVSI/S220/SDC13821.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh4.ggpht.com/_MvDshKp6n3U/SiW9sPcWR5I/AAAAAAAAAUU/p2Fihkl7Lbk/s72-c/14.png' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1900921458821518619.post-7861267232774729502</id><published>2009-06-02T19:50:00.005-03:00</published><updated>2009-06-03T09:57:53.026-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='instalação'/><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='desktop'/><category scheme='http://www.blogger.com/atom/ns#' term='jdeveloper'/><title type='text'>Instalando JDeveloper 11 em Linux</title><content type='html'>Neste primeiro post útil vou mostrar como instalar o famoso ambiente de desenvolvimento para Java da Oracle, o &lt;a href="http://www.oracle.com/technology/software/products/jdev/index.html"&gt;JDeveloper&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Antes ainda da Oracle comprar a Sun (que produz o Java) a Oracle comprou os fontes do JBuilder que era da Borland e transformou no que é hoje o JDeveloper. A &lt;a href="http://en.wikipedia.org/wiki/JDeveloper"&gt;Wikipedia&lt;/a&gt; esclarece um pouco mais. Eu particularmente não gosto de IDE escrita em Java porque ela geralmente é lenta! Ainda não tive nenhuma experiência que me provasse o contrário.&lt;br /&gt;&lt;br /&gt;O JDeveloper é free, pode ser baixado no site da Oracle &lt;a href="http://www.oracle.com/technology/software/products/jdev/index.html"&gt;neste link&lt;/a&gt;. Você só precisa se cadastrar antes. Como é feito em Java, roda em Windows, Linux, Mac OS e outra possível plataforma que roda Java. Precisa do JDK,  mas vem junto com o pequeno pacote a ser baixado, normalmente algo como 700MB.&lt;br /&gt;&lt;br /&gt;Em Windows a princípio não haverá um post de "como instalar", pois segue o padrão NNF (next, next, finish).&lt;br /&gt;&lt;br /&gt;Baixadado o pacote (o ".bin") que é mais fácil. Abri uma tela no terminal, loguei como root porque a instalação vai precisar criar diretórios, arquivos em locais que só  o root tem acesso por padrão. Em seguida é só mandar executar o instalador, no nosso caso "./jdevstudio11110install.bin".&lt;br /&gt;&lt;br /&gt;&lt;a href="http://picasaweb.google.com/heltonritter/FooJava?authkey=Gv1sRgCM7Tq4i3pJqCCg&amp;amp;feat=embedwebsite#5342888271803277586"&gt;&lt;img src="http://lh4.ggpht.com/_MvDshKp6n3U/SiXAk0tvYRI/AAAAAAAAAUc/A3GMBrKf3ok/s400/01.png" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Ele vai descompactar em algum lugar temporário e abrirá uma tela gráfica para darmos continuidade a instalação. Nesta primeira tela apenas "next".&lt;br /&gt;&lt;br /&gt;&lt;a href="http://picasaweb.google.com/lh/photo/_borHr_EjVgnWl3suHYfVQ?authkey=Gv1sRgCM7Tq4i3pJqCCg&amp;amp;feat=embedwebsite"&gt;&lt;img src="http://lh6.ggpht.com/_MvDshKp6n3U/SiW6Kz_pSXI/AAAAAAAAATk/uL-LswaU5PU/s400/02.png" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Como estamos logados como "root" (no console que iniciou essa instalação), ele sugere para instalar em "/root", achei que não era um bom local e troquei para "/usr/local", conforme figura a seguir. Fazendo esse ajuste clique em "next".&lt;br /&gt;&lt;a href="http://picasaweb.google.com/lh/photo/tT-Cge3qG_LbHnlcTpfANQ?authkey=Gv1sRgCM7Tq4i3pJqCCg&amp;amp;feat=embedwebsite"&gt;&lt;img src="http://lh3.ggpht.com/_MvDshKp6n3U/SiW6K7qeqQI/AAAAAAAAATo/UfQRyxsie0s/s400/03.png" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Nesta outra tela nos pede sobre a instalação, como eu não sei ainda o que vou precisar, escolho a instalação completa.&lt;br /&gt;&lt;a href="http://picasaweb.google.com/lh/photo/ryEUiwMwXlHmLH7l3-eOMA?authkey=Gv1sRgCM7Tq4i3pJqCCg&amp;amp;feat=embedwebsite"&gt;&lt;img src="http://lh5.ggpht.com/_MvDshKp6n3U/SiW6K5eMNxI/AAAAAAAAATs/162kC22kmYA/s400/04.png" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Agora ele nos dá a ultima chance de se arrepender, e nos pede para confirmar as configurações da instalação. É isso mesmo, aperte "next".&lt;br /&gt;&lt;a href="http://picasaweb.google.com/lh/photo/m0idtc4HevfD_908TBRDHA?authkey=Gv1sRgCM7Tq4i3pJqCCg&amp;amp;feat=embedwebsite"&gt;&lt;img src="http://lh6.ggpht.com/_MvDshKp6n3U/SiW6K2VlFkI/AAAAAAAAATw/rUNsS9vViZ0/s400/05.png" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Mais informações sobre a instalação, vai verificar se minha máquina tem disco suficiente para a instalação escolhida. Na versão 11, instalação completa, como pode ver ele precisa de praticamente 1GB de disco! Siga no botão "next".&lt;br /&gt;&lt;a href="http://picasaweb.google.com/lh/photo/dln85MXGjbU0tQHaHIdAfg?authkey=Gv1sRgCM7Tq4i3pJqCCg&amp;amp;feat=embedwebsite"&gt;&lt;img src="http://lh5.ggpht.com/_MvDshKp6n3U/SiW7pj9pysI/AAAAAAAAAT0/Xy8H_YL0a8Q/s400/06.png" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Se quiser fique lendo as propagandas que aparecem nas telas a seguir, ou vá buscar um cafézinho. Aguarde.... (bastante).&lt;br /&gt;&lt;a href="http://picasaweb.google.com/lh/photo/4TAlL62QR9WGFud1CQTNUA?authkey=Gv1sRgCM7Tq4i3pJqCCg&amp;amp;feat=embedwebsite"&gt;&lt;img src="http://lh5.ggpht.com/_MvDshKp6n3U/SiW7pq_VXOI/AAAAAAAAAT4/VNe3SUvUby0/s400/07.png" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Pronto! Instalação feita! Agora vamos executar nossa IDE pela primeira vez! (lembre, estamos com root). Deixe o checkedbox marcado e clique em "done".&lt;br /&gt;&lt;a href="http://picasaweb.google.com/lh/photo/LMQpV8QeBx0YWiQ2-IETSQ?authkey=Gv1sRgCM7Tq4i3pJqCCg&amp;amp;feat=embedwebsite"&gt;&lt;img src="http://lh3.ggpht.com/_MvDshKp6n3U/SiW7pmTr6bI/AAAAAAAAAT8/9vxHDrIujHo/s400/08.png" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Agora vai abrir uma tela com algumas opções, que de momento não nos interessam. Escolha a primeira que deve começar a rodar o JDeveloper.&lt;br /&gt;&lt;a href="http://picasaweb.google.com/lh/photo/KhuU3CCxHPU-Sug7dsAoQA?authkey=Gv1sRgCM7Tq4i3pJqCCg&amp;amp;feat=embedwebsite"&gt;&lt;img src="http://lh5.ggpht.com/_MvDshKp6n3U/SiW7p_6wAQI/AAAAAAAAAUA/soiv9qZXRbA/s400/09.png" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;A primeira vez que um usuário abre o programa ele pede "como" ele deve organizar o layout da IDE (da para mudar depois). A  maneira padrão que é como ele sugere é boa. Se você tiver um monitor grande ou dois monitores, melhor ainda, porque a IDE é bem "carregada" tem muita coisa. Desmarque o checkedbox que diz se é ou não para pedir toda vez ao iniciar essa configuração. Clique "ok".&lt;br /&gt;&lt;br /&gt;&lt;a href="http://picasaweb.google.com/lh/photo/-wgaAq_hphB6V6zlM1GXjQ?authkey=Gv1sRgCM7Tq4i3pJqCCg&amp;amp;feat=embedwebsite"&gt;&lt;img src="http://lh6.ggpht.com/_MvDshKp6n3U/SiW7p0yRiUI/AAAAAAAAAUE/jn5Y5S76ZkA/s400/10.png" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Perceba que o instalador acabou (veja na tela de baixo, o cursor já foi liberado), e agora um novo processo está rodando. Se demorar a abrir, acalme-se, é a primeira vez que está abrindo o programa, depois demora um pouco menos.&lt;br /&gt;&lt;a href="http://picasaweb.google.com/lh/photo/s3aSJaI-Fk9ginrByieMHw?authkey=Gv1sRgCM7Tq4i3pJqCCg&amp;amp;feat=embedwebsite"&gt;&lt;img src="http://lh4.ggpht.com/_MvDshKp6n3U/SiW9rzCL-oI/AAAAAAAAAUI/o_44crHwghY/s400/11.png" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Da mesma forma, como é a primeira vez, ele nos pede se queremos migrar as configurações de uma instalação antiga, neste caso como não temos uma instalação antiga, não tem porque (escolha "no").&lt;br /&gt;&lt;a href="http://picasaweb.google.com/lh/photo/S5no_FCTmkn9Eol6uoD98w?authkey=Gv1sRgCM7Tq4i3pJqCCg&amp;amp;feat=embedwebsite"&gt;&lt;img src="http://lh6.ggpht.com/_MvDshKp6n3U/SiW9r55VBNI/AAAAAAAAAUM/FaHalAD914c/s288/12.png" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Finalmente carregando a IDE! Aqui no meu computador (P4 HT 3.0 Ghz, 2 GB RAM)  a IDE carrega MUITO mais rápido no linux (Mandriva 2009 Power Pack) que no Windows (xp sp3).&lt;br /&gt;&lt;a href="http://picasaweb.google.com/lh/photo/BElMmiF5-r1DzKvsZ30xLQ?authkey=Gv1sRgCM7Tq4i3pJqCCg&amp;amp;feat=embedwebsite"&gt;&lt;img src="http://lh6.ggpht.com/_MvDshKp6n3U/SiW9sNMY_NI/AAAAAAAAAUQ/wQSw_YLD_nQ/s800/13.png" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;E.... rufem os tambores! Instalado!&lt;br /&gt;&lt;a href="http://picasaweb.google.com/lh/photo/6se1sANWzq1PWU9bhiqY_w?authkey=Gv1sRgCM7Tq4i3pJqCCg&amp;amp;feat=embedwebsite"&gt;&lt;img src="http://lh4.ggpht.com/_MvDshKp6n3U/SiW9sPcWR5I/AAAAAAAAAUU/p2Fihkl7Lbk/s400/14.png" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Se você leu até aqui, obrigado pela persistência! mas temos mais alguns ajustes. Feche a tela da IDE, feche o terminal que tinha aberto antes. Agora vá procurar o JDeveloper nos menus [tempo]. Não achou? Eu também não!&lt;br /&gt;&lt;br /&gt;Como resolver isso? Faça um atalho (onde quiser, eu fiz no Desktop) para o executável do JDeveloper. Para isso no gnome, clique com o direito em "novo lançador" e ajuste o caminho para "&lt;span style="font-weight: bold;"&gt;/usr/local/&lt;/span&gt;Oracle/Middleware/jdeveloper/jdev/bin/&lt;span style="font-weight: bold;"&gt;jdev&lt;/span&gt;" onde "/usr/local" é o caminho da instalação que escolhemos antes e "jdev" é o executável.&lt;br /&gt;&lt;a href="http://picasaweb.google.com/lh/photo/FPhpOyOr7WrVv7jr_EI03w?authkey=Gv1sRgCM7Tq4i3pJqCCg&amp;amp;feat=embedwebsite"&gt;&lt;img src="http://lh5.ggpht.com/_MvDshKp6n3U/SiXF3PZDgDI/AAAAAAAAAUg/Q1lvtK5KxOQ/s288/15.png" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;É isso pessoal! Instalação ok. Agora já da para começar a estudar Java e podemos praticar um pouco.&lt;br /&gt;&lt;br /&gt;Até o próximo!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1900921458821518619-7861267232774729502?l=foojava.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://foojava.blogspot.com/feeds/7861267232774729502/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://foojava.blogspot.com/2009/06/instalando-jdeveloper-11-em-linux.html#comment-form' title='1 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1900921458821518619/posts/default/7861267232774729502'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1900921458821518619/posts/default/7861267232774729502'/><link rel='alternate' type='text/html' href='http://foojava.blogspot.com/2009/06/instalando-jdeveloper-11-em-linux.html' title='Instalando JDeveloper 11 em Linux'/><author><name>Helton Eduardo Ritter</name><uri>http://www.blogger.com/profile/08450017811928254585</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://3.bp.blogspot.com/_MvDshKp6n3U/TTMBkVo0g0I/AAAAAAAAA0o/-g6L_zkBVSI/S220/SDC13821.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh4.ggpht.com/_MvDshKp6n3U/SiXAk0tvYRI/AAAAAAAAAUc/A3GMBrKf3ok/s72-c/01.png' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1900921458821518619.post-7685403470955817774</id><published>2009-06-02T14:27:00.005-03:00</published><updated>2009-06-02T21:57:17.494-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='sobre'/><title type='text'>Sobre este blog</title><content type='html'>Olá, inaugura-se hoje 02/06/2009 mais um blog!&lt;br /&gt;&lt;br /&gt;Este blog é dedicado a linguagem de programação Java, em suas diversas aplicações, mobile, na web, embarcado e desktop.&lt;br /&gt;&lt;br /&gt;Serão postadas experiências com java, os primeiros códigos, como iniciar... ideal para quem está aprendendo (assim como nós). Conforme os conhecimentos vão sendo melhorados também avançaremos aqui no blog em complexidade.&lt;br /&gt;&lt;br /&gt;Espero transformar esse blog num lugar de escrita entre amigos, vou sair convidando algumas pessoas que sabem ou estão aprendendo Java, para que elas também escrevam aqui.&lt;br /&gt;&lt;br /&gt;E porque "Foo Java" ?&lt;br /&gt;Bem,  como está lá na explicação "foo" é o nome de uma variável, ou função, ou método, ou classe que os computólogos usam sempre que querem exemplificar alguma coisa. É uma função (metodo) que não faz nada de útil, apenas demonstra a funcionalidade daquele ítem em específico que pretende-se demonstrar.&lt;br /&gt;&lt;br /&gt;Novas postagens em breve! Aguarde...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1900921458821518619-7685403470955817774?l=foojava.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://foojava.blogspot.com/feeds/7685403470955817774/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://foojava.blogspot.com/2009/06/sobre-este-blog.html#comment-form' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1900921458821518619/posts/default/7685403470955817774'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1900921458821518619/posts/default/7685403470955817774'/><link rel='alternate' type='text/html' href='http://foojava.blogspot.com/2009/06/sobre-este-blog.html' title='Sobre este blog'/><author><name>Helton Eduardo Ritter</name><uri>http://www.blogger.com/profile/08450017811928254585</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://3.bp.blogspot.com/_MvDshKp6n3U/TTMBkVo0g0I/AAAAAAAAA0o/-g6L_zkBVSI/S220/SDC13821.JPG'/></author><thr:total>0</thr:total></entry></feed>
