<?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-6756811341323141038</id><updated>2012-02-16T21:42:05.093-02:00</updated><category term='IDEs'/><category term='Swing'/><category term='Códigos'/><category term='JSF'/><category term='Java Dicas'/><category term='Dicas'/><category term='Acessibilidade'/><category term='Javascript'/><category term='Erros Java'/><category term='Web'/><category term='Servidores'/><title type='text'>Java Erro</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://javaerro.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6756811341323141038/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://javaerro.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Reinaldo Elias</name><uri>http://www.blogger.com/profile/17009512606320480417</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><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>47</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-6756811341323141038.post-6675378068895769263</id><published>2012-01-10T22:43:00.001-02:00</published><updated>2012-01-10T22:43:26.720-02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Web'/><category scheme='http://www.blogger.com/atom/ns#' term='Dicas'/><category scheme='http://www.blogger.com/atom/ns#' term='Acessibilidade'/><title type='text'>Acessibilidade, parte 2</title><content type='html'>&lt;br /&gt;&lt;div style="font-family: Georgia, 'Times New Roman', 'Bitstream Charter', Times, serif; font-size: 13px; line-height: 19px;"&gt;Continuando com a postagem anterior, a&amp;nbsp;&lt;a data-mce-href="http://codeerror.wordpress.com/2011/01/10/acessibilidade-parte-1/" href="http://javaerro.blogspot.com/2011/01/quando-falamos-de-acessibilidade-em.html" target="_blank"&gt;parte 1&lt;/a&gt;&amp;nbsp;sobre o tema "&lt;a data-mce-href="http://codeerror.wordpress.com/acessibilidade/" href="http://javaerro.blogspot.com/p/acessibilidade_20.html" target="_blank"&gt;acessibilidade&lt;/a&gt;", e é claro que você já está por dentro do assunto após ter lido todo aquele texto, mas agora vou deixar um de lado a&amp;nbsp;&lt;strong&gt;visualização&lt;/strong&gt;, para falar um pouco sobre&amp;nbsp;&lt;strong&gt;navegação&lt;/strong&gt;, afinal, poder mexer é tão importante quanto poder ver.&lt;/div&gt;&lt;div style="font-family: Georgia, 'Times New Roman', 'Bitstream Charter', Times, serif; font-size: 13px; line-height: 19px;"&gt;Mas antes de tentar dar algumas dicas de navegação, temos que entender o que é a navegação, e qual a importância dela.&lt;/div&gt;&lt;div style="font-family: Georgia, 'Times New Roman', 'Bitstream Charter', Times, serif; font-size: 13px; line-height: 19px;"&gt;Pra começar, se você está vendo esse blog de programação, existe uma enorme possibilidade de você possuir um teclado e um mouse. O que? Está surpreso com essa frase? Estou falando sério, lembre-se de que nem todos os seus possíveis leitores/clientes possuem um teclado e um mouse! Mas voltando a você, provavelmente você está usando o mouse para navegar por esse site, mas vamos fazer um pequeno teste (primeiro leia esse parágrafo, depois faça o teste). Coloque o ponteiro do mouse sobre o relógio do sistema, feche os olhos, não vale roubar, feche os olhos totalmente e tente clicar no link “Início” que está lá em cima, no topo do meu blog, você consegue?&lt;/div&gt;&lt;div style="font-family: Georgia, 'Times New Roman', 'Bitstream Charter', Times, serif; font-size: 13px; line-height: 19px;"&gt;Acho que você não conseguiu, pois ainda está lendo essa postagem, o que podemos entender com esse exercício? O mouse foi criado para quem tem uma visão boa. Mas, vamos fazer outro teste. Fique com os olhos abertos, mas coloque os dois braços atrás da cabeça, como se estivesse sendo abordado pela polícia, agora sem usar as mãos, tente clicar no botão “Início” e depois voltar para essa postagem. Acho que dessa vez você consegue, mas vai ser muito incômodo não é mesmo? Não precisa dizer como você está controlando o mouse, isso não importa muito, apenas precisamos perceber que o mouse foi feito para quem, além de uma boa visão, possui ao menos um braço ou uma boa coordenação motora para poder controlá-lo com outra parte do corpo.&lt;/div&gt;&lt;div style="font-family: Georgia, 'Times New Roman', 'Bitstream Charter', Times, serif; font-size: 13px; line-height: 19px;"&gt;&lt;img alt="" class="mceWPmore mceItemNoResize" data-mce-src="http://codeerror.wordpress.com/wp-includes/js/tinymce/plugins/wordpress/img/trans.gif" src="http://codeerror.wordpress.com/wp-includes/js/tinymce/plugins/wordpress/img/trans.gif" style="background-attachment: initial; background-clip: initial; background-image: url(http://codeerror.wordpress.com/wp-includes/js/tinymce/plugins/wordpress/img/more_bug.gif); background-origin: initial; background-position: 100% 0%; background-repeat: no-repeat no-repeat; border-bottom-width: 0px; border-color: initial; border-color: initial; border-image: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-style: initial; border-top-color: rgb(204, 204, 204); border-top-style: dotted; border-top-width: 1px; display: block; height: 12px; margin-bottom: 0px; margin-left: auto; margin-right: auto; margin-top: 15px; width: 788px;" title="Mais..." /&gt;&lt;/div&gt;&lt;div style="font-family: Georgia, 'Times New Roman', 'Bitstream Charter', Times, serif; font-size: 13px; line-height: 19px;"&gt;Agora vamos fazer um último teste, esconda seu mouse e tente navegar nesse site. Você consegue? Sim, claro que consegue, mas vai ser um pouco mais chato, nesse caso temos que utilizar a tecla “TAB” que é a tecla utilizada para navegar pelo site sem utilizar um mouse, essa tecla vai passando por cada elemento da página, veremos mais detalhes adiante.&lt;/div&gt;&lt;div style="font-family: Georgia, 'Times New Roman', 'Bitstream Charter', Times, serif; font-size: 13px; line-height: 19px;"&gt;Em suma, um site com uma navegação acessível, atende, diversos tipos de pessoas e equipamentos, não importa se o usuário possui deficiência visual, motora, se ele não possui um mouse ou qualquer que seja o motivo. Mas como fazer isso? Calma, agora que entendemos o problema, podemos pensar em possíveis soluções.&lt;/div&gt;&lt;div style="font-family: Georgia, 'Times New Roman', 'Bitstream Charter', Times, serif; font-size: 13px; line-height: 19px;"&gt;O primeiro passo é eliminar do seu site qualquer menu feito em flash ou similares, por que esses tipos de menus, só são acessados com o mouse, mesmo se você colocar um script para aceitar o teclado, ainda não vai funcionar por que o “componente” precisa estar ativo para que o teclado funcione. Difícil de entender essa parte? Eu explico, vá em algum site de jogos online, que geralmente são feitos em flash ou Java applet, escolha um jogo e deixe a página dele carregar mas assim que você escolher o jogo&amp;nbsp;&lt;strong&gt;NÃO CLIQUE NO JOGO&lt;/strong&gt;, apenas deixe a página dele carregar e tente jogar. Você não vai conseguir, é por que o applet ou flash não está “ativo”, se você pressionar as setinhas cima, baixo, esquerda e direita, você vai movimentar a página e não o personagem do jogo, se você quiser ativar o controle do jogo, vai ter que clicar no applet ou flash, para somente após isso, conseguir utilizar o teclado. Se você possui um menu feito em flash ou applet ou qualquer coisa do tipo, delete-o e crie um novo menu via HTML, pode utilizar imagens, muitas imagens, mas lembre-se do assunto anterior, não deixe seu site muito “pesado”. Além dessa dificuldade, seu leitor/cliente pode tentar acessar o site de um celular ou de um computador um pouco mais antigo que não possua suporte para a ferramenta que você está tentando disponibilizar, nesse caso também vai ficar muito difícil navegar pelo seu site.&lt;/div&gt;&lt;div style="font-family: Georgia, 'Times New Roman', 'Bitstream Charter', Times, serif; font-size: 13px; line-height: 19px;"&gt;Ainda nos menus, mas também no resto do site, se você está tratando algum tipo de evento do mouse via script, tipo&amp;nbsp; “onmouseover”, “onclick”, “onmouseout”, esse menu ou item só vai funcionar se seu leitor/cliente possuir e conseguir utilizar um mouse, mas se for um deficiente visual, ou alguém que não possua mouse, essa pessoa não conseguirá navegar pela página.&lt;/div&gt;&lt;div style="font-family: Georgia, 'Times New Roman', 'Bitstream Charter', Times, serif; font-size: 13px; line-height: 19px;"&gt;Duas alternativas plausíveis, a primeira é remover esses eventos e menus que capturam o evento do mouse, outra solução é adicionar eventos de teclado! Se você está capturando um “onclick” capture também quando a tecla “barra de espaço” for acionada, se está capturando o “onmouseover” adicione também um evento “onfocus”, se está utilizando o evento “onmouseout”, capture também o evento “onblur”, sempre procure similares para teclado, em todos os eventos de mouse que estiver utilizando.&lt;/div&gt;&lt;div style="font-family: Georgia, 'Times New Roman', 'Bitstream Charter', Times, serif; font-size: 13px; line-height: 19px;"&gt;Outro fator importante para a navegação é a ordem dos elementos, esqueçamos mais uma vez o mouse, desconecte ele e guarde em algum lugar, navegue pela sua página utilizando a tecla “TAB”, você consegue chegar ao conteúdo rapidamente ou tem que passar por milhares de botões e propagandas antes? Se você está demorando mais do que 5 “tabs” para chegar ao conteúdo,&amp;nbsp;&lt;strong&gt;EU&lt;/strong&gt;&amp;nbsp;acho que já é muito, alguns acham até que o primeiro “tab” já deve cair no conteúdo, mas ai você tenta fazer isso nesse blog e vê que não consegue chegar no conteúdo da postagem antes de passar por todo tipo de link, correto? Realmente, mas esse blog não é meu, é do wordpress.com, eu não edito o código fonte do site, apenas o da minha postagem, infelizmente.&lt;/div&gt;&lt;div style="font-family: Georgia, 'Times New Roman', 'Bitstream Charter', Times, serif; font-size: 13px; line-height: 19px;"&gt;Mas como criar uma navegação? Utilizando um comando html simples, o “tabindex”.&lt;br /&gt;Tabindex é um atributo que existe na maioria das tags html, e com ele é possível estabelecer uma ordem de navegação para os objetos, definindo com valores numéricos, de preferência positivos, alguns navegadores aceitam valores negativos, mas não são todos.&lt;/div&gt;&lt;div style="font-family: Georgia, 'Times New Roman', 'Bitstream Charter', Times, serif; font-size: 13px; line-height: 19px;"&gt;Exemplos:&lt;/div&gt;&lt;blockquote style="font-family: Georgia, 'Times New Roman', 'Bitstream Charter', Times, serif; font-size: 13px; line-height: 19px;"&gt;&amp;lt;a href=”x.com.br” tabindex=”1”&amp;gt;aaa&amp;lt;/a&amp;gt;&lt;br /&gt;&amp;lt;a href=”x.com.br” tabindex=”2”&amp;gt;bbb&amp;lt;/a&amp;gt;&lt;br /&gt;&amp;lt;input type=”submit” value=”ccc” tabindex=”3”/&amp;gt;&lt;/blockquote&gt;&lt;div style="font-family: Georgia, 'Times New Roman', 'Bitstream Charter', Times, serif; font-size: 13px; line-height: 19px;"&gt;No exemplo acima, o primeiro tab vai deixar o link “aaa” selecionado (não vai acionar o link, vai apenas dar o foco para ele), o segundo tab vai marcar o link “bbb”, o terceiro tab vai marcar o botão “ccc”.&lt;/div&gt;&lt;div style="font-family: Georgia, 'Times New Roman', 'Bitstream Charter', Times, serif; font-size: 13px; line-height: 19px;"&gt;Você pode deixar lacunas entre os tabindex, por exemplo, 1-2-3-6-7-9-15-29-30-100, neste caso os tabs vão acessar os objetos na ordem que for definida, se um número não for encontrado, então o próximo é procurado, e assim vai até encontrar um número.&lt;/div&gt;&lt;div style="font-family: Georgia, 'Times New Roman', 'Bitstream Charter', Times, serif; font-size: 13px; line-height: 19px;"&gt;Não é necessário inserir as tabulações na ordem que os objetos estiverem dispostos no código fonte, você pode colocar um tabindex=”1” para um objeto que está no final da página e um tabindex=”2” para um objeto que está no começo, isso não importa, se fizer isso o primeiro tab vai acessar o objeto que está com a tabulação “1” e o segundo tab vai acessar o objeto “2”.&lt;/div&gt;&lt;div style="font-family: Georgia, 'Times New Roman', 'Bitstream Charter', Times, serif; font-size: 13px; line-height: 19px;"&gt;Resumindo o capítulo, quando estiver criando ou editando o código fonte de uma página, invista alguns minutos tentando navegar pelo site sem o mouse e veja se é possível, se não conseguir então será necessário efetuar alguns ajustes.&lt;/div&gt;&lt;div style="font-family: Georgia, 'Times New Roman', 'Bitstream Charter', Times, serif; font-size: 13px; line-height: 19px;"&gt;Assim encerro esta postagem, e para a próxima prepararei uma matéria sobre leitores de tela e a utilidade (ou falta de utilidade) de tabelas em sites acessíveis.&lt;/div&gt;&lt;div style="font-family: Georgia, 'Times New Roman', 'Bitstream Charter', Times, serif; font-size: 13px; line-height: 19px;"&gt;Enjoy!&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6756811341323141038-6675378068895769263?l=javaerro.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javaerro.blogspot.com/feeds/6675378068895769263/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://javaerro.blogspot.com/2012/01/acessibilidade-parte-2.html#comment-form' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6756811341323141038/posts/default/6675378068895769263'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6756811341323141038/posts/default/6675378068895769263'/><link rel='alternate' type='text/html' href='http://javaerro.blogspot.com/2012/01/acessibilidade-parte-2.html' title='Acessibilidade, parte 2'/><author><name>Reinaldo Elias</name><uri>http://www.blogger.com/profile/17009512606320480417</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><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6756811341323141038.post-7526674726070351898</id><published>2011-11-20T11:59:00.001-02:00</published><updated>2012-01-10T21:53:14.754-02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Servidores'/><category scheme='http://www.blogger.com/atom/ns#' term='Java Dicas'/><category scheme='http://www.blogger.com/atom/ns#' term='Códigos'/><title type='text'>Performance em aplicações Java. O problema é você!</title><content type='html'>&lt;br /&gt;O título dessa postagem já é um “spoiler”, mas o que eu quero dizer realmente com “O problema é você”?&lt;br /&gt;&lt;br /&gt;Antes de sair apontando o dedo para o pessoal de rede dizendo que o servidor não presta ou o cabeamento está cheio de baratas (provavelmente o servidor é ultrapassado e o cabeamento está cheio de baratas), mas antes de culpar o servidor, aponte o dedo para o espelho, e melhore esse código feio que está fazendo!&lt;br /&gt;Pense que em uma aplicação, não é apenas o “front-end” que precisa ser bonito, a área por traz das cortinas tem que ser mais bonita ainda. Você gosta quando precisa arrumar um programa que o código foi feito por um estagiário do período cenozoico? Pois bem, provavelmente o próximo programador que olhar para o seu código vai ter a mesma impressão: “P.q.p! Esse código deve ter passado pelas mãos sujas de um estagiário!”.Particularmente eu não gosto de assinar um código feio, só coloco meu nome em um código depois de arrumá-lo e deixá-lo legível.&lt;br /&gt;&lt;br /&gt;IMPORTANTE: Código feio e gambiarra são coisas extremamente diferentes, gambiarras fazem partes da vida de qualquer programador, seja ele estagiário ou especialista, porém só porque precisamos fazer uma gambiarra não significa que devemos deixar o código em hebraico.Mas o que tem a ver código legível com deixar o programa mais rápido?&lt;br /&gt;&lt;strong style="font-weight: bold;"&gt;&lt;br /&gt;&lt;/strong&gt;&lt;br /&gt;&lt;strong style="font-weight: bold;"&gt;Tudo!&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;Uma cultura de “código limpo” e “código bonito” leva a uma outra cultura, de “programa rápido”, pois você se acostuma a fazer um código melhor, que consequentemente, funcionará de forma mais rápida. Além de um fator importante, a performance do programador que for arrumar ou melhorar o programa. Com certeza quem for mexer no código-fonte desse programa vai terminar a alteração muito mais rápido se não precisar utilizar o tradutor do google para traduzir de “hebraico para javanês”.Mas o que, especificamente, pode ser feito para deixar a aplicação mais rápida?Siga os passos abaixo, que verá a diferença.&lt;br /&gt;Em alguns casos, o usuário não perceberá a diferença, mas você sim, porque o servidor vai parar de cair e você vai parar de ser acordado as três da madrugada para dar “stop/start” na aplicação.&lt;br /&gt;&lt;br /&gt;&lt;strong style="font-weight: bold;"&gt;Laços FOR&lt;/strong&gt;&lt;br /&gt;Entenda que “for” convencional é mal, “foreach” e “iterator” são bons.Em um laço for convencional, é necessário criar vários objetos para controle do loop e do próprio conteúdo da lista, e isso consome mais processamento e memória do que um foreach ou iterator, porque esses dois já trabalham de uma forma que, se bem utilizados, não há a necessidade de criar objetos de controle.&lt;span style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: inherit; font-style: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-decoration: underline; vertical-align: baseline;"&gt;Exemplo de foreach:&lt;/span&gt;&lt;br /&gt;&lt;blockquote style="background-attachment: initial; background-clip: initial; background-image: url(http://s0.wp.com/wp-content/themes/pub/greyzed/images/quote.gif); background-origin: initial; background-position: 0% 0%; background-repeat: no-repeat no-repeat; border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: #747775; font-family: Tahoma, Verdana, Arial, sans-serif; font-size: 12px; line-height: 21px; margin-bottom: 0px; margin-left: 10px; margin-right: 30px; margin-top: 15px; min-height: 32px; padding-bottom: 0px; padding-left: 60px; padding-right: 0px; padding-top: 0px; quotes: ''; text-align: left; vertical-align: baseline;"&gt;&lt;div style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: inherit; font-style: inherit; margin-bottom: 1.8em; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;ArrayList&amp;lt;Objeto&amp;gt; lista =&amp;nbsp;&lt;strong style="font-weight: bold;"&gt;new&lt;/strong&gt;&amp;nbsp;ArrayList&amp;lt;Objeto&amp;gt;(Numeros.&lt;em style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;CEM&lt;/em&gt;);&lt;/div&gt;&lt;div style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: inherit; font-style: inherit; margin-bottom: 1.8em; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;&lt;strong style="font-weight: bold;"&gt;for&lt;/strong&gt;(Objeto variavel : lista) {&lt;/div&gt;&lt;div style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: inherit; font-style: inherit; margin-bottom: 1.8em; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;System.out.println(variável.getNome());&lt;/div&gt;&lt;div style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: inherit; font-style: inherit; margin-bottom: 1.8em; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;}&lt;/div&gt;&lt;/blockquote&gt;&lt;span style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: inherit; font-style: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-decoration: underline; vertical-align: baseline;"&gt;Exemplo de Iterator&lt;/span&gt;&lt;br /&gt;&lt;blockquote style="background-attachment: initial; background-clip: initial; background-image: url(http://s0.wp.com/wp-content/themes/pub/greyzed/images/quote.gif); background-origin: initial; background-position: 0% 0%; background-repeat: no-repeat no-repeat; border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: #747775; font-family: Tahoma, Verdana, Arial, sans-serif; font-size: 12px; line-height: 21px; margin-bottom: 0px; margin-left: 10px; margin-right: 30px; margin-top: 15px; min-height: 32px; padding-bottom: 0px; padding-left: 60px; padding-right: 0px; padding-top: 0px; quotes: ''; text-align: left; vertical-align: baseline;"&gt;&lt;div style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: inherit; font-style: inherit; margin-bottom: 1.8em; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;ArrayList&amp;lt;String&amp;gt; array =&amp;nbsp;&lt;strong style="font-weight: bold;"&gt;new&lt;/strong&gt;&amp;nbsp;ArrayList&amp;lt;String&amp;gt;(Numeros.&lt;em style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;CEM&lt;/em&gt;);&lt;/div&gt;&lt;div style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: inherit; font-style: inherit; margin-bottom: 1.8em; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;Iterator&amp;lt;String&amp;gt; it = array.iterator();&lt;/div&gt;&lt;div style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: inherit; font-style: inherit; margin-bottom: 1.8em; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;&lt;strong style="font-weight: bold;"&gt;while&lt;/strong&gt;(it.hasNext()) {&lt;/div&gt;&lt;div style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: inherit; font-style: inherit; margin-bottom: 1.8em; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;System.out.println(it.toString());&lt;/div&gt;&lt;div style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: inherit; font-style: inherit; margin-bottom: 1.8em; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;}&lt;/div&gt;&lt;/blockquote&gt;&lt;strong style="font-weight: bold;"&gt;Métodos dentro de laços&lt;/strong&gt;&amp;nbsp;&lt;br /&gt;Isso não se faz, a cada iteração do loop um método de terceiros é consultado.Se o valor não muda, é melhor atribuí-lo à uma variável, diminuindo o tempo de processamento do laço.&lt;span style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: inherit; font-style: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-decoration: underline; vertical-align: baseline;"&gt;Exemplo de como não fazer:&lt;/span&gt;&lt;br /&gt;&lt;blockquote style="background-attachment: initial; background-clip: initial; background-image: url(http://s0.wp.com/wp-content/themes/pub/greyzed/images/quote.gif); background-origin: initial; background-position: 0% 0%; background-repeat: no-repeat no-repeat; border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: #747775; font-family: Tahoma, Verdana, Arial, sans-serif; font-size: 12px; line-height: 21px; margin-bottom: 0px; margin-left: 10px; margin-right: 30px; margin-top: 15px; min-height: 32px; padding-bottom: 0px; padding-left: 60px; padding-right: 0px; padding-top: 0px; quotes: ''; text-align: left; vertical-align: baseline;"&gt;&lt;div style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: inherit; font-style: inherit; margin-bottom: 1.8em; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;&amp;nbsp;ArrayList lista = new ArrayList();&lt;/div&gt;&lt;div style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: inherit; font-style: inherit; margin-bottom: 1.8em; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;for (int i = 0; i &amp;lt;&amp;nbsp;&lt;span style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: red; font-family: inherit; font-style: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;lista.size()&lt;/span&gt;; i++) {&lt;/div&gt;&lt;div style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: inherit; font-style: inherit; margin-bottom: 1.8em; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;System.&lt;em style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;out&lt;/em&gt;.println(lista.get(i));&lt;/div&gt;&lt;div style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: inherit; font-style: inherit; margin-bottom: 1.8em; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;}&lt;/div&gt;&lt;/blockquote&gt;Nesse exemplo, de como não fazer, a chamada ao método “lista.size()” será efetuada em cada iteração do laço, que pode ser while ou do..while, e se o laço possuir dez mil iterações, serão dez mil chamadas ao método que contará sempre os dez mil registros da lista.&lt;br /&gt;&lt;span style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: inherit; font-style: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-decoration: underline; vertical-align: baseline;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: inherit; font-style: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-decoration: underline; vertical-align: baseline;"&gt;Exemplo de como se deve fazer, economizando processamento.&lt;/span&gt;&lt;br /&gt;&lt;blockquote style="background-attachment: initial; background-clip: initial; background-image: url(http://s0.wp.com/wp-content/themes/pub/greyzed/images/quote.gif); background-origin: initial; background-position: 0% 0%; background-repeat: no-repeat no-repeat; border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: #747775; font-family: Tahoma, Verdana, Arial, sans-serif; font-size: 12px; line-height: 21px; margin-bottom: 0px; margin-left: 10px; margin-right: 30px; margin-top: 15px; min-height: 32px; padding-bottom: 0px; padding-left: 60px; padding-right: 0px; padding-top: 0px; quotes: ''; text-align: left; vertical-align: baseline;"&gt;&lt;div style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: inherit; font-style: inherit; margin-bottom: 1.8em; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;ArrayList&amp;lt;String&amp;gt; array =&amp;nbsp;&lt;strong style="font-weight: bold;"&gt;new&lt;/strong&gt;&amp;nbsp;ArrayList&amp;lt;String&amp;gt;(Numeros.&lt;em style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;CEM&lt;/em&gt;);&lt;/div&gt;&lt;div style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: inherit; font-style: inherit; margin-bottom: 1.8em; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;&lt;span style="background-color: white; border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: green; font-family: inherit; font-style: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;&lt;strong style="font-weight: bold;"&gt;int&lt;/strong&gt;&amp;nbsp;tamanho = array.size();&lt;/span&gt;&lt;/div&gt;&lt;div style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: inherit; font-style: inherit; margin-bottom: 1.8em; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;&lt;strong style="font-weight: bold;"&gt;int&lt;/strong&gt;&amp;nbsp;x = Numeros.&lt;em style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;ZERO&lt;/em&gt;;&lt;/div&gt;&lt;div style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: inherit; font-style: inherit; margin-bottom: 1.8em; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;&lt;strong style="font-weight: bold;"&gt;while&lt;/strong&gt;(x &amp;lt;&amp;nbsp;&lt;span style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: green; font-family: inherit; font-style: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;tamanho&lt;/span&gt;) {&lt;/div&gt;&lt;div style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: inherit; font-style: inherit; margin-bottom: 1.8em; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;}&lt;/div&gt;&lt;div style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: inherit; font-style: inherit; margin-bottom: 1.8em; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;&lt;strong style="font-weight: bold;"&gt;for&lt;/strong&gt;&amp;nbsp;(&lt;strong style="font-weight: bold;"&gt;int&lt;/strong&gt;&amp;nbsp;i = 0; i &amp;lt;&amp;nbsp;&lt;span style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: green; font-family: inherit; font-style: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;tamanho&lt;/span&gt;; i++) {&lt;/div&gt;&lt;div style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: inherit; font-style: inherit; margin-bottom: 1.8em; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;}&lt;/div&gt;&lt;/blockquote&gt;&lt;div style="background-color: #bcc5c1; border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: #333333; font-family: Tahoma, Verdana, Arial, sans-serif; font-size: 12px; line-height: 21px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; vertical-align: baseline;"&gt;&lt;/div&gt;&lt;strong style="font-weight: bold;"&gt;Imports não utilizados.&lt;/strong&gt;&lt;br /&gt;Sempre que passar por uma classe, remova os imports não utilizados, pode ser manualmente ou com o atalho “CTRL+SHIFT+O” do eclipse.Apesar de não parecer, os imports inutilizados ajudam a deixar a classe mais pesada, por que quando ela é compilada (pelo javac), todas as classes importadas são compiladas juntas.&lt;br /&gt;Isso também vale para imports com * no pacote, é bem difícil você utilizar todas as classes de um determinado pacote, e provavelmente você não vai querar compilar todas as classes de um pacote junto com a sua, ou quer?&lt;br /&gt;&lt;br /&gt;&lt;strong style="font-weight: bold;"&gt;Objetos e Tipos Primitivos&lt;/strong&gt;&lt;br /&gt;Sempre que possível, não utilize objetos (Integer, Double, Float) mas sim tipos primitivos (int, double, float) que são mais leves.Quando for trabalhar com faixas numéricas pequenas, utilize também um tipo pequeno, por exemplo o byte para apenas códigos 1, 2, 3, etç. Use o short para faixas de 0 a 32767 (ou negativos nessa mesma faixa).Um objeto exige muito mais espaço na memória do que um tipo primitivo, por exemplo, o int só precisa de uma faixa na memória para guardar o valor da variável, já o Integer precisa de um espaço bem maior, para guardar a classe Integer, que possui além do valor, várias outras variáveis e métodos internos.Quando houver a necessidade de trabalhar com um int que nunca pode ser nulo, impeça o usuário de acionar algum método sem preencher o campo da tela.&lt;br /&gt;&lt;br /&gt;&lt;div style="background-color: #bcc5c1; border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: #333333; font-family: Tahoma, Verdana, Arial, sans-serif; font-size: 12px; line-height: 21px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; vertical-align: baseline;"&gt;&lt;/div&gt;&lt;strong style="font-weight: bold;"&gt;Listas sem objeto ou tamanho.&lt;/strong&gt;&lt;br /&gt;Sempre que utilizar uma lista, indique de que tipo é essa lista, dessa forma economizamos memória e processamento, não sendo necessário criar objetos e fazer o cast em cada item dessa lista.&lt;br /&gt;Sempre defina um tamanho inicial para a lista. Quando não informamos um tamanho para a lista, o compilador entende que seu tamanho inicial será 10. Quando essa lista ultrapassa os 10 itens, o compilador cria uma nova lista com mais 10 itens, ou seja, 20 itens, e copia a primeira lista para a segunda lista, se ela ultrapassar os 20 itens, o compilador cria uma nova lista com mais 10 itens, ou seja, 30 itens, e copia todos os objetos da segunda lista para a terceira lista. Se você não definir um tamanho e sua lista possuir mil objetos, esse processo irá se repetir 100 vezes, consumindo memória e processamento.Para contornar esse problema, sempre defina um tamanho inicial para suas listas, e esse número deve se aproximar do tamanho que a lista terá.&lt;br /&gt;Por exemplo, se eu estiver criando uma lista departamentos de uma empresa, vou criar uma lista com tamanho inicial igual a 100, por que não existem milhares de departamentos em uma empresa.Se eu estiver criando uma lista de funcionários de uma empresa multi-nacional, vou definir um tamanho inicial de 1000 para a minha lista, fazendo isso, mesmo que a lista possua dez mil objetos, eu já diminui o processamento em cem vezes, por que ela não vai precisar ser copiada de 10 em 10, mas sim de 1000 em 1000.&lt;br /&gt;&lt;span style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: inherit; font-style: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-decoration: underline; vertical-align: baseline;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: inherit; font-style: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-decoration: underline; vertical-align: baseline;"&gt;Exemplo de como não fazer:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; ArrayList lista =&amp;nbsp;&lt;strong style="font-weight: bold;"&gt;new&lt;/strong&gt;&amp;nbsp;ArrayList();&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&lt;span style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: inherit; font-style: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-decoration: underline; vertical-align: baseline;"&gt;Exemplo de como se deve fazer:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; ArrayList&amp;lt;&lt;span style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: green; font-family: inherit; font-style: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;Objeto&lt;/span&gt;&amp;gt; lista =&amp;nbsp;&lt;strong style="font-weight: bold;"&gt;new&lt;/strong&gt;&amp;nbsp;ArrayList&amp;lt;&lt;span style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: green; font-family: inherit; font-style: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;Objeto&lt;/span&gt;&amp;gt;(&lt;span style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: green; font-family: inherit; font-style: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;Numeros.&lt;em style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;CEM&lt;/em&gt;&lt;/span&gt;);&lt;br /&gt;&lt;br /&gt;&lt;strong style="font-weight: bold;"&gt;Pesquisas e ordenações em Listas&lt;/strong&gt;&lt;br /&gt;“Não tente reinventar a roda”, não há a necessidade de criar um algoritmo com laços e variáveis para fazer uma pesquisa ou ordenar uma lista, a Sun já criou formas mais fáceis e leves para isso.Algoritmos como quicksort, bubblesort, binariesort, só são utilizados para aprender lógica de programação e em linguagens estruturadas, em orientação a objetos só se deve recorrer a este tipo de algoritmo em casos “extremamente extremos”, onde não existe nenhuma outra possibilidade de se resolver o problema utilizando a própria linguagem ou o framework.&lt;br /&gt;Para fazer&amp;nbsp;&lt;strong style="font-weight: bold;"&gt;pesquisas&lt;/strong&gt;, use o MAP (ou similares), que já foi criado para esse tipo de funcionalidade.&lt;br /&gt;Para&amp;nbsp;&lt;strong style="font-weight: bold;"&gt;ordenar&lt;/strong&gt;&amp;nbsp;uma lista, implemente o Comparator.&lt;br /&gt;&lt;br /&gt;Exemplo de MAP.&lt;br /&gt;No próprio for, onde você recupera ou cria os dados, você pode criar um MAP no lugar do List ou ArrayList que já está utilizando. O MAP funciona no esquema “chave / valor”. Na chave você define o termo que será pesquisado, e no valor você insere o objeto inteiro.&lt;br /&gt;&lt;br /&gt;&lt;span style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: inherit; font-style: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-decoration: underline; vertical-align: baseline;"&gt;Criação de um MAP:&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong style="font-weight: bold;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Map&amp;lt;Integer, String&amp;gt; mapa =&amp;nbsp;&lt;/strong&gt;&lt;strong style="font-weight: bold;"&gt;new&lt;/strong&gt;&lt;strong style="font-weight: bold;"&gt;&amp;nbsp;HashMap&amp;lt;Integer, String&amp;gt;();&lt;/strong&gt;&lt;strong style="font-weight: bold;"&gt;&lt;/strong&gt;&lt;br /&gt;&lt;strong style="font-weight: bold;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; for&lt;/strong&gt;&amp;nbsp;(Objeto obj : minhaLista) {&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;&lt;strong style="font-weight: bold;"&gt;mapa.put(obj.getCpf(), obj);&lt;/strong&gt;&lt;strong style="font-weight: bold;"&gt;&lt;/strong&gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;br /&gt;&lt;br /&gt;Lembre-se de utilizar para “chave” alguma coisa que não se repita, como CPF, por exemplo.Também é possível utilizar algum controle próprio, como números, ou qualquer outra coisa.&lt;br /&gt;&lt;span style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: inherit; font-style: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-decoration: underline; vertical-align: baseline;"&gt;Para pesquisar alguma coisa nesse mapa&lt;/span&gt;, deve-se verificar se existe algum objeto com a chave informada (containsKey), e se existir, pega esse objeto, simples assim. Nem precisa de loop.&lt;br /&gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;strong style="font-weight: bold;"&gt;if&lt;/strong&gt;(mapa.containsKey(&lt;em style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;111222333&lt;/em&gt;)) {&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; Objeto = mapa.get(&lt;em style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;111222333&lt;/em&gt;);&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;br /&gt;&lt;br /&gt;&lt;span style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: inherit; font-style: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-decoration: underline; vertical-align: baseline;"&gt;Para ordenar uma lista&lt;/span&gt;, de forma simples e “direta”.&lt;br /&gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; ArrayList&amp;lt;Objeto&amp;gt; lista =&amp;nbsp;&lt;strong style="font-weight: bold;"&gt;new&lt;/strong&gt;&amp;nbsp;ArrayList&amp;lt;Objeto&amp;gt;(Numeros.&lt;em style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;CEM&lt;/em&gt;);&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;Collections.&lt;em style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;sort&lt;/em&gt;(lista,&amp;nbsp;&lt;strong style="font-weight: bold;"&gt;new&lt;/strong&gt;&amp;nbsp;Comparator&amp;lt;Objeto&amp;gt;() {&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;&lt;strong style="font-weight: bold;"&gt;public&lt;/strong&gt;&amp;nbsp;&lt;strong style="font-weight: bold;"&gt;int&lt;/strong&gt;&amp;nbsp;compare(Objeto r1, Objeto r2) {&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; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;strong style="font-weight: bold;"&gt;if&lt;/strong&gt;&amp;nbsp;(r1.getIdade() &amp;lt; r2.getIdade()) {&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; &amp;nbsp; &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;strong style="font-weight: bold;"&gt;return&lt;/strong&gt;&amp;nbsp;Numeros.&lt;em style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;MENOS_UM&lt;/em&gt;;&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; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;}&amp;nbsp;&lt;strong style="font-weight: bold;"&gt;else&lt;/strong&gt;&amp;nbsp;&lt;strong style="font-weight: bold;"&gt;if&lt;/strong&gt;&amp;nbsp;(r1.getIdade() &amp;gt; r2.getIdade()) {&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; &amp;nbsp; &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;strong style="font-weight: bold;"&gt;return&lt;/strong&gt;&amp;nbsp;Numeros.&lt;em style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;UM&lt;/em&gt;;&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; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;}&amp;nbsp;&lt;strong style="font-weight: bold;"&gt;else&lt;/strong&gt;&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; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &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;strong style="font-weight: bold;"&gt;return&lt;/strong&gt;&amp;nbsp;Numeros.&lt;em style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;ZERO&lt;/em&gt;;&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; &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;}&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;});&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Explicando&lt;/b&gt;, eu tenho uma lista qualquer e quero ordená-la, então eu utilizo o método sort da classe Collections, esse método precisa da lista que será ordenada e de um “Comparator” dessa lista, você pode criar uma classe ou método que retorne esse comparator ou pode cria-lo na hora, como fiz no exemplo acima.&lt;br /&gt;O comparator precisa ter um método&amp;nbsp;&lt;strong style="font-weight: bold;"&gt;compare&lt;/strong&gt;&amp;nbsp;que recebe dois objetos, do mesmo tipo de objeto da lista, esse método &lt;b&gt;compare &lt;/b&gt;deve retornar&amp;nbsp;&lt;strong style="font-weight: bold;"&gt;-1&lt;/strong&gt;&amp;nbsp;se o primeiro objeto for menor, ou deve retornar&amp;nbsp;&lt;strong style="font-weight: bold;"&gt;1&lt;/strong&gt;&amp;nbsp;se o primeiro objeto for maior, ou deve retornar&amp;nbsp;&lt;strong style="font-weight: bold;"&gt;zero&lt;/strong&gt;&amp;nbsp;se os dois forem iguais. Você que define o que vai decidir se um objeto é maior ou menor, você pode comparar o que quiser, qualquer uma das variáveis do objeto, o que o sort precisa é dos retornos -1, 1 e 0.&lt;br /&gt;&lt;br /&gt;&lt;strong style="font-weight: bold;"&gt;Strings e Constantes.&lt;/strong&gt;&lt;br /&gt;Utilizar strings diretamente nos métodos é mau.Utilizar constantes em uma classe própria para constantes é bom.&lt;br /&gt;&lt;span style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: inherit; font-style: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-decoration: underline; vertical-align: baseline;"&gt;Exemplo de como não fazer:&lt;/span&gt;&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;String texto = “alguma coisa”;&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;int retorno = 0;&lt;br /&gt;&lt;br /&gt;&lt;span style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: inherit; font-style: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-decoration: underline; vertical-align: baseline;"&gt;Exemplo de como fazer:&lt;/span&gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Classe de constantes (ViewConstants, Números, etç.) String texto = ViewConstants.TEXTO;&lt;br /&gt;onde TEXTO está marcado como “&lt;strong style="font-weight: bold;"&gt;public static final String&lt;/strong&gt;” na classe de constantesInt retorno = Numeros.ZERO; onde ZERO está marcado como “&lt;strong style="font-weight: bold;"&gt;public static final int&lt;/strong&gt;” na classe de constantes numéricasSe você tem uma classe muito popular, que é acessada muitas vezes, e dentro dessa classe tem varias variáveis e objetos, sempre que a classe for acessada novos objetos e variáveis são criados, ocupando mais e mais memória do servidor. Para evitar isso, crie uma classe para armazenar todas as strings e constantes de sua aplicação, mas lembre-se de sempre marcar suas constantes com “static final”, dessa forma as variáveis serão criadas apenas uma vez, e utilizadas por todas as classes da aplicação, sem que mais memória seja utilizada.&lt;br /&gt;&lt;br /&gt;&lt;strong style="font-weight: bold;"&gt;Concatenação de Strings&lt;/strong&gt;&lt;br /&gt;Sempre que é utilizada a concatenação de Strings, novos endereços da memória são separados para essa tarefa, e esses endereços só são liberados quando o método ou a classe morre, se o garbage collector fizer seu trabalho assim que o método ou classe morrer, dessa forma, para evitar o uso excessivo de memória, aconselha-se utilizar o &lt;b&gt;StringBuffer &lt;/b&gt;para esse trabalho.&lt;br /&gt;&lt;br /&gt;&lt;span style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: inherit; font-style: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-decoration: underline; vertical-align: baseline;"&gt;Exemplo de como não fazer:&lt;/span&gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; String texto = “texto1”;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; texto += “ ”;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; texto += “texto2”;&lt;br /&gt;&lt;br /&gt;&lt;span style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: inherit; font-style: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-decoration: underline; vertical-align: baseline;"&gt;Exemplo de como se deve fazer, economizando memória.&lt;/span&gt;&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;StringBuffer texto = new StringBuffer();&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;texto.append(“texto1”);&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;texto.append(“ ”);&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;texto.append(“texto2”);&lt;br /&gt;&lt;br /&gt;No “exemplo de como não fazer”, se você concatenar a string “A” com a string “B”, e depois com a string “C”, e com a string “D” e assim por diante, você estará ocupando um largo espaço na memória, pois a cada concatenação, uma nova String é criada, para armazenar o resultado da sua soma. O processo é similar ao da copia da lista, explicado anteriormente.&lt;br /&gt;Utilizando o StringBuffer, você gasta apenas o endereço que o StringBuffer já está utilizando, não sendo necessário criar várias outras variáveis de apoio.&lt;br /&gt;&lt;br /&gt;&lt;strong style="font-weight: bold;"&gt;Comentários Javadoc e in-line&lt;/strong&gt;&lt;br /&gt;Essa prática não desempenha nenhum papel fundamental na performance do sistema, mas garante uma boa performance dos programadores que estiverem mexendo no código, conforme mencionado nas primeiras linhas desse post,&amp;nbsp;pois um método complicado que estiver bem comentado sempre será mais fácil de entender, não precisando perder tempo para descobrir o que um IF, um for, uma variável ou o próprio método está representando.&lt;br /&gt;Os comentários, podem ser colocados na assinatura do método, em forma de&amp;nbsp;&lt;strong style="font-weight: bold;"&gt;javadoc&lt;/strong&gt;&amp;nbsp;e também antes de cada código, utilizando&amp;nbsp;&lt;strong style="font-weight: bold;"&gt;comentários de linha&lt;/strong&gt;.&lt;br /&gt;Saiba mais sobre javadoc&amp;nbsp;&lt;a href="http://javaerro.blogspot.com/2011/11/sem-medo-do-javadoc.html" style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: #cc0000; font-family: inherit; font-style: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-decoration: none; vertical-align: baseline;" target="_blank" title="Explicações e dicas sobre Javadoc"&gt;aqui&lt;/a&gt;.&lt;span style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: inherit; font-style: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-decoration: underline; vertical-align: baseline;"&gt;Exemplo:&lt;/span&gt;&lt;span style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: #3366ff; font-family: inherit; font-style: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;/**&lt;/span&gt;&lt;br /&gt;&lt;span style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: #3366ff; font-family: inherit; font-style: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;*&lt;/span&gt;&lt;br /&gt;&lt;span style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: #3366ff; font-family: inherit; font-style: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;&amp;nbsp; * Nome: Fazer alguma coisa&lt;/span&gt;&lt;br /&gt;&lt;span style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: #3366ff; font-family: inherit; font-style: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;&amp;nbsp; * Propósito: Esse método recebe um “Objeto” devidamente preenchido e verifica se&lt;/span&gt;&lt;br /&gt;&lt;span style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: #3366ff; font-family: inherit; font-style: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;&amp;nbsp; * deve ser gravado completo ou se deve ser feita uma gravação individual no banco de dados.&lt;/span&gt;&lt;br /&gt;&lt;span style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: #3366ff; font-family: inherit; font-style: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;&amp;nbsp; *&amp;nbsp;&lt;strong style="font-weight: bold;"&gt;@param&lt;/strong&gt;&amp;nbsp;Objeto, esse objeto precisa que a variável idade de cada indivíduo esteja preenchida,&lt;/span&gt;&lt;br /&gt;&lt;span style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: #3366ff; font-family: inherit; font-style: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;&amp;nbsp; * recomenda-se utilizar a validação na tela, não deixando chegar nenhum nulo no java&lt;/span&gt;&lt;br /&gt;&lt;span style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: #3366ff; font-family: inherit; font-style: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;&amp;nbsp; *&lt;/span&gt;&lt;br /&gt;&lt;span style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: #3366ff; font-family: inherit; font-style: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;*/&lt;/span&gt;&lt;br /&gt;&lt;strong style="font-weight: bold;"&gt;public&lt;/strong&gt;&amp;nbsp;&lt;strong style="font-weight: bold;"&gt;void&lt;/strong&gt;&amp;nbsp;doSomethig(Objeto param) {&lt;br /&gt;&lt;span style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: #339966; font-family: inherit; font-style: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; //Verifica se é para gravar todos ou um de cada vez&lt;/span&gt;&lt;br /&gt;&lt;strong style="font-weight: bold;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; if&lt;/strong&gt;(param.getIdade() &amp;gt; ClasseSistema.getXpto()) {&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;ServiceImplQualquer.gravarInformacoes(param);&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; }&amp;nbsp;&lt;strong style="font-weight: bold;"&gt;else&lt;/strong&gt;&amp;nbsp;{&lt;br /&gt;&lt;span style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: #339966; font-family: inherit; font-style: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;//Grava os objetos um a um, mas precisa que a idade de cada objeto&lt;/span&gt;&lt;br /&gt;&lt;span style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: #339966; font-family: inherit; font-style: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;span class="Apple-style-span" style="color: #339966;"&gt;&amp;nbsp;//esteja preenchida, utilizando a validação da tela&lt;/span&gt;&lt;br /&gt;&lt;strong style="font-weight: bold;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;for&lt;/strong&gt;&amp;nbsp;(ObjetoX objetoX : param.getLista()) {&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; ServiceImplQualquer.gravarUmDeCada(objetoX);&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;br /&gt;&amp;nbsp; &amp;nbsp; }&lt;br /&gt;}&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6756811341323141038-7526674726070351898?l=javaerro.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javaerro.blogspot.com/feeds/7526674726070351898/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://javaerro.blogspot.com/2011/11/performance-em-aplicacoes-java-o.html#comment-form' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6756811341323141038/posts/default/7526674726070351898'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6756811341323141038/posts/default/7526674726070351898'/><link rel='alternate' type='text/html' href='http://javaerro.blogspot.com/2011/11/performance-em-aplicacoes-java-o.html' title='Performance em aplicações Java. O problema é você!'/><author><name>Reinaldo Elias</name><uri>http://www.blogger.com/profile/17009512606320480417</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><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6756811341323141038.post-536932789064391968</id><published>2011-11-20T11:50:00.001-02:00</published><updated>2012-01-10T21:53:14.700-02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='IDEs'/><category scheme='http://www.blogger.com/atom/ns#' term='Java Dicas'/><title type='text'>Sem medo do JavaDoc</title><content type='html'>&lt;br /&gt;O “&lt;strong style="font-weight: bold;"&gt;JavaDoc&lt;/strong&gt;” falando em termos gerais, é um gerador de documentação que a sun criou para ser utilizado por programadores, para documentar todo o código fonte visível de uma aplicação.Fazer o javadoc da aplicação que você está fazendo é muito importante, tanto para você quanto para outros programadores que utilizarão o seu programa, por exemplo, se você estiver fazendo uma biblioteca (jar), se não tiver javadoc quem for utilizar o seu jar estará perdido, e até você mesmo poderá se perder quando estiver melhorando ou fazendo algum ajuste no código, eu mesmo esqueço qualquer lógica que eu tenha criado a mais de algumas horas, por isso todo código que eu faço é muito bem comentado e documentado, isso não me toma muito tempo e é bom fazer isso enquanto o método está sendo criado, por que a regra de negócio dos métodos e das classes ainda estão na memória (na sua memória).Vamos para um exemplo prático!&lt;br /&gt;Para poder comprovar o &amp;nbsp;efeito do javadoc, você vai precisar de uma ide.Se você já manipulou arquivos em java, precisou em algum momento definir delimitadores de diretórios “/” para unix e “\” para windows. Mas você não precisa fazer um código pra descobrir o sistema operacional do usuário do seu programa, o java já te informa tudo o que você precisa do sistema operacional utilizado pelo usuário, com o código System.getProperty(), esse método recebe uma String, que indica qual propriedade do sistema operacional você quer, mas eu não sei o que eu tenho que informar, eu sei apenas que eu quero um “separador de diretórios”, então o que fazer?Escreva na sua IDE, dentro de algum método&amp;nbsp;&lt;strong style="font-weight: bold;"&gt;java.lang.System.getProperty(“”)&lt;/strong&gt;, esse método não vai nos servir pra nada, por que não informamos qual a propriedade do sistema que queremos, mas não se desespere, a sun faz JavaDoc. Selecione o método getProperty e aperte a tecla F2 (eclipse) ou apenas coloque o mouse sobre o método até aparecer uma janelinha conforme abaixo.&lt;img alt="Imagem do javadoc do método System.getProperty()" class="aligncenter size-medium wp-image-288" src="http://codeerror.files.wordpress.com/2011/03/javadoc_system_getproperty.png?w=285" style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; display: block; font-family: inherit; font-style: inherit; margin-bottom: 0px; margin-left: auto; margin-right: auto; margin-top: 0px; max-width: 100%; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;" title="JavaDoc_System_getProperty" width="285" /&gt;Está ai, tudo o que o método faz, explicado em cada detalhe, da até pra navegar.&lt;br /&gt;Se descer mais um pouco a barra de rolagem vai ver alguns links na seção “&lt;strong style="font-weight: bold;"&gt;See Also&lt;/strong&gt;“, clique no link “&lt;strong style="font-weight: bold;"&gt;getProperties()&lt;/strong&gt;“, um outro javadoc vai aparecer, mas agora o javadoc do método&amp;nbsp;&lt;strong style="font-weight: bold;"&gt;getProperties&lt;/strong&gt;, contendo todas as possíveis variáveis que devem ser informada no método getProperty, no nosso caso seria a&amp;nbsp;&lt;strong style="font-weight: bold;"&gt;“file.separator”&lt;/strong&gt;, mas olha como tem várias variáveis que podemos utilizar, legal né?&lt;span id="more-287" style="background-color: white; border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: inherit; font-style: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;&lt;/span&gt;Essa não é a unica forma de ver um javadoc, da também para ver de uma forma geral em um navegador. Quando você termina o seu projeto, se ele estiver com todos os javadocs criados, você pode “exportar” essa documentação para o formato html e ele fica exatamente dessa forma:&amp;nbsp;&lt;a href="http://download.oracle.com/javase/6/docs/api/" style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: #cc0000; font-family: inherit; font-style: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-decoration: none; vertical-align: baseline;"&gt;http://download.oracle.com/javase/6/docs/api/&lt;/a&gt;&amp;nbsp;Esse é o javadoc da JRE/JDK, a documentação, da linguagem java. Seu programa pode ter uma documentação exatamente igual a essa, se você documentar os métodos corretamente.Percebeu a importância do javadoc?Apenas os javadocs de objetos “public” são exportados ou ficam visíveis, mas sempre documente todos os seus métodos mesmo private, afinal nunca se sabe quando você vai precisar dessa documentação, e existe a opção de exportar a documentação de objetos private e protected também, mas vamos ver isso mais adiante.Um javadoc não difere em nada de um comentário de bloco&lt;span style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: #339966; font-family: inherit; font-style: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;&amp;nbsp;/* comentário de bloco &amp;nbsp;*/&amp;nbsp;&lt;/span&gt;a diferença é que ele começa com dois asteriscos&amp;nbsp;&lt;span style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: #3366ff; font-family: inherit; font-style: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;/** javadoc */&lt;/span&gt;, até a cor muda, se você não alterou as cores da sua ide, um comentário normal, começando com um asterisco, tem a cor diferente de um comentário javadoc, que começa com dois asteriscos.Um javadoc aceita tags HTML, e eu aconselho escrever o javadoc como se estivesse fazendo uma página web mesmo, mas não precisa de comandos complexos, ficar alinhando criando div, nada disso, vamos ser simplistas, limite-se a usar negrito&amp;nbsp;&lt;span style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: #999999; font-family: inherit; font-style: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;&amp;lt;b&amp;gt;&amp;lt;/b&amp;gt;&lt;/span&gt;, itálico&amp;nbsp;&lt;span style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: #999999; font-family: inherit; font-style: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;&amp;lt;i&amp;gt;&amp;lt;/i&amp;gt;&lt;/span&gt;, sublinhado&lt;span style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: #999999; font-family: inherit; font-style: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;&amp;nbsp;&amp;lt;u&amp;gt;&amp;lt;/u&amp;gt;&lt;/span&gt;, tabelas se necessário&amp;nbsp;&lt;span style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: #999999; font-family: inherit; font-style: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;&amp;lt;table&amp;gt;&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&amp;lt;/table&amp;gt;&lt;/span&gt;, parágrafos&lt;span style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: #999999; font-family: inherit; font-style: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;&amp;nbsp;&amp;lt;p&amp;gt;&amp;lt;/p&amp;gt;&lt;/span&gt;&amp;nbsp;e quebras de linha&amp;nbsp;&lt;span style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: #999999; font-family: inherit; font-style: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;&amp;lt;br&amp;gt;&lt;/span&gt;, mais que isso já é desnecessário. Os links são criados automaticamente com tags próprias.O javadoc tem alguns comandos próprios para definirmos coisas como versão, autor, descrever os parametros e o retorno, explicar as exceções que são lançadas, entre outros. Todos os comandos javadoc começam com&amp;nbsp;&lt;strong style="font-weight: bold;"&gt;@&lt;/strong&gt;.Exemplo prático&lt;br /&gt;&lt;blockquote style="background-attachment: initial; background-clip: initial; background-image: url(http://s0.wp.com/wp-content/themes/pub/greyzed/images/quote.gif); background-origin: initial; background-position: 0% 0%; background-repeat: no-repeat no-repeat; border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: #747775; font-family: Tahoma, Verdana, Arial, sans-serif; font-size: 12px; line-height: 21px; margin-bottom: 0px; margin-left: 10px; margin-right: 30px; margin-top: 15px; min-height: 32px; padding-bottom: 0px; padding-left: 60px; padding-right: 0px; padding-top: 0px; quotes: ''; text-align: left; vertical-align: baseline;"&gt;&lt;div style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: inherit; font-style: inherit; margin-bottom: 1.8em; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;&lt;span style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: #3366ff; font-family: inherit; font-style: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;/**&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;span style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: #3366ff; font-family: inherit; font-style: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;* Método principal&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;span style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: #3366ff; font-family: inherit; font-style: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;* &amp;lt;p&amp;gt;Esse método executa alguma ação&amp;lt;/p&amp;gt;&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;span style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: #3366ff; font-family: inherit; font-style: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;*&amp;nbsp;&lt;strong style="font-weight: bold;"&gt;@param&lt;/strong&gt;&amp;nbsp;args, um vetor de argumentos que podem ser informados&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;span style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: #3366ff; font-family: inherit; font-style: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;*&amp;nbsp;&lt;strong style="font-weight: bold;"&gt;@author&lt;/strong&gt;&amp;nbsp;coreerror&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;span style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: #3366ff; font-family: inherit; font-style: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;*&amp;nbsp;&lt;strong style="font-weight: bold;"&gt;@exception&lt;/strong&gt;&amp;nbsp;Vai ser lançada uma NullPointerException&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;span style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: #3366ff; font-family: inherit; font-style: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;*&amp;nbsp;&lt;strong style="font-weight: bold;"&gt;@version&lt;/strong&gt;&amp;nbsp;1.0.1&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;span style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: #3366ff; font-family: inherit; font-style: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;*&amp;nbsp;&lt;strong style="font-weight: bold;"&gt;@return&lt;/strong&gt;&amp;nbsp;Vai ser retornada uma lista de String&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;span style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: #3366ff; font-family: inherit; font-style: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;*/&lt;/span&gt;&lt;br /&gt;&lt;strong style="font-weight: bold;"&gt;&lt;span style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: maroon; font-family: inherit; font-style: inherit; font-weight: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;public static void&lt;/span&gt;&lt;/strong&gt;&amp;nbsp;main(String[] args) {&lt;br /&gt;java.lang.System.getProperty(&lt;span style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: #999999; font-family: inherit; font-style: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;“file.separator”&lt;/span&gt;);&lt;br /&gt;}&lt;/div&gt;&lt;/blockquote&gt;Esse comentário azul antes do método é o javadoc, nele eu coloquei o nome do método, coloquei também em um parágrafo informando o que o método faz, expliquei os parâmetros com a tag&amp;nbsp;&lt;strong style="font-weight: bold;"&gt;@param&lt;/strong&gt;, falei que fez esse método com a tag&amp;nbsp;&lt;strong style="font-weight: bold;"&gt;@autor&lt;/strong&gt;, expliquei as exceções com a tag&amp;nbsp;&lt;strong style="font-weight: bold;"&gt;@exception&lt;/strong&gt;, indiquei a versão do método com&amp;nbsp;&lt;strong style="font-weight: bold;"&gt;@version&lt;/strong&gt;&amp;nbsp;e disse também o que o método irá retornar com&amp;nbsp;&lt;strong style="font-weight: bold;"&gt;@return&lt;/strong&gt;. Não repare que o javadoc não tem nada a ver com o método, isso ai é só pra exemplificar, eu sei que o método não retorna nada e não lança nenhuma exception.Se você colocar o mouse sobre a palavra&amp;nbsp;&lt;strong style="font-weight: bold;"&gt;main&amp;nbsp;&lt;/strong&gt;(o nome do método), vai ver esse comentário sendo exibido como um javadoc:&lt;br /&gt;&lt;div style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: #333333; font-family: Tahoma, Verdana, Arial, sans-serif; font-size: 12px; line-height: 21px; margin-bottom: 1.8em; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: center; vertical-align: baseline;"&gt;&lt;img alt="Imagem do javadoc que foi criado para o método main" class="size-full wp-image-289 aligncenter" height="398" src="http://codeerror.files.wordpress.com/2011/03/javadoc_exemplo1.png?w=419&amp;amp;h=398" style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; display: block; font-family: inherit; font-style: inherit; margin-bottom: 0px; margin-left: auto; margin-right: auto; margin-top: 0px; max-width: 100%; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;" title="JavaDoc_exemplo1" width="419" /&gt;&lt;/div&gt;Existe também a tag&amp;nbsp;&lt;strong style="font-weight: bold;"&gt;@see&lt;/strong&gt;, essa tag deve ser utilizada quando você quer que o javadoc de outro método ou classe seja visto, e um link vai ser criado automaticamente para o método ou classe que você indicou, lembra que no javadoc do&amp;nbsp;&lt;em style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;System.getProperty&lt;/em&gt;&amp;nbsp;você clicou no link&amp;nbsp;&lt;em style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;getProperties&lt;/em&gt;? É exatamente isso, sempre coloque @see para as dependencias do seu método, para as classes que devem ser informadas por parâmetro para seu método, se ele receber objetos, ou em caso de classes, coloque @see para os construtores e para oturas classes que trabalham em conjunto com ela, etç. Quando você quer referenciar um método de alguma classe no javadoc você não deve utilizar o ponto&amp;nbsp;&lt;span style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: red; font-family: inherit; font-style: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;&lt;strong style="font-weight: bold;"&gt;@see System.getProperty&lt;/strong&gt;&lt;/span&gt;, mas sim um “&lt;strong style="font-weight: bold;"&gt;sustenido&lt;/strong&gt;“, também conhecido como “jogo da velha”&amp;nbsp;&lt;span style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: green; font-family: inherit; font-style: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;&lt;strong style="font-weight: bold;"&gt;@see System#getProperty&lt;/strong&gt;&lt;/span&gt;, isso também vale para referenciar métodos ou variáveis que estiverem na mesma classe&amp;nbsp;&lt;strong style="font-weight: bold;"&gt;@see #outroMetodo() @see #algumaVariavel&lt;/strong&gt;&lt;br /&gt;&lt;blockquote style="background-attachment: initial; background-clip: initial; background-image: url(http://s0.wp.com/wp-content/themes/pub/greyzed/images/quote.gif); background-origin: initial; background-position: 0% 0%; background-repeat: no-repeat no-repeat; border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: #747775; font-family: Tahoma, Verdana, Arial, sans-serif; font-size: 12px; line-height: 21px; margin-bottom: 0px; margin-left: 10px; margin-right: 30px; margin-top: 15px; min-height: 32px; padding-bottom: 0px; padding-left: 60px; padding-right: 0px; padding-top: 0px; quotes: ''; text-align: left; vertical-align: baseline;"&gt;&lt;div style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: inherit; font-style: inherit; margin-bottom: 1.8em; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;&lt;span style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: #3366ff; font-family: inherit; font-style: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;/**&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;span style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: #3366ff; font-family: inherit; font-style: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;* @see System&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;span style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: #3366ff; font-family: inherit; font-style: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;* @see System#getProperty(String)&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;span style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: #3366ff; font-family: inherit; font-style: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;* @see #getClass()&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;span style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: #3366ff; font-family: inherit; font-style: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;*/&lt;/span&gt;&lt;br /&gt;&lt;strong style="font-weight: bold;"&gt;&lt;span style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: maroon; font-family: inherit; font-style: inherit; font-weight: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;public static void&amp;nbsp;&lt;/span&gt;&lt;/strong&gt;main(String[] args) {&lt;br /&gt;java.lang.System.getProperty(&lt;span style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: #888888; font-family: inherit; font-style: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;“file.separator”&lt;/span&gt;);&lt;br /&gt;}&lt;/div&gt;&lt;/blockquote&gt;Se você quer criar um link em algum lugar que não seja a seção “&lt;strong style="font-weight: bold;"&gt;See Also&lt;/strong&gt;” você também pode, por exemplo, se na parte que você está explicando o que o método faz e como ele funciona você já quiser ir linkando as classes e métodos envolvidos, basta utilizar o comando&lt;strong style="font-weight: bold;"&gt;&amp;nbsp;{@link&amp;nbsp;&lt;span style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: #999999; font-family: inherit; font-style: inherit; font-weight: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;Classe&lt;/span&gt;}&lt;/strong&gt;, com chaves e tudo, no lugar da palavra “Classe” você coloca o nome da classe ou da Classe#Método.&lt;br /&gt;&lt;blockquote style="background-attachment: initial; background-clip: initial; background-image: url(http://s0.wp.com/wp-content/themes/pub/greyzed/images/quote.gif); background-origin: initial; background-position: 0% 0%; background-repeat: no-repeat no-repeat; border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: #747775; font-family: Tahoma, Verdana, Arial, sans-serif; font-size: 12px; line-height: 21px; margin-bottom: 0px; margin-left: 10px; margin-right: 30px; margin-top: 15px; min-height: 32px; padding-bottom: 0px; padding-left: 60px; padding-right: 0px; padding-top: 0px; quotes: ''; text-align: left; vertical-align: baseline;"&gt;&lt;div style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: inherit; font-style: inherit; margin-bottom: 1.8em; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;&lt;span style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: #3366ff; font-family: inherit; font-style: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;/**&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;span style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: #3366ff; font-family: inherit; font-style: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;* Método principal&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;span style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: #3366ff; font-family: inherit; font-style: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;* &amp;lt;p&amp;gt;Esse é um método da classe {@link MainClass} e&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;span style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: #3366ff; font-family: inherit; font-style: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;* acessa a classe {@link System}&amp;lt;/p&amp;gt;&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;span style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: #3366ff; font-family: inherit; font-style: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;*/&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;span style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: maroon; font-family: inherit; font-style: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;&lt;strong style="font-weight: bold;"&gt;public static void main&lt;/strong&gt;&lt;/span&gt;(String[] args) {&lt;br /&gt;java.lang.System.getProperty(&lt;span style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: #999999; font-family: inherit; font-style: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;“file.separator”&lt;/span&gt;);&lt;br /&gt;}&lt;/div&gt;&lt;/blockquote&gt;Para exportar o javadoc e criar um site igual ao da sun que está linkado mais acima você pode ir da forma menos chata, pela IDE, clicar com o botão direito sobre o projeto e selecionar a opção Exportar, depois escolhe Java/JavaDoc na caixa de diálogos que irá abrir, nas telas seguintes seleciona as opções da documentação, onde os arquivos serão salvos, quais classes participarão desse documento, se você quer a documentação dos componentes public, protected, private ou apenas a documentação dos pacotes, da pra selecionar os jars envolvidos na sua aplicação e várias outras opções. Mas se você é guerreiro, pode ir pelo console e utilizar o comando “javadoc”, dentro da pasta onde suas classes estão.Ex.:&lt;br /&gt;&lt;blockquote style="background-attachment: initial; background-clip: initial; background-image: url(http://s0.wp.com/wp-content/themes/pub/greyzed/images/quote.gif); background-origin: initial; background-position: 0% 0%; background-repeat: no-repeat no-repeat; border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: #747775; font-family: Tahoma, Verdana, Arial, sans-serif; font-size: 12px; line-height: 21px; margin-bottom: 0px; margin-left: 10px; margin-right: 30px; margin-top: 15px; min-height: 32px; padding-bottom: 0px; padding-left: 60px; padding-right: 0px; padding-top: 0px; quotes: ''; text-align: left; vertical-align: baseline;"&gt;&lt;div style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: inherit; font-style: inherit; margin-bottom: 1.8em; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;javadoc -d doc c:\home\codeerror\projetoTeste\src\*.java&lt;/div&gt;&lt;/blockquote&gt;Todos as opções que podem ser selecionadas através da IDE também podem ser indicadas na linha de comando, são inúmeras opções, sugiro digitar no console “&lt;strong style="font-weight: bold;"&gt;javadoc -help&lt;/strong&gt;” para analisar as que você precisa.Agora que você está craque em javadoc, vai colocar em cada código que fizer, vou colocar uma pequena tabela abaixo com os comandos mais relevantes e pra que eles servem.&lt;br /&gt;&lt;table align="center" border="1" style="-webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; border-bottom-width: 0px; border-collapse: collapse; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: #333333; font-family: Tahoma, Verdana, Arial, sans-serif; font-size: 12px; line-height: 21px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; vertical-align: middle;"&gt;&lt;tbody style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: inherit; font-style: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;&lt;tr style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: inherit; font-style: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;&lt;td style="border-bottom-style: solid; border-bottom-width: 1px; border-color: initial; border-left-style: solid; border-left-width: 1px; border-right-style: solid; border-right-width: 1px; border-style: initial; border-top-style: solid; border-top-width: 1px; font-family: inherit; font-style: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 4px; padding-left: 4px; padding-right: 4px; padding-top: 4px; vertical-align: middle;"&gt;&lt;span class="Apple-style-span" style="color: white;"&gt;@author&lt;/span&gt;&lt;/td&gt;&lt;td style="border-bottom-style: solid; border-bottom-width: 1px; border-color: initial; border-left-style: solid; border-left-width: 1px; border-right-style: solid; border-right-width: 1px; border-style: initial; border-top-style: solid; border-top-width: 1px; font-family: inherit; font-style: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 4px; padding-left: 4px; padding-right: 4px; padding-top: 4px; vertical-align: middle;"&gt;&lt;span class="Apple-style-span" style="color: white;"&gt;Nome de quem fez o código&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: inherit; font-style: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;&lt;td style="border-bottom-style: solid; border-bottom-width: 1px; border-color: initial; border-left-style: solid; border-left-width: 1px; border-right-style: solid; border-right-width: 1px; border-style: initial; border-top-style: solid; border-top-width: 1px; font-family: inherit; font-style: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 4px; padding-left: 4px; padding-right: 4px; padding-top: 4px; vertical-align: middle;"&gt;&lt;span class="Apple-style-span" style="color: white;"&gt;@category&lt;/span&gt;&lt;/td&gt;&lt;td style="border-bottom-style: solid; border-bottom-width: 1px; border-color: initial; border-left-style: solid; border-left-width: 1px; border-right-style: solid; border-right-width: 1px; border-style: initial; border-top-style: solid; border-top-width: 1px; font-family: inherit; font-style: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 4px; padding-left: 4px; padding-right: 4px; padding-top: 4px; vertical-align: middle;"&gt;&lt;span class="Apple-style-span" style="color: white;"&gt;Você pode criar categorias para seus códigos, como “utilidades” ou “maipulação” ou “services”, etç,&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: inherit; font-style: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;&lt;td style="border-bottom-style: solid; border-bottom-width: 1px; border-color: initial; border-left-style: solid; border-left-width: 1px; border-right-style: solid; border-right-width: 1px; border-style: initial; border-top-style: solid; border-top-width: 1px; font-family: inherit; font-style: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 4px; padding-left: 4px; padding-right: 4px; padding-top: 4px; vertical-align: middle;"&gt;&lt;span class="Apple-style-span" style="color: white;"&gt;@deprecated&lt;/span&gt;&lt;/td&gt;&lt;td style="border-bottom-style: solid; border-bottom-width: 1px; border-color: initial; border-left-style: solid; border-left-width: 1px; border-right-style: solid; border-right-width: 1px; border-style: initial; border-top-style: solid; border-top-width: 1px; font-family: inherit; font-style: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 4px; padding-left: 4px; padding-right: 4px; padding-top: 4px; vertical-align: middle;"&gt;&lt;span class="Apple-style-span" style="color: white;"&gt;Informa se esse método está depreciado, ou seja, irá deixar de existir na próxima versão do programa&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: inherit; font-style: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;&lt;td style="border-bottom-style: solid; border-bottom-width: 1px; border-color: initial; border-left-style: solid; border-left-width: 1px; border-right-style: solid; border-right-width: 1px; border-style: initial; border-top-style: solid; border-top-width: 1px; font-family: inherit; font-style: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 4px; padding-left: 4px; padding-right: 4px; padding-top: 4px; vertical-align: middle;"&gt;&lt;span class="Apple-style-span" style="color: white;"&gt;@exception&lt;/span&gt;&lt;/td&gt;&lt;td style="border-bottom-style: solid; border-bottom-width: 1px; border-color: initial; border-left-style: solid; border-left-width: 1px; border-right-style: solid; border-right-width: 1px; border-style: initial; border-top-style: solid; border-top-width: 1px; font-family: inherit; font-style: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 4px; padding-left: 4px; padding-right: 4px; padding-top: 4px; vertical-align: middle;"&gt;&lt;span class="Apple-style-span" style="color: white;"&gt;Indica as exceções que podem ser lançadas pelo método/Classe&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: inherit; font-style: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;&lt;td style="border-bottom-style: solid; border-bottom-width: 1px; border-color: initial; border-left-style: solid; border-left-width: 1px; border-right-style: solid; border-right-width: 1px; border-style: initial; border-top-style: solid; border-top-width: 1px; font-family: inherit; font-style: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 4px; padding-left: 4px; padding-right: 4px; padding-top: 4px; vertical-align: middle;"&gt;&lt;span class="Apple-style-span" style="color: white;"&gt;@param&lt;/span&gt;&lt;/td&gt;&lt;td style="border-bottom-style: solid; border-bottom-width: 1px; border-color: initial; border-left-style: solid; border-left-width: 1px; border-right-style: solid; border-right-width: 1px; border-style: initial; border-top-style: solid; border-top-width: 1px; font-family: inherit; font-style: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 4px; padding-left: 4px; padding-right: 4px; padding-top: 4px; vertical-align: middle;"&gt;&lt;span class="Apple-style-span" style="color: white;"&gt;Explica o parâmetro, deve ser criado um @param para cada parametro recebido pelo método. Tente explicar detalhadamente, como por exemplo “Informar o objeto X com todas as variáveis preenchidas” ou “informar um numero de 0 a 10?&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: inherit; font-style: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;&lt;td style="border-bottom-style: solid; border-bottom-width: 1px; border-color: initial; border-left-style: solid; border-left-width: 1px; border-right-style: solid; border-right-width: 1px; border-style: initial; border-top-style: solid; border-top-width: 1px; font-family: inherit; font-style: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 4px; padding-left: 4px; padding-right: 4px; padding-top: 4px; vertical-align: middle;"&gt;&lt;span class="Apple-style-span" style="color: white;"&gt;@return&lt;/span&gt;&lt;/td&gt;&lt;td style="border-bottom-style: solid; border-bottom-width: 1px; border-color: initial; border-left-style: solid; border-left-width: 1px; border-right-style: solid; border-right-width: 1px; border-style: initial; border-top-style: solid; border-top-width: 1px; font-family: inherit; font-style: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 4px; padding-left: 4px; padding-right: 4px; padding-top: 4px; vertical-align: middle;"&gt;&lt;span class="Apple-style-span" style="color: white;"&gt;Explica o que será retornado pelo método, indique também as possíveis variações de retorno, como “pode retornar verdadeiro se 1 for menor que 2 ou falso se 2 for maior que 1?.&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: inherit; font-style: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;&lt;td style="border-bottom-style: solid; border-bottom-width: 1px; border-color: initial; border-left-style: solid; border-left-width: 1px; border-right-style: solid; border-right-width: 1px; border-style: initial; border-top-style: solid; border-top-width: 1px; font-family: inherit; font-style: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 4px; padding-left: 4px; padding-right: 4px; padding-top: 4px; vertical-align: middle;"&gt;&lt;span class="Apple-style-span" style="color: white;"&gt;@see&lt;/span&gt;&lt;/td&gt;&lt;td style="border-bottom-style: solid; border-bottom-width: 1px; border-color: initial; border-left-style: solid; border-left-width: 1px; border-right-style: solid; border-right-width: 1px; border-style: initial; border-top-style: solid; border-top-width: 1px; font-family: inherit; font-style: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 4px; padding-left: 4px; padding-right: 4px; padding-top: 4px; vertical-align: middle;"&gt;&lt;span class="Apple-style-span" style="color: white;"&gt;Cria um link de referência para outra classe ou método&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: inherit; font-style: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;&lt;td style="border-bottom-style: solid; border-bottom-width: 1px; border-color: initial; border-left-style: solid; border-left-width: 1px; border-right-style: solid; border-right-width: 1px; border-style: initial; border-top-style: solid; border-top-width: 1px; font-family: inherit; font-style: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 4px; padding-left: 4px; padding-right: 4px; padding-top: 4px; vertical-align: middle;"&gt;&lt;span class="Apple-style-span" style="color: white;"&gt;@since&lt;/span&gt;&lt;/td&gt;&lt;td style="border-bottom-style: solid; border-bottom-width: 1px; border-color: initial; border-left-style: solid; border-left-width: 1px; border-right-style: solid; border-right-width: 1px; border-style: initial; border-top-style: solid; border-top-width: 1px; font-family: inherit; font-style: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 4px; padding-left: 4px; padding-right: 4px; padding-top: 4px; vertical-align: middle;"&gt;&lt;span class="Apple-style-span" style="color: white;"&gt;Esse é para controle de versão, aqui você informa quando o método foi adicionado na classe, ou quando a classe foi adicionada ao pacote&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: inherit; font-style: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;&lt;td style="border-bottom-style: solid; border-bottom-width: 1px; border-color: initial; border-left-style: solid; border-left-width: 1px; border-right-style: solid; border-right-width: 1px; border-style: initial; border-top-style: solid; border-top-width: 1px; font-family: inherit; font-style: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 4px; padding-left: 4px; padding-right: 4px; padding-top: 4px; vertical-align: middle;"&gt;&lt;span class="Apple-style-span" style="color: white;"&gt;@throws&lt;/span&gt;&lt;/td&gt;&lt;td style="border-bottom-style: solid; border-bottom-width: 1px; border-color: initial; border-left-style: solid; border-left-width: 1px; border-right-style: solid; border-right-width: 1px; border-style: initial; border-top-style: solid; border-top-width: 1px; font-family: inherit; font-style: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 4px; padding-left: 4px; padding-right: 4px; padding-top: 4px; vertical-align: middle;"&gt;&lt;span class="Apple-style-span" style="color: white;"&gt;Similar a @exception&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: inherit; font-style: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;&lt;td style="border-bottom-style: solid; border-bottom-width: 1px; border-color: initial; border-left-style: solid; border-left-width: 1px; border-right-style: solid; border-right-width: 1px; border-style: initial; border-top-style: solid; border-top-width: 1px; font-family: inherit; font-style: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 4px; padding-left: 4px; padding-right: 4px; padding-top: 4px; vertical-align: middle;"&gt;&lt;span class="Apple-style-span" style="color: white;"&gt;@version&lt;/span&gt;&lt;/td&gt;&lt;td style="border-bottom-style: solid; border-bottom-width: 1px; border-color: initial; border-left-style: solid; border-left-width: 1px; border-right-style: solid; border-right-width: 1px; border-style: initial; border-top-style: solid; border-top-width: 1px; font-family: inherit; font-style: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 4px; padding-left: 4px; padding-right: 4px; padding-top: 4px; vertical-align: middle;"&gt;&lt;span class="Apple-style-span" style="color: white;"&gt;Aqui você pode indicar a versão da classe ou do método&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: inherit; font-style: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;&lt;td style="border-bottom-style: solid; border-bottom-width: 1px; border-color: initial; border-left-style: solid; border-left-width: 1px; border-right-style: solid; border-right-width: 1px; border-style: initial; border-top-style: solid; border-top-width: 1px; font-family: inherit; font-style: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 4px; padding-left: 4px; padding-right: 4px; padding-top: 4px; vertical-align: middle;"&gt;&lt;span class="Apple-style-span" style="color: white;"&gt;{@link XX}&lt;/span&gt;&lt;/td&gt;&lt;td style="border-bottom-style: solid; border-bottom-width: 1px; border-color: initial; border-left-style: solid; border-left-width: 1px; border-right-style: solid; border-right-width: 1px; border-style: initial; border-top-style: solid; border-top-width: 1px; font-family: inherit; font-style: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 4px; padding-left: 4px; padding-right: 4px; padding-top: 4px; vertical-align: middle;"&gt;&lt;span class="Apple-style-span" style="color: white;"&gt;Cria um link para uma classe ou método, o nome da classe ou método deve ser colocado no lugar das letras “XX”&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;Enjoy!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6756811341323141038-536932789064391968?l=javaerro.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javaerro.blogspot.com/feeds/536932789064391968/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://javaerro.blogspot.com/2011/11/sem-medo-do-javadoc.html#comment-form' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6756811341323141038/posts/default/536932789064391968'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6756811341323141038/posts/default/536932789064391968'/><link rel='alternate' type='text/html' href='http://javaerro.blogspot.com/2011/11/sem-medo-do-javadoc.html' title='Sem medo do JavaDoc'/><author><name>Reinaldo Elias</name><uri>http://www.blogger.com/profile/17009512606320480417</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><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6756811341323141038.post-329432348867424346</id><published>2011-11-20T11:07:00.001-02:00</published><updated>2012-01-10T21:53:14.627-02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Javascript'/><category scheme='http://www.blogger.com/atom/ns#' term='Java Dicas'/><category scheme='http://www.blogger.com/atom/ns#' term='JSF'/><title type='text'>JavaScript + JSF, será que dá certo? (parte 2)</title><content type='html'>&lt;br /&gt;Em um &lt;a href="http://javaerro.blogspot.com/2011/11/quem-e-analista-de-sistemas-ou.html"&gt;outro post sobre JSF + Javascript&lt;/a&gt; comentei como manipular os objetos no jsp via javascript, agora vou postar algo ainda mais útil que isso, ainda no quesito gambiarra necessária.&lt;br /&gt;Imagine que você tem algumas variáveis de controle em seu código Java, mas precisa que essas variáveis sejam enviadas de alguma forma para o jsp para que você faça alguma ação via javascript, como por exemplo, efetuar uma validação no código Java e se tudo estiver certo continuar a execução, mas se algo estiver errado volta para a tela, exibe uma mensagem e pinta os campos de alguma cor destacando o que está errado. Nesse caso a ação de pintar os campos e até mesmo a mensagem, dependendo da sua aplicação, é uma ação delegada ao javascript. &lt;br /&gt;Mas como fazer para que a minha variável de controle no Java seja enxergada no javascript? &lt;br /&gt;Na minha época de estagiário, eu certamente faria algo do tipo:&lt;br /&gt;Deixa a variável de controle no Bean, adiciona um campo “inputtext” oculto no jsp e faz esse campo receber o valor da variável de controle, via javascript eu mando um getElementById pegar o valor desse campo e começo a utilizar. &lt;br /&gt;Maravilha, gambiarra melhor que essa fica difícil de fazer, nem da vontade de mexer mais no código depois disso, deixa lá para as gerações futuras saberem quem fez essa maravilha de código. &lt;br /&gt;Uma coisa que eu costumo dizer é: Para que ter o trabalho de fazer algo que já fizeram, e provavelmente melhor do que você? &lt;br /&gt;O &lt;strong&gt;Tomahalk&lt;/strong&gt; já faz algo do tipo sem precisar ficar colocando campo oculto na tela, não precisa se preocupar mais com essa gambiarra, se preocupe com as outras. &lt;br /&gt;O que iremos fazer é utilizar um comando do tomahalk que pega uma variável qualquer do seu bean e passa o seu valor para uma variável global em javascript (a variável é global mas funciona apenas no jsp em que ela foi declarada). Para utilizar essa “poderosíssima” ferramenta, precisaremos primeiro importar a taglib necessária no jsp, mas não se desespere, se você está utilizando JSF é bem provável que possua esse jar no meio de sua pasta lib. &lt;br /&gt;Importe a seguinte taglib (eu estou chamando apenas de &lt;strong&gt;“T”&lt;/strong&gt; para economizar as teclas digitadas): &lt;br /&gt;&lt;blockquote&gt;&amp;lt;%@ taglib uri="http://myfaces.apache.org/tomahawk" prefix="t"%&amp;gt;&lt;/blockquote&gt;Agora, em qualquer lugar de seu jsp, mas para ficar menos feio, próximo ao seu javascript, importe a variável que precisa utilizando o comando&lt;strong&gt; t:jsValueSet&lt;/strong&gt; &lt;br /&gt;&lt;blockquote&gt;&amp;lt;t:jsValueSet name="" value=""/&amp;gt;&lt;/blockquote&gt;Em &lt;strong&gt;NAME&lt;/strong&gt; você precisa colocar o nome que essa variável terá no javascript, pode ser qualquer coisa, até&lt;em&gt;sorveteDeChocolate&lt;/em&gt;, mas será muito mais agradável se colocar um nome que faça referência ao que ela representa.&lt;br /&gt;Em &lt;strong&gt;VALUE&lt;/strong&gt; você deve colocar a variável de seu bean. &lt;br /&gt;Ex.: Digamos que eu tenha uma variável de controle em meu bean chamada controleMensagem, essa variável é booleana. &lt;br /&gt;&lt;em&gt;NOTA: Os nomes no Java e no javascript podem ser iguais, eu coloquei diferente para não confundir as coisas.&lt;/em&gt; &lt;br /&gt;Feito isso, agora eu só preciso utilizar a variável no javascript: &lt;br /&gt;&lt;blockquote&gt;if (exibeMensagem) {&lt;br /&gt;alert("preencha direito o campo x!");&lt;br /&gt;}&lt;/blockquote&gt;No exemplo acima eu estou utilizando minha variável dentro do IF, porque condiz com o exemplo que eu passei, mas você pode utilizar em qualquer outra situação dentro de qualquer javascript no jsp em que o jsValueSet foi declarado, a variável não precisa nem ser booleana, pode ser de qualquer tipo. &lt;br /&gt;Espero que esse post ajude a eliminar muitas gambiarras em seu código!&lt;br /&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/6756811341323141038-329432348867424346?l=javaerro.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javaerro.blogspot.com/feeds/329432348867424346/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://javaerro.blogspot.com/2011/11/javascript-jsf-sera-que-da-certo-parte.html#comment-form' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6756811341323141038/posts/default/329432348867424346'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6756811341323141038/posts/default/329432348867424346'/><link rel='alternate' type='text/html' href='http://javaerro.blogspot.com/2011/11/javascript-jsf-sera-que-da-certo-parte.html' title='JavaScript + JSF, será que dá certo? (parte 2)'/><author><name>Reinaldo Elias</name><uri>http://www.blogger.com/profile/17009512606320480417</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><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6756811341323141038.post-4199270430063809420</id><published>2011-11-20T01:51:00.001-02:00</published><updated>2012-01-10T21:53:14.659-02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Javascript'/><category scheme='http://www.blogger.com/atom/ns#' term='Java Dicas'/><category scheme='http://www.blogger.com/atom/ns#' term='JSF'/><title type='text'>JavaScript + JSF, será que dá certo?</title><content type='html'>&lt;p&gt;Quem é analista de sistemas ou programador com certeza já passou por isso, a aplicação está pronta, já na fase de homologação no cliente e o encerragado solta uma pérola querendo alterar a validação de alguns campos, e o melhor “&lt;strong&gt;PARA ONTEM!&lt;/strong&gt;“. &lt;p&gt;Poderíamos alterar as &lt;em&gt;classes &lt;/em&gt;de tratamento para contemplar as novas requisições, porém isso demanda um certo tempo, é custoso e algumas vezes a validação é tão simples que não compensa alterar toda a arquitetura da página para incluí-la, mas então o que fazer? Podemos apelar para o&lt;strong&gt; quebra-galhos web universal &lt;/strong&gt;o&lt;strong&gt; &lt;font color="#ff0000"&gt;JavaScript&lt;/font&gt;&lt;/strong&gt;! &lt;p&gt;Mas espera um pouco, JavaScript e JSF não combinam muito… Então o que fazer?&lt;br&gt;Existem alguns “&lt;em&gt;macetes&lt;/em&gt;“&amp;nbsp; para conseguir fazer o JavaScript se comunicar com os componentes criados pela aplicação JSF, e estes macetes você só aprende aqui! &lt;p&gt;Primeiro: &lt;p&gt;Tente sempre trabalhar com &lt;strong&gt;&lt;font color="#ff0000"&gt;GetElement&lt;/font&gt;&lt;/strong&gt;!&lt;br&gt;A estrutura padrão de Html/JavaScript diz que os componentes da página são renderizados de forma hierárquica (&lt;strong&gt;document.form.objeto.propriedade&lt;/strong&gt;), para acessar o valor de um input por exemplo você deveria solicitar “document.formulario.objeto.value”, porém esta forma é um tanto quanto falha, em websites muito dinâmicos nem sempre é possível saber o caminho completo de um componente, então entra em ação o &lt;strong&gt;GetElement&lt;/strong&gt;! &lt;p&gt;&lt;strong&gt;GetElement &lt;/strong&gt;funcionana mais ou menos assim: Você informa algum parâmetro, e ele varre toda a tela procurando aquele parâmetro, não importa onde ele está se dentro ou fora do formulário, não importa que objeto seja! &lt;p&gt;Vamos utilizar como exemplo a &lt;strong&gt;busca por ID&lt;/strong&gt;, já que todos os objetos possuem um id, mesmo que você não informe os ids dos seus objetos, eles são criados automaticamente, mas isso é uma má pratica, &lt;strong&gt;sempre nomeie seus objetos&lt;/strong&gt;! &lt;p&gt;Então digamos que:&lt;br&gt;Ao clicar no “&lt;em&gt;submit&lt;/em&gt;” queremos obter o valor de um input e se for&amp;nbsp; menor que 10 devemos exibir um alerta informando o usuário, pintar o campo de amarelo e enviar o foco para ele. &lt;p&gt;Então devemos colocar na tag form a pripriedade onsubmit=”nome_ta_função()”, mas até aqui é normal. &lt;p&gt;Na função que está o “pulo do gato”: &lt;p&gt;&lt;strong&gt;variavel = document.getElementById(“id_do_campo”).value;&lt;/strong&gt;&lt;br&gt;Note que não precisamos indicar o caminho inteiro do campo, apenas que ele está “&lt;strong&gt;neste documento&lt;/strong&gt;“, seu &lt;strong&gt;ID &lt;/strong&gt;e o que queremos dele, no caso o &lt;strong&gt;value&lt;/strong&gt;. &lt;p&gt;Agora que possuímos o valor, podemos fazer a validação! &lt;p&gt;if(parseInt(variavel) &amp;lt; 10){ &lt;p&gt;alert(“o valor do campo ” + &lt;strong&gt;document.getElementById(“id_do_campo”).name&lt;/strong&gt; + ” é menor que 10 “);&lt;br&gt;//Note que aqui a frase será “O valor do campo XXX é menor que 10″ &lt;p&gt;//Agora vamos pintar o fundo do campo!&lt;br&gt;&lt;strong&gt;document.getElementById(“id_do_campo”).style.background = “yellow”;&lt;/strong&gt;&lt;br&gt;//Nesta linha alteramos o BackGround do campo para amarelo, através do estilo! &lt;p&gt;&lt;strong&gt;document.getElementById(“id_do_campo”).focus();&lt;/strong&gt;&lt;br&gt;//Nesta linha passamos o foco para o campo. &lt;p&gt;} &lt;p&gt;Ok, ok, mas eu fiz tudo isso ai e fica dando uma mensagem de erro “&lt;em&gt;&lt;strong&gt;Objeto nulo ou inválido….&lt;/strong&gt;&lt;/em&gt;“. &lt;p&gt;Muito bem, realmente o objeto é nulo, estes comandos funcionam perfeitamente mas em HTML puro, em JSF o javascript não vai conseguir encontrar o campo pelo id normal, por que ele não existe! &lt;p&gt;O que acontece em JSF é que &lt;strong&gt;na renderização&lt;/strong&gt; das páginas ele nomeia os IDs para &lt;font color="#ff0000"&gt;&lt;strong&gt;NOME_DO_FORMULÁRIO DOIS PONTOS ID_DO_CAMPO&lt;/strong&gt;&lt;/font&gt;. &lt;p&gt;Ou seja… &lt;p&gt;Se nosso campo está dentro de um formulario cujo nome é “&lt;strong&gt;cadastroForm&lt;/strong&gt;” e demos o nome de “&lt;strong&gt;numero&lt;/strong&gt;” para nosso input, na renderização da página o JSF vai renomerar automaticamente o id do campo para&lt;strong&gt;cadastroForm:numero&lt;/strong&gt;. &lt;p&gt;Então… quando você for chamar o campo pelo &lt;strong&gt;getElementById&lt;/strong&gt;, informe &lt;strong&gt;formulario:campo&lt;/strong&gt;, e não somente o id do campo! &lt;p&gt;E agora funcionou? &lt;p&gt;Desta forma não é necessário encapsular JavaScript dentro do JSF, nem precisamos alterar a arquitetura inteira para criar uma simples validação, basta utilizar esta dica para desenvolver uma validação simples em JavaScript e em pouquíssimo tempo devolver para o usuário.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6756811341323141038-4199270430063809420?l=javaerro.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javaerro.blogspot.com/feeds/4199270430063809420/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://javaerro.blogspot.com/2011/11/quem-e-analista-de-sistemas-ou.html#comment-form' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6756811341323141038/posts/default/4199270430063809420'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6756811341323141038/posts/default/4199270430063809420'/><link rel='alternate' type='text/html' href='http://javaerro.blogspot.com/2011/11/quem-e-analista-de-sistemas-ou.html' title='JavaScript + JSF, será que dá certo?'/><author><name>Reinaldo Elias</name><uri>http://www.blogger.com/profile/17009512606320480417</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><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6756811341323141038.post-1527459175037964384</id><published>2011-11-20T01:45:00.001-02:00</published><updated>2012-01-10T21:53:14.600-02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Java Dicas'/><title type='text'>Gerar executáveis em java! JAR e EXE</title><content type='html'>&lt;p&gt;Sim, você não leu errado, é exatamente isso o que está escrito.&lt;br&gt;Mas como? Por que?? Pra que??? Você deve estar se perguntando! E eu respondo: “Simplesmente por que eu quero” ou melhor ainda “Estou acostumado com programas executáveis” (não é o meu caso), ou por qualquer que seja o motivo. &lt;p&gt;Antes de chegar ao &lt;strong&gt;X&lt;/strong&gt; da questão, deixe-me falar algumas coisas e sugerir outras. &lt;p&gt;Primeiramente gostaria de comentar sobre a dificuldade que temos em apenas tocar neste assunto (&lt;em&gt;gerar um executável em java&lt;/em&gt;) em comunidades próprias dessa linguagem, porque Java não foi criado pra este propósito, e blá-blá-blá, e o pessoal simplesmente não dá nenhuma informação, apenas vem com críticas destrutivas. Realmente, java não foi criado para este propósito, e gerando um arquivo &lt;strong&gt;*.EXE&lt;/strong&gt; você perde a portabilidade e etç, mas não me importo eu quero gerar um executável! &lt;p&gt;&lt;strong&gt;Opções! E por que escolhê-las:&lt;/strong&gt; &lt;p&gt;&lt;strong&gt;&lt;/strong&gt; &lt;p&gt;&lt;strong&gt;&lt;u&gt;&lt;font size="3"&gt;JAR&lt;/font&gt;&lt;/u&gt;&lt;/strong&gt;&lt;br&gt;Você conhece o &lt;strong&gt;JAR&lt;/strong&gt;? É um coleguinha do &lt;strong&gt;RAR&lt;/strong&gt; e do &lt;strong&gt;ZIP&lt;/strong&gt;.&lt;br&gt;A linguagem Java dispõe de uma opção muito interessante, largamente utilizada na distribuição de programas e bibliotecas, e consiste simplesmente em &lt;em&gt;um grupo de classes compactados&lt;/em&gt;, da mesma forma como você compacta seus arquivos em um ZIP ou um RAR, você pode compactar suas classes em um JAR. Claro que não dá pra usar o Winzip ou o Winrar pra gerar um arquivo JAR, mas você pode utilizar esses programas ou qualquer outro do tipo para&lt;strong&gt;ler&lt;/strong&gt; e &lt;strong&gt;descompactar&lt;/strong&gt; o JAR. &lt;p&gt;&lt;strong&gt;Como fazer?&lt;/strong&gt; Muito simples.&lt;br&gt;A primeira opção é utilizando uma IDE, como &lt;em&gt;Eclipse&lt;/em&gt; ou &lt;em&gt;NetBeans&lt;/em&gt;. No caso do eclipse, você clica com o botão direito em cima da pastinha raiz do seu projeto, vai até Exportar e escolhe a opção &lt;em&gt;Java Arquive File (JAR)&lt;/em&gt;, segue algumas orientações na tela como escolher onde o arquivo será salvo e o nome do arquivo, clica em um botãozinho e pronto, seu jar está criado, mas digamos que você não use uma IDE, você criou todas as suas &lt;strong&gt;999&lt;/strong&gt; classes na mão, utilizando o notepad! Como fazer? &lt;p&gt;Se você é um guerreiro, e quer continuar lutando, pode utilizar o console para criar seu jar, mas é um pouco mais dificil que utilizando uma IDE. &lt;p&gt;Primeiro você vai precisar escolher qual é sua classe principal (Main class), não importa se seu projeto é pequeno, grande ou gigante, com certeza ele tem uma classe principal, que deve ser iniciada primeiro.&lt;br&gt;Agora que você sabe o nome da sua classe principal, abra o notepad e escreva os seguintes dizeres. &lt;blockquote&gt; &lt;p&gt;Main-Class: &amp;lt;sua classe&amp;gt;&lt;/p&gt;&lt;/blockquote&gt; &lt;p&gt;Muito importante, aliás, extremamente importante,&lt;strong&gt; pule uma linha&lt;/strong&gt; quando terminar de escrever isso ai acima, senão nada funciona. Esse arquivo será o &lt;strong&gt;MANIFEST&lt;/strong&gt;, o jar utiliza isso pra saber o que fazer quando alguem o executar. &lt;p&gt;Feito isso, salve esse arquivo em qualquer lugar, eu não me importo, apenas salve com um nome facil de decorar. &lt;p&gt;Agora vá até o console e digite: &lt;blockquote&gt; &lt;p&gt;&lt;strong&gt;&lt;font color="#ff0000"&gt;jar cmvf&lt;/font&gt;&lt;/strong&gt; &lt;font color="#0080ff"&gt;&amp;lt;&amp;lt;NOME-DO-JAR&amp;gt;&amp;gt;.jar &amp;lt;&amp;lt;SEU-ARQUIVO-MANIFEST&amp;gt;&amp;gt;.txt &amp;lt;&amp;lt;A PASTA DA SUA APLICAÇÃO&amp;gt;&amp;gt;&lt;/font&gt;&lt;/p&gt;&lt;/blockquote&gt; &lt;p&gt;&lt;strong&gt;Calma&lt;/strong&gt;, eu explico.&lt;br&gt;O que está em vermelho é um código que precisa ser digitado para criar o jar, da mesma forma como você digita&lt;strong&gt;JAVAC&lt;/strong&gt; para compilar uma classe, esses dois (&lt;strong&gt;jar cmvf&lt;/strong&gt;) servem pra “compilar” um jar.&lt;br&gt;Na parte &lt;strong&gt;&amp;lt;&amp;lt;NOME-DO-JAR&amp;gt;&amp;gt;.jar&lt;/strong&gt;, você deve sobstituir obviamente &lt;strong&gt;&amp;lt;&amp;lt;NOME-DO-JAR&amp;gt;&amp;gt;&lt;/strong&gt; pelo nome que você quer dar ao jar quando este for compilado, por exemplo “minhaAplicacao.jar”.&lt;br&gt;Em &lt;strong&gt;&amp;lt;&amp;lt;SEU-ARQUIVO-MANIFEST&amp;gt;&amp;gt;.txt&lt;/strong&gt; você vai trocar o &lt;strong&gt;&amp;lt;&amp;lt;SEU-ARQUIVO-MANIFEST&amp;gt;&amp;gt;&lt;/strong&gt; pelo nome do arquivo que você criou, que contém o nome da sua classe principal (você lembra o nome do arquivo “né”?).&lt;br&gt;E por ultimo, você troca &lt;strong&gt;&amp;lt;&amp;lt;A PASTA DA SUA APLICAÇÃO&amp;gt;&amp;gt;&lt;/strong&gt; pelo caminho inteiro até a pasta raiz onde seus arquivos&lt;strong&gt; .CLASS&lt;/strong&gt; estão. &lt;p&gt;Pronto, você criou um jar! &lt;p&gt;Esse arquivo jar, para ser executado precisa que alguem vá até o console e digite: &lt;blockquote&gt; &lt;p&gt;java –jar programa.jar&lt;/p&gt;&lt;/blockquote&gt; &lt;p&gt;Não dá para apenas clicar duas vezes e abrir, quer dizer, dá sim, você tem que configurar o computador da vítima, ou melhor, do usuário, para associar a extensão .jar ao arquivo java.exe ou javaw.exe, da pra fazer esquemas assim alterando chaves no registro, mas isso é outra história. &lt;p&gt;Formas de utilizar/distribuir. &lt;p&gt;Você sabe que pra executar algum programa feito em java, é preciso que o usuário tenha alguma JRE instalada no computador “né”? Se o usuário não a tiver, seu programa não vai rodar.&lt;br&gt;Se você não quiser fazer o povo baixar e instalar a jre pra utilizar seu programa, você pode embutir uma jre junto aos seus arquivos e entregar tudo pro usuário.&lt;br&gt;Ficaria mais ou menos assim, você baixa a JRE, separa as coisas inúteis que vem junto com ela (tipo exemplos, programas pra rodar applet, documentos, etç) deixa só o necessário pra tentar reduzir o tamanho final da pasta. Depois você coloca seu JAR dentro das pastas da JRE, em qualquer lugar, isso não me importa em nada, apenas escolha um lugar e joga o jar lá.&lt;br&gt;Depois você cria um arquivo BAT ou se você souber programar em C, VB, Delphi ou qualquer outra coisa, cria um arquivo que execute o comando “java –jar programa.jar”, porém com uma diferença, você não vai mandar o console executar o “JAVA” que está ou não instalado na máquina do usuário, você vai mandar o console executar o programa&lt;strong&gt;JAVA.EXE&lt;/strong&gt; ou &lt;strong&gt;JAVAW.EXE&lt;/strong&gt; que está dentro da pasta &lt;strong&gt;BIN&lt;/strong&gt; da JRE e passar como parametro o nome do seu jar. Pronto, basta enviar a pasta inteira pro seu usuário e mandar clicar duas vezes no arquivinho BAT que você fez. &lt;p&gt;Outra dica legal é alterar o nome do programa JAVA.EXE para qualquer coisa parecida com o nome do seu programa, é claro que se você alterar o nome de JAVA.EXE para &lt;em&gt;&lt;strong&gt;XPTO.EXE&lt;/strong&gt;&lt;/em&gt;, você tem que chamar &lt;strong&gt;&lt;em&gt;XPTO –jar programa.jar&lt;/em&gt;&lt;/strong&gt;. Se você fizer isso, no gerenciador de tarefas vai aparecer o nome do seu programa e não “java.exe”. &lt;p&gt;&lt;strong&gt;&lt;u&gt;&lt;font size="3"&gt;EXE&lt;/font&gt;&lt;/u&gt;&lt;/strong&gt;&lt;br&gt;Bem, se mesmo com as dicas acima você ainda quiser criar um arquivo EXE vou explicar aqui como faz, mas funciona basicamente da mesma forma como acima. &lt;p&gt;Existem duas formas, a primeira é você pegar um programa que Cria Instaladores, e configurar o instalador pra fazer tudo o que foi dito acima (associar arquivos jar ao programa java.exe ou javaw.exe, copiar o jar para algum lugar, colocar um atalho na area de trabalho, etç, etç, etç), ou: &lt;p&gt;A segunda forma, utilizar o programa JSmooth. &lt;p&gt;Para utilizar o JSMooth, você precisa ter um jar criado, então siga um dos passos acima primeiro, depois abra o JSmooth, fala onde está seu JAR, onde está a JRE (se quiser que a jre vá junto com o programa, se não quiser o usuário terá que ter a jre instalada), escolhe o nome e onde salvar o arquivo, clica no botãozinho mágico e “voalá” seu EXE está criado. &lt;p&gt;Não vou explicar detalhadamente como se utiliza esse programa, por que eles já fizeram um tutorial extremamente detalhado que nem da vontade de criar outro tipo de explicação, você pode acessar o tutorial do programa &lt;a href="http://jsmooth.sourceforge.net/docs/jsmooth-doc.html"&gt;nesse link&lt;/a&gt;. &lt;p&gt;Para baixar o programinha mágico, tenta acessar esse &lt;a href="http://jsmooth.sourceforge.net/"&gt;site aqui&lt;/a&gt;, o site oficial do programa.&lt;br&gt;Se por qualquer motivo eles pararem de disponibilizar o programa, como aconteceu com o plugin da sysdeo, eu coloquei em um servidor próprio a ultima versão disponível até março-2011, a versão 0.9.9.7, que pode ser baixada&lt;a href="https://sites.google.com/site/codeerrorbackground/jsmooth-0.9.9-7-setup.rar?attredirects=0&amp;amp;d=1"&gt;neste link&lt;/a&gt;, mas recomendo ir no &lt;a href="http://jsmooth.sourceforge.net/"&gt;site oficial&lt;/a&gt; para baixar o programa mais atualizado. &lt;p&gt;Boa sorte!&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6756811341323141038-1527459175037964384?l=javaerro.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javaerro.blogspot.com/feeds/1527459175037964384/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://javaerro.blogspot.com/2011/11/sim-voce-nao-leu-errado-e-exatamente.html#comment-form' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6756811341323141038/posts/default/1527459175037964384'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6756811341323141038/posts/default/1527459175037964384'/><link rel='alternate' type='text/html' href='http://javaerro.blogspot.com/2011/11/sim-voce-nao-leu-errado-e-exatamente.html' title='Gerar executáveis em java! JAR e EXE'/><author><name>Reinaldo Elias</name><uri>http://www.blogger.com/profile/17009512606320480417</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><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6756811341323141038.post-3623198055599414783</id><published>2011-02-19T18:57:00.000-02:00</published><updated>2012-01-10T22:34:31.728-02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Web'/><category scheme='http://www.blogger.com/atom/ns#' term='Códigos'/><category scheme='http://www.blogger.com/atom/ns#' term='Dicas'/><title type='text'>JSF – Inicio Rápido – Final</title><content type='html'>&lt;span style="font-size: small;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;&lt;a href="http://javaerro.blogspot.com/2011/02/passo-anterior-passo-4.html" target="_self"&gt;PASSO ANTERIOR (PASSO 5).&lt;/a&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;Agora vamos a melhor parte do nosso projeto, os testes!&lt;br /&gt;&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;Veremos agora se tudo o que fizemos nos passos anteriores deu certo.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;Primeiramente abra o navegador e digite &lt;span style="color: red;"&gt;&lt;b&gt;http://localhost:8080/ProjetoX&lt;/b&gt;&lt;/span&gt; (ou o nome do seu projeto caso tenha utilizado outro).&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;Abriu a página inicial (&lt;span style="color: #999999;"&gt;menu.jsp&lt;/span&gt;)?&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;Se a resposta for afirmativa, teste a navegação, acesse o cadastro, veja como seu projeto está funcionando.&lt;br /&gt;&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;Se a resposta for negativa acredito que o &lt;b&gt;server.xml&lt;/b&gt; não foi configurado automaticamente pela IDE, então vamos fazer a configuração manual.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;Abra o arquivo &lt;b&gt;server.xml&lt;/b&gt;, que está localizado dentro da pasta &lt;b&gt;conf &lt;/b&gt;do seu Tomcat (&lt;a href="http://javaerro.blogspot.com/2010/10/instalacao-da-jdk-instalacao-do-tomcat_24.html" target="_blank"&gt;instalou o Tomcat né?&lt;/a&gt;).&lt;br /&gt;&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;Vá para o final do arquivo e procure alguma tag parecida com esta:&lt;/span&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;span style="font-size: small;"&gt;&lt;span style="color: #888888;"&gt;&lt;i&gt;&amp;lt;Host appbase=”webapps” name=”localhost”………..&lt;br /&gt;&amp;lt;!– Um monte de comentários –&amp;gt;&lt;br /&gt;&amp;lt;/Host&amp;gt;&lt;/i&gt;&lt;/span&gt;&lt;/span&gt;&lt;/blockquote&gt;&lt;span style="font-size: small;"&gt;&lt;span style="color: #333333;"&gt;Esta tag indica que sempre que digitarmos &lt;b&gt;localhost:8080&lt;/b&gt; no navegador, alguma página (a do tomcat)&lt;/span&gt; irá abrir.&lt;br /&gt;&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;Mas não queremos ver a página do Tomcat, queremos ver a nossa página!&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;Então entre as tags &lt;b&gt;&amp;lt;Host&amp;gt;&lt;/b&gt; e &lt;b&gt;&amp;lt;/Host&amp;gt;&lt;/b&gt;, alí onde estão os comentários, insira a seguinte tag:&lt;/span&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;span style="font-size: small;"&gt;&lt;i&gt;&lt;span style="color: green;"&gt;&amp;lt;Context&lt;/span&gt; &lt;span style="color: red;"&gt;path=&lt;/span&gt;&lt;span style="color: blue;"&gt;“/ProjetoX”&lt;/span&gt; &lt;span style="color: red;"&gt;docBase=&lt;/span&gt;&lt;span style="color: blue;"&gt;“c:\projetos\ProjetoX\WebContent”&lt;/span&gt;&lt;br /&gt;&lt;span style="color: red;"&gt;workDir=&lt;/span&gt;&lt;span style="color: blue;"&gt;“c:\projetos\ProjetoX\work”&lt;/span&gt; &lt;span style="color: red;"&gt;reloadable=&lt;/span&gt;&lt;span style="color: blue;"&gt;“true”&lt;/span&gt;&lt;span style="color: green;"&gt;/&amp;gt;&lt;/span&gt;&lt;/i&gt;&lt;/span&gt;&lt;/blockquote&gt;&lt;span style="font-size: small;"&gt;O que é isso?&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;&lt;span style="color: #339966;"&gt;&lt;b&gt;Context &lt;/b&gt;&lt;/span&gt;é a tag que devemos criar para indicar um contexto do localhost, um “subdominio”.&lt;br /&gt;&lt;b&gt;&lt;span style="color: red;"&gt;path=”"&lt;/span&gt;&lt;/b&gt; &lt;/span&gt;&lt;span style="font-size: small;"&gt; é o nome que devemos indicar no navegador, ou seja, devemos digitar &lt;span style="color: #999999;"&gt;&lt;b&gt;“http://localhost:8080/&lt;span style="color: red;"&gt;ProjetoX&lt;/span&gt;“&lt;/b&gt;&lt;/span&gt;.&lt;br /&gt;&lt;span style="color: red;"&gt;&lt;b&gt;docBase=”"&lt;/b&gt;&lt;/span&gt; &lt;/span&gt;&lt;span style="font-size: small;"&gt; é o local onde estão as páginas e o &lt;b&gt;WEB-INF&lt;/b&gt; de sua aplicação, neste caso o MEU projeto está em &lt;b&gt;c:\projetos\ProjetoX&lt;/b&gt;, e onde está a pasta &lt;b&gt;WEB-INF&lt;/b&gt;? Exato, dentro da pasta &lt;b&gt;WebContent&lt;/b&gt;, então devemos informar o caminho &lt;b&gt;c:\projetos\ProjetoX\WebContent&lt;/b&gt;, mas esse é no &lt;span style="text-decoration: underline;"&gt;meu computador&lt;/span&gt;, altere este caminho para o diretório onde a aplicação está instalada no &lt;span style="text-decoration: underline;"&gt;seu computador&lt;/span&gt;.&lt;br /&gt;&lt;span style="color: red;"&gt;&lt;b&gt;workDir=”"&lt;/b&gt;&lt;/span&gt; &lt;/span&gt;&lt;span style="font-size: small;"&gt;, funciona da mesma maneira que o &lt;b&gt;docBase&lt;/b&gt;, porém aqui devemos informar onde está a pasta &lt;b&gt;work &lt;/b&gt;do projeto.&lt;br /&gt;&lt;span style="color: red;"&gt;&lt;b&gt;reloadable=”true”&lt;/b&gt;&lt;/span&gt; &lt;/span&gt;&lt;span style="font-size: small;"&gt;, esta linha indica que nosso projeto está em modo de &lt;span style="text-decoration: underline;"&gt;desenvolvimento&lt;/span&gt;,  e o servidor irá acompanhar de perto todas as mudanças que fazemos  recarregando as classes do projeto todas as vezes que alguma alteração  for detectada, porém para ambiente de produção, é recomendável colocar o  atributo &lt;b&gt;false&lt;/b&gt;, para desativar este acompanhamento de alterações.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;Pronto, agora salve o arquivo e reinicie o Tomcat.&lt;br /&gt;&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;Abra o navegador e digite: &lt;b&gt;http://localhost:8080/ProjetoX&lt;/b&gt;.&lt;br /&gt;&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;Se divirta!&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;&lt;span style="text-decoration: underline;"&gt;&lt;b&gt;Recomendações / Exercícios:&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;1 – Crie novas páginas para navegação, por exemplo, crie uma nova página de cadastro, com mais campos como &lt;i&gt;Sobrenome&lt;/i&gt;, &lt;i&gt;Endereço&lt;/i&gt;, &lt;i&gt;idade&lt;/i&gt;, etç.&lt;br /&gt;&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;2 – Crie outro &lt;b&gt;bean &lt;/b&gt;para este cadastro e crie métodos  para validar se é menor de idade, redirecionando para páginas diferentes  caso maior ou menor de idade, exibindo páginas de “erro” caso algo  esteja errado, mais especificamente, crie uma página (jsp) genérica de  erro que exiba uma mensagem do bean (o outputText pega uma variável do  bean), se não foi digitado o endereço, coloque a mensagem na variável do  bean “&lt;i&gt;favor preencher o endereço”&lt;/i&gt;, se não preencheu a idade, coloque a mensagem “&lt;i&gt;Favor preencher a idade&lt;/i&gt;“,  etç. e retorna para a página de erro, esta página de erro vai exibir um  outputText que copia a informação contida na variável do bean, a  mensagem que você personalizou no método.&lt;br /&gt;&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;3 – Não se esqueça de configurar o faces-config, definindo as regras de navegação e o managed-bean.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;Agora que você chegou até aqui e seu projeto está funcionando perfeitamente, você pode gritar ai “&lt;span style="color: #3366ff;"&gt;&lt;b&gt;EU SEI FAZER UM SITE UTILIZANDO O FRAMEWORK JSF!!!!!!!!!!!!!!!!&lt;/b&gt;&lt;/span&gt;“.&lt;br /&gt;&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;E parabéns, agora você realmente conhece as principais funcionalidades  do JSF, agora não pare por aqui, brinque, altere, crie, e desenvolva  mais e mais páginas utilizando estas dicas.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;Se quiser baixar este projeto (&lt;b&gt;ProjetoX&lt;/b&gt;) finalizado e funcionando clique nestes links: &lt;a href="http://codeerror.background.googlepages.com/ProjetoX.rar" target="_blank"&gt;RAR&lt;/a&gt;, &lt;a href="http://codeerror.background.googlepages.com/ProjetoX.zip" target="_blank"&gt;ZIP &lt;/a&gt;ou &lt;a href="http://codeerror.background.googlepages.com/ProjetoX.jar" target="_blank"&gt;JAR&lt;/a&gt;.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;Para baixar um projeto &lt;b&gt;JSF em branco&lt;/b&gt;, com toda a estrutura de pastas, arquivos de configuração criados e as bibliotecas necessárias, clique nos links: &lt;a href="http://codeerror.background.googlepages.com/Projeto_JSF_EmBranco.rar" target="_blank"&gt;RAR &lt;/a&gt;ou &lt;a href="http://codeerror.background.googlepages.com/Projeto_JSF_EmBranco.zip" target="_blank"&gt;ZIP&lt;/a&gt;.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;Agora é por sua conta!&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;Obrigado por ter lido este tutorial, em caso de dúvidas em qualquer um dos passos, por favor comente!&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;&lt;b&gt;Autor: &lt;/b&gt;&lt;br /&gt;&lt;span style="color: #888888;"&gt;&lt;b&gt;Reinaldo Elias&lt;/b&gt;&lt;br /&gt;Consultor Java – JavaMan&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: small;"&gt;&lt;span style="color: #888888;"&gt;http://codeerror.wordpress.com&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;&lt;span style="color: #888888;"&gt;http://javaerro.blogspot.com&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6756811341323141038-3623198055599414783?l=javaerro.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javaerro.blogspot.com/feeds/3623198055599414783/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://javaerro.blogspot.com/2011/02/passo-anterior-passo-5.html#comment-form' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6756811341323141038/posts/default/3623198055599414783'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6756811341323141038/posts/default/3623198055599414783'/><link rel='alternate' type='text/html' href='http://javaerro.blogspot.com/2011/02/passo-anterior-passo-5.html' title='JSF – Inicio Rápido – Final'/><author><name>Reinaldo Elias</name><uri>http://www.blogger.com/profile/17009512606320480417</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><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6756811341323141038.post-3920384676771162408</id><published>2011-02-19T18:54:00.000-02:00</published><updated>2012-01-10T22:32:33.864-02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Web'/><category scheme='http://www.blogger.com/atom/ns#' term='JSF'/><category scheme='http://www.blogger.com/atom/ns#' term='Códigos'/><category scheme='http://www.blogger.com/atom/ns#' term='Dicas'/><title type='text'>JSF, Inicio Rápido – Parte 5</title><content type='html'>&lt;span style="font-size: small;"&gt;&lt;a href="http://javaerro.blogspot.com/2011/02/passo-anterior-parte-3.html" target="_self"&gt;PASSO ANTERIOR (PASSO 4).&lt;/a&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;Se você chegou até aqui, parabéns! Já leu muita coisa e já escreveu  (ou copiou…) muitas linhas de código, mas o importante não é escrever  com os próprios dedos, mas sim saber o que aquele trecho de código  sgnifica, o que ele faz, como ele se comporta, etç.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;Apenas recapitulando um pouco:&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;Criamos um Bean (&lt;b&gt;testeBean.java&lt;/b&gt;) que tem um método&lt;b&gt; testar()&lt;/b&gt;, este método faz uma verificação e retorna “&lt;span style="color: red;"&gt;&lt;b&gt;falhou&lt;/b&gt;&lt;/span&gt;” caso não tenha sido digitado nada na tela, ou retorna “&lt;span style="color: red;"&gt;&lt;b&gt;sucesso&lt;/b&gt;&lt;/span&gt;” caso os dois campos tenham sido populados pelo usuário.&lt;br /&gt;&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;Criamos também&amp;nbsp; uma página de menu (&lt;b&gt;menu.jsp&lt;/b&gt;) que tem um botão que direciona para “&lt;span style="color: red;"&gt;&lt;b&gt;cadastro&lt;/b&gt;&lt;/span&gt;“.&lt;br /&gt;&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;Criamos uma página de cadastro (&lt;b&gt;inicio.jsp&lt;/b&gt;), esta página tem alguns campos que fazem referência à&amp;nbsp; “&lt;span style="color: red;"&gt;&lt;b&gt;teste&lt;/b&gt;&lt;/span&gt;“.&lt;br /&gt;&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;Criamos uma página &lt;b&gt;sucesso.jsp&lt;/b&gt; que tem um botão enviando para “&lt;span style="color: red;"&gt;&lt;b&gt;inicio&lt;/b&gt;&lt;/span&gt;” e uma página &lt;b&gt;falha.jsp&lt;/b&gt; com um botão direcionando para “&lt;span style="color: red;"&gt;&lt;b&gt;cadastro&lt;/b&gt;&lt;/span&gt;“.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;Ao longo deste projeto, criamos diversas páginas, todas apontando para algum “&lt;i&gt;&lt;b&gt;apelido&lt;/b&gt;&lt;/i&gt;“, para algum lugar imaginário que não existe. Todos estes apelidos são configurados no arquivo de configuração &lt;span style="color: blue;"&gt;&lt;b&gt;FACES-CONFIG.XML&lt;/b&gt;&lt;/span&gt;, é sobre este arquivo que iremos falar agora!&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;Faces-config, o coração do projeto JSF, o arquivo que faz todas as  páginas se conectarem, se conhecerem, pode ser considerado também o  “orkut” de uma aplicação JSF…&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;Este faces-config é um “arquivinho” xml qualquer, com algumas tags  especiais que fazem o servidor encontrar todos os apelidos que  distribuimos em nossas páginas.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;Já criamos o arquivo nos passos anteriores, vamos então enfiar códigos nele!&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;Abra o arquivo&lt;span style="text-decoration: underline;"&gt;&lt;span style="color: blue;"&gt;&lt;b&gt; faces-config.xml&lt;/b&gt;&lt;/span&gt;&lt;/span&gt; e insira as seguintes linhas de código:&lt;/span&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;span style="font-size: small;"&gt;&lt;i&gt; &lt;span style="color: silver;"&gt;&amp;lt;?xml version=”1.0″?&amp;gt;&lt;br /&gt;&amp;lt;!DOCTYPE faces-config PUBLIC&lt;br /&gt;“-//Sun Microsystems, Inc.//DTD JavaServer Faces Config 1.1//EN”&lt;br /&gt;“http://java.sun.com/dtd/web-facesconfig_1_1.dtd”&amp;gt;&lt;/span&gt;&lt;/i&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;&lt;span style="color: #339966;"&gt;&lt;i&gt;&amp;lt;faces-config&amp;gt;&lt;/i&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;&lt;i&gt;&amp;lt;!– ################### NAVIGATION ###################–&amp;gt;&lt;/i&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;&lt;span style="color: red;"&gt;&lt;i&gt;&amp;lt;navigation-rule&amp;gt;&lt;/i&gt;&lt;/span&gt;&lt;i&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;&amp;lt;from-view-id&amp;gt;*&amp;lt;/from-view-id&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #ff9900;"&gt;&amp;lt;navigation-case&amp;gt;&lt;br /&gt;&amp;lt;from-outcome&amp;gt;cadastro&amp;lt;/from-outcome&amp;gt;&lt;br /&gt;&amp;lt;to-view-id&amp;gt;/pages/inicio.jsf&amp;lt;/to-view-id&amp;gt;&lt;br /&gt;&amp;lt;/navigation-case&amp;gt;&lt;/span&gt;&lt;br /&gt;&amp;lt;navigation-case&amp;gt;&lt;br /&gt;&amp;lt;from-outcome&amp;gt;&lt;span style="color: magenta;"&gt;&lt;b&gt;falhou&lt;/b&gt;&lt;/span&gt;&amp;lt;/from-outcome&amp;gt;&lt;br /&gt;&amp;lt;to-view-id&amp;gt;/pages/falha.jsf&amp;lt;/to-view-id&amp;gt;&lt;br /&gt;&amp;lt;/navigation-case&amp;gt;&lt;br /&gt;&amp;lt;navigation-case&amp;gt;&lt;br /&gt;&amp;lt;from-outcome&amp;gt;&lt;span style="color: magenta;"&gt;&lt;b&gt;sucesso&lt;/b&gt;&lt;/span&gt;&amp;lt;/from-outcome&amp;gt;&lt;br /&gt;&amp;lt;to-view-id&amp;gt;/pages/sucesso.jsf&amp;lt;/to-view-id&amp;gt;&lt;br /&gt;&amp;lt;/navigation-case&amp;gt;&lt;br /&gt;&amp;lt;navigation-case&amp;gt;&lt;br /&gt;&amp;lt;from-outcome&amp;gt;&lt;span style="color: magenta;"&gt;&lt;b&gt;inicio&lt;/b&gt;&lt;/span&gt;&amp;lt;/from-outcome&amp;gt;&lt;br /&gt;&amp;lt;to-view-id&amp;gt;/pages/menu.jsf&amp;lt;/to-view-id&amp;gt;&lt;br /&gt;&amp;lt;/navigation-case&amp;gt;&lt;br /&gt;&lt;span style="color: red;"&gt;&amp;lt;/navigation-rule&amp;gt;&lt;/span&gt;&lt;/i&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;&lt;i&gt;&amp;lt;!– ################### MANAGED-BEAN ###################–&amp;gt;&lt;br /&gt;&lt;span style="color: red;"&gt;&amp;lt;managed-bean&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;&amp;lt;managed-bean-name&amp;gt;&lt;b&gt;teste&lt;/b&gt;&amp;lt;/managed-bean-name&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #339966;"&gt;&amp;lt;managed-bean-class&amp;gt;br.com.projetox.view.bean.testeBean&amp;lt;/managed-bean-class&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #ff6600;"&gt;&amp;lt;managed-bean-scope&amp;gt;session&amp;lt;/managed-bean-scope&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: red;"&gt;&amp;lt;/managed-bean&amp;gt;&lt;/span&gt;&lt;/i&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;&lt;span style="color: #339966;"&gt;&lt;i&gt;&amp;lt;/faces-config&amp;gt;&lt;/i&gt;&lt;/span&gt;&lt;/span&gt;&lt;/blockquote&gt;&lt;span style="font-size: small;"&gt;Agora o que interessa, a explicação!&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;As primeiras linhas:&lt;br /&gt;&lt;i&gt;&lt;span style="color: #999999;"&gt;&lt;i&gt;&amp;lt;?xml version=”1.0″?&amp;gt;&lt;br /&gt;&amp;lt;!DOCTYPE faces-config PUBLIC&lt;br /&gt;“-//Sun Microsystems, Inc.//DTD JavaServer Faces Config 1.1//EN”&lt;br /&gt;“http://java.sun.com/dtd/web-facesconfig_1_1.dtd”&amp;gt;&lt;/i&gt;&lt;/span&gt; &lt;/i&gt;&lt;/span&gt; &lt;span style="font-size: small;"&gt;indicam que tipo de arquivo é este, são &lt;span style="text-decoration: underline;"&gt;tags padrões&lt;/span&gt;  que devem estar no cabeçalho de cada arquivo XML, dependendo da  funcionalidade do arquivo as propriedades destas tags mudam um pouco,  estas indicam que o arquivo é um “faces-config”&lt;i&gt;.&lt;/i&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;As tags&lt;i&gt; &lt;/i&gt;&lt;span style="color: #339966;"&gt;&lt;b&gt;&amp;lt;faces-config&amp;gt;&amp;lt;/faces-config&amp;gt;&lt;/b&gt;&lt;/span&gt; presentes no inicio e no fim do arquivo indicam o começo e o fim dos comandos de configuração&lt;i&gt;.&lt;/i&gt;&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;Assim como em &lt;span style="color: #999999;"&gt;JavaScript &lt;/span&gt;todos os comandos devem ser scritos dentro das tags&lt;span style="color: #999999;"&gt; &amp;lt;script&amp;gt;&lt;/span&gt; e &lt;span style="color: #999999;"&gt;&amp;lt;/scritp&amp;gt;&lt;/span&gt;, todos os comandos de configuração do faces-config devem ser escritos entre as tags &lt;span style="color: #339966;"&gt;&lt;b&gt;&amp;lt;faces-config&amp;gt;&amp;lt;/faces-config&amp;gt;&lt;/b&gt;&lt;/span&gt;, se você escrever alguma coisa fora não vai conseguir nem acessar a aplicação.&lt;i&gt;..&lt;/i&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;&lt;i&gt;&lt;br /&gt;&lt;/i&gt;&lt;b&gt;&lt;span style="color: red;"&gt;&amp;lt;navigation-rule&amp;gt;&lt;/span&gt;&lt;/b&gt; e&lt;b&gt;&lt;span style="color: red;"&gt;&amp;lt;/navigation-rule&amp;gt;&lt;/span&gt;&lt;/b&gt;&lt;i&gt;&lt;br /&gt;&lt;/i&gt;&lt;b&gt;&lt;span style="text-decoration: underline;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;&lt;b&gt;&lt;span style="text-decoration: underline;"&gt;Regras de navegação.&lt;/span&gt;&lt;/b&gt;&lt;i&gt;&lt;br /&gt;&lt;/i&gt;Dentro destas tags indicaremos todas as nossas regras de navegação,  mas o que seria uma regra de navegação? Seria basicamente informar:  “saindo do jsp X, vai para o jsp Y”. Vamos ver com mais detalhes nas  tags que estão dentro das navigation-rules&lt;i&gt;.&lt;/i&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;&lt;span style="color: blue;"&gt;&amp;lt;from-view-id&amp;gt;*&amp;lt;/from-view-id&amp;gt;&lt;/span&gt;&lt;i&gt;&lt;span style="color: blue;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/i&gt;&lt;span style="color: blue;"&gt;&lt;span style="color: #333333;"&gt;Aqui estamos informando “saindo da jsp X…”&lt;/span&gt;&lt;span style="color: #333333;"&gt;,  neste caso não temos uma regra específica, apenas informamos *, ou  seja, qualquer página. Isso significa que não importa de onde venha a  solicitação sempre terá o o destino, então a nossa “frase”&lt;/span&gt;&lt;span style="color: #333333;"&gt; ficaria mais ou menos assim: “Saindo de qualquer lugar, vai para o jsp Y” &lt;/span&gt;&lt;/span&gt;&lt;i&gt;&lt;span style="color: blue;"&gt;&lt;span style="color: #333333;"&gt;…&lt;/span&gt;&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&lt;span style="color: #ff9900;"&gt;&amp;lt;navigation-case&amp;gt;&lt;br /&gt;&amp;lt;from-outcome&amp;gt;cadastro&amp;lt;/from-outcome&amp;gt;&lt;br /&gt;&amp;lt;to-view-id&amp;gt;/pages/inicio.jsf&amp;lt;/to-view-id&amp;gt;&lt;br /&gt;&amp;lt;/navigation-case&amp;gt;&lt;/span&gt;&lt;/i&gt;&lt;/span&gt; &lt;br /&gt;&lt;span style="font-size: small;"&gt;Estas tags indicam o destino, o “vai para o jsp Y” e aqui definimos os apelidos dos destinos.&lt;br /&gt;Todos os mapeamentos de destinos devem estar entre as tags &lt;b&gt;&amp;lt;navigation-case&amp;gt;&lt;/b&gt; e &lt;b&gt;&amp;lt;/navigation-case&amp;gt;&lt;/b&gt;.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;A tag &lt;span style="color: #ff9900;"&gt;&amp;lt;from-outcome&amp;gt;&lt;/span&gt;&lt;span style="color: #ff6600;"&gt;&lt;b&gt;cadastro&lt;/b&gt;&lt;/span&gt;&lt;span style="color: #ff9900;"&gt;&amp;lt;/from-outcome&amp;gt;&lt;/span&gt; é muito importante, aqui que configuramos um de nossos “apelidos”, neste caso o apelido “&lt;b&gt;cadastro&lt;/b&gt;” que informamos na página &lt;i&gt;&lt;b&gt;menu.jsp&lt;/b&gt;&lt;/i&gt;,  e também na página falha.jsp. Ou seja, a página menu.jsp, por exemplo,  tem um link que direciona para o apelido “cadastro”, quando este link  for acionado o servidor vai procurar o arquivo faces-config.xml, e  perguntar para ele quem é “cadastro”, o faces-config por sua vez vai  informar para o servidor que “cadastro” é…&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;&amp;lt;to-view-id&amp;gt;/pages/inicio.jsf&amp;lt;/to-view-id&amp;gt; esta linha que  indica que página o apelido cadastro deve chamar, neste caso estamos  chamando /pages/inicio.jsf, note que estou chamando uma página com a  extensão JSF e não com a extensão JSP, conforme explicação no passo  anterior.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;Então, de acordo com esta regra de navegação, sempre que de qualquer  lugar do projeto alguem clicar em algum link “cadastro” a página  inicio.jsp será acionada.&lt;/span&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;span style="font-size: small;"&gt;&lt;span style="color: silver;"&gt;&lt;i&gt;&lt;span style="text-decoration: underline;"&gt;&lt;b&gt;Nota adicional&lt;/b&gt;&lt;/span&gt;: Se quisermos deixar a arquitetura um pouco mais fechada, por exemplo, não queremos que “&lt;b&gt;cadastro&lt;/b&gt;” seja chamado de qualquer lugar do projeto, mas somente da página principal, então na tag &lt;b&gt;&amp;lt;from-view-id&amp;gt;&lt;/b&gt; devemos informar o nome da página principal.&lt;/i&gt;&lt;/span&gt;&lt;/span&gt;&lt;/blockquote&gt;&lt;span style="font-size: small;"&gt;As demais informações dentro das tags&lt;b&gt; &amp;lt;navigation-rule&amp;gt;&lt;/b&gt; seguem o mesmo padrão do caso “&lt;i&gt;&lt;b&gt;cadastro&lt;/b&gt;&lt;/i&gt;“, nelas estamos configurando os outros apelidos como &lt;span style="color: magenta;"&gt;&lt;b&gt;falhou &lt;/b&gt;&lt;/span&gt;e &lt;span style="color: magenta;"&gt;&lt;b&gt;sucesso&lt;/b&gt;&lt;/span&gt;, que estão sendo utilizados no método&lt;b&gt; testar()&lt;/b&gt; do nosso bean, e o apelido &lt;span style="color: magenta;"&gt;&lt;b&gt;inicio &lt;/b&gt;&lt;/span&gt;que está sendo utilizado na página &lt;b&gt;sucesso.jsp&lt;/b&gt;. Todos estes apelidos direcionam para alguma página dentro do nosso projeto.&lt;span style="color: #333333;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;&lt;span style="color: #333333;"&gt;Agora já configuramos quase todos os apelidos, falta o “teste” que está sendo utilizado na página inicio.jsp.&lt;br /&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;&lt;span style="color: #333333;"&gt;Neste caso é um pouco diferente, não estamos direcionando para alguma  página, mas sim utilizando variáveis e métodos de uma classe, uma classe  bean, então não podemos configurar uma regra de navegação pois esta não  é uma regra, neste caso possuimos um BEAN, então é isto que devemos  configurar.&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;&lt;span style="color: red;"&gt;&lt;b&gt;&amp;lt;managed-bean&lt;/b&gt;&lt;/span&gt;&lt;span style="color: red;"&gt;&lt;b&gt;&amp;gt;&lt;/b&gt;&lt;/span&gt; e &lt;b&gt;&lt;span style="color: red;"&gt;&amp;lt;/managed-bean&amp;gt;&lt;/span&gt;&lt;/b&gt;,  estas tags informam o inicio e o fim da configuração de beans do  projeto, todos os beans que vamos utilizar devem ser configurados dentro  destas tags&lt;i&gt;.&lt;/i&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;&lt;b&gt;&lt;span style="color: blue;"&gt;&amp;lt;managed-bean-name&amp;gt;teste&amp;lt;/managed-bean-name&amp;gt;&lt;/span&gt;&lt;/b&gt;, é nesta linha que definimos o &lt;b&gt;apelido &lt;/b&gt;do  nosso bean, como ele deverá ser referenciado dentro de nossas páginas,  neste casos estamos dizendo que o apelido do nossa classe &lt;b&gt;testeBean.java&lt;/b&gt; será simplesmente &lt;span style="color: blue;"&gt;&lt;b&gt;teste&lt;/b&gt;&lt;/span&gt;&lt;i&gt;.&lt;/i&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;&lt;i&gt;&lt;span style="color: #339966;"&gt;&lt;b&gt;&amp;lt;managed-bean-class&amp;gt;br.com.projetox.view.bean.testeBean&amp;lt;/managed-bean-class&amp;gt;&lt;/b&gt;&lt;/span&gt;, &lt;/i&gt;nesta  linha informamos o caminho completo e o nome da classe, para que o  servidor consiga achar nosso bean quando este for solicitado por alguma  página, neste caso a classe é&lt;i&gt; &lt;/i&gt;&lt;b&gt;testeBean&lt;/b&gt;&lt;i&gt;&lt;b&gt; &lt;/b&gt;(&lt;/i&gt;note que não é necessário informar a extensão da classe), e esta classe está dentro das pastas (pacote) &lt;b&gt;br.com.projetox.view&lt;/b&gt;&lt;i&gt;.&lt;/i&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;&lt;span style="color: #ff6600;"&gt;&lt;b&gt;&amp;lt;managed-bean-scope&amp;gt;session&amp;lt;/managed-bean-scope&amp;gt;&lt;/b&gt;&lt;/span&gt; esta linha indica como o servidor vai fazer a comunicação entre a página e o bean, se é por&lt;i&gt; &lt;/i&gt;&lt;b&gt;aplicação &lt;/b&gt;&lt;i&gt;(&lt;/i&gt;&lt;code class="cCode"&gt;application&lt;/code&gt;&lt;i&gt;), &lt;/i&gt;se é por &lt;b&gt;sessão &lt;/b&gt;&lt;code class="cCode"&gt;(session&lt;/code&gt;&lt;i&gt;) &lt;/i&gt;ou se é por &lt;b&gt;solicitação&lt;/b&gt;&lt;i&gt;&lt;b&gt; &lt;/b&gt;&lt;/i&gt;&lt;code class="cCode"&gt;(request&lt;/code&gt;&lt;i&gt;). &lt;/i&gt;No nosso caso definimos que a comunicação entre as páginas e o bean será por sessão&lt;i&gt;.&lt;/i&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;Pronto! Configuramos nossos apelidos e nosso bean! Falta agora configurar nosso projeto!&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;Somente com o que temos até agora a aplicação não irá funcionar, por  que o servidor ainda não sabe que nosso projeto está utilizando o  framework JSF.&lt;br /&gt;&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;Mas como informar para o servidor que nosso projeto é um projeto JSF?&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;Atraves do arquivo web.xml!&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;Neste caso não existe muito o que falar, por enquanto. O arquivo  web.xml é um arquivo padrão de configuração das aplicações web, tanto  faz se é um projeto JSF, ou Struts, ou Raptor ou se não utiliza nenhum  framework, o web.xml deve estar lá, devidamente configurado para que o  servidor entenda que nosso projeto é assim ou assado.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;Então abra o arquivo web.xml e insira as seguintes linhas de código:&lt;/span&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;span style="font-size: small;"&gt;&lt;span style="color: grey;"&gt;&lt;i&gt;&amp;lt;?xml version=”1.0″?&amp;gt;&lt;br /&gt;&amp;lt;!DOCTYPE web-app PUBLIC&lt;br /&gt;“-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN”&lt;br /&gt;“http://java.sun.com/dtd/web-app_2_3.dtd”&amp;gt;&lt;br /&gt;&amp;lt;web-app&amp;gt;&lt;/i&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;&lt;i&gt;&amp;lt;context-param&amp;gt;&lt;br /&gt;&amp;lt;param-name&amp;gt;javax.faces.STATE_SAVING_METHOD&amp;lt;/param-name&amp;gt;&lt;br /&gt;&amp;lt;param-value&amp;gt;server&amp;lt;/param-value&amp;gt;&lt;br /&gt;&amp;lt;/context-param&amp;gt;&lt;/i&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;&lt;i&gt;&amp;lt;context-param&amp;gt;&lt;br /&gt;&amp;lt;param-name&amp;gt;javax.faces.CONFIG_FILES&amp;lt;/param-name&amp;gt;&lt;br /&gt;&amp;lt;param-value&amp;gt;/WEB-INF/faces-config.xml&amp;lt;/param-value&amp;gt;&lt;br /&gt;&amp;lt;/context-param&amp;gt;&lt;/i&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;&lt;i&gt;&amp;lt;listener&amp;gt;&lt;br /&gt;&amp;lt;listener-class&amp;gt;com.sun.faces.config.ConfigureListener&amp;lt;/listener-class&amp;gt;&lt;br /&gt;&amp;lt;/listener&amp;gt;&lt;/i&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;&lt;i&gt;&amp;lt;!– Faces Servlet –&amp;gt;&lt;br /&gt;&amp;lt;servlet&amp;gt;&lt;br /&gt;&amp;lt;servlet-name&amp;gt;Faces Servlet&amp;lt;/servlet-name&amp;gt;&lt;br /&gt;&amp;lt;servlet-class&amp;gt;javax.faces.webapp.FacesServlet&amp;lt;/servlet-class&amp;gt;&lt;br /&gt;&amp;lt;load-on-startup&amp;gt; 1 &amp;lt;/load-on-startup&amp;gt;&lt;br /&gt;&amp;lt;/servlet&amp;gt;&lt;/i&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;&lt;i&gt;&amp;lt;!– Faces Servlet Mapping –&amp;gt;&lt;br /&gt;&amp;lt;servlet-mapping&amp;gt;&lt;br /&gt;&amp;lt;servlet-name&amp;gt;Faces Servlet&amp;lt;/servlet-name&amp;gt;&lt;br /&gt;&amp;lt;url-pattern&amp;gt;*.jsf&amp;lt;/url-pattern&amp;gt;&lt;br /&gt;&amp;lt;/servlet-mapping&amp;gt;&lt;/i&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;&lt;i&gt;&amp;lt;/web-app&amp;gt;&lt;/i&gt;&lt;/span&gt;&lt;/blockquote&gt;&lt;span style="font-size: small;"&gt;Estas são tags padrões que devem ser inseridas no arquivo web.xml para que o servidor interprete corretamente nosso projeto JSF.&lt;br /&gt;&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt; Em outro post irem mostrar algumas configurações mais avançadas deste arquivo e do faces-config.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;Agora nosso projeto está concluído! Todas as páginas estão criadas e  todos os arquivos devidamente configurados e se comunicando!&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;Vamos para a parte final deste tutorial…&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;&lt;a href="http://javaerro.blogspot.com/2011/02/passo-anterior-passo-5.html" target="_self"&gt;PRÓXIMO PASSO (FINAL).&lt;/a&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6756811341323141038-3920384676771162408?l=javaerro.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javaerro.blogspot.com/feeds/3920384676771162408/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://javaerro.blogspot.com/2011/02/passo-anterior-passo-4.html#comment-form' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6756811341323141038/posts/default/3920384676771162408'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6756811341323141038/posts/default/3920384676771162408'/><link rel='alternate' type='text/html' href='http://javaerro.blogspot.com/2011/02/passo-anterior-passo-4.html' title='JSF, Inicio Rápido – Parte 5'/><author><name>Reinaldo Elias</name><uri>http://www.blogger.com/profile/17009512606320480417</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><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6756811341323141038.post-482331236514351338</id><published>2011-02-19T18:50:00.000-02:00</published><updated>2012-01-10T22:31:55.929-02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Web'/><category scheme='http://www.blogger.com/atom/ns#' term='JSF'/><category scheme='http://www.blogger.com/atom/ns#' term='Códigos'/><category scheme='http://www.blogger.com/atom/ns#' term='Dicas'/><title type='text'>JSF, Inicio Rápido – Parte 4</title><content type='html'>&lt;span style="font-size: small;"&gt;&lt;a href="http://javaerro.blogspot.com/2011/02/passo-anterior-parte-2.html" target="_self"&gt;PASSO ANTERIOR (PARTE 3).&lt;/a&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;Já estamos bem avançados em nosso projeto, já temos uma boa base,  vamos agora criar as páginas necessárias para a navegação, aliás, vamos  inserir códigos por que as páginas ja foram criadas no passo 2.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;Puxando pela memória, na introdução foi informado que se chamarmos  uma página pela extensão JSP, as tags não funcionariam, devemos invocar  as páginas sempre utilizando a extensão JSF, neste post abordaremos um  pouco deste assunto.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;Antes de mais nada, nosso projeto precisa de uma pagina principal, então no arquivo &lt;span style="text-decoration: underline;"&gt;&lt;b&gt;index.jsp&lt;/b&gt;&lt;/span&gt; insira as seguintes linhas de código:&lt;/span&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;span style="font-size: small;"&gt;&lt;i&gt;&amp;lt;html&amp;gt;&lt;br /&gt;&amp;lt;body&amp;gt;&lt;br /&gt;&amp;lt;jsp:forward page=”/pages/menu.jsf” /&amp;gt;&lt;br /&gt;&amp;lt;/body&amp;gt;&lt;br /&gt;&amp;lt;/html&amp;gt;&lt;/i&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;&lt;i&gt;&lt;br /&gt;&lt;/i&gt;&lt;/span&gt;&lt;/blockquote&gt;&lt;span style="font-size: small;"&gt;Mas por que logo na página inicial estamos redirecionando para outro lugar?&lt;br /&gt;Simples, se colocarmos as tags do JSF diretamente na página index.jsp  elas não funcionariam, por que o servidor está invocando &lt;b&gt;index.jsp&lt;/b&gt; e não &lt;b&gt; index.jsf&lt;/b&gt;.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;Existem outras formas até mais elegantes para contornar este problema, por exemplo configurando o &lt;i&gt;web.xml&lt;/i&gt;  para chamar index.jsf e não index.jsp, mas por enquanto este  redirecionamento resolve nosso problema, e serve também como um ótimo  exemplo para sempre lembrarmos que devemos invocar as páginas utilizando  a extensão &lt;b&gt;JSF&lt;/b&gt; para que elas funcionem…&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;Ok, ok, redirecionamos a página principal para “menu.jsf”, mas não tem nada nesta página!&lt;br /&gt;Vamos inserir códigos nela então!&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;Abra o arquivo &lt;span style="text-decoration: underline;"&gt;&lt;b&gt;menu.jsp&lt;/b&gt;&lt;/span&gt;  (lembre-se que JSF é uma extensão “imaginária”, as páginas reais  possuem a extensão JSP), e insira as seguintes linhas de código:&lt;/span&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;span style="font-size: small;"&gt;&lt;i&gt;&amp;lt;%@ taglib uri=”http://java.sun.com/jsf/html” prefix=”h” %&amp;gt;&lt;br /&gt;&amp;lt;%@ taglib uri=”http://java.sun.com/jsf/core” prefix=”f” %&amp;gt;&lt;br /&gt;&amp;lt;f:loadBundle basename=”br.com.projetox.view.bundle.messages” var=”msg”/&amp;gt;&lt;br /&gt;&amp;lt;html&amp;gt;&lt;br /&gt;&amp;lt;head&amp;gt;&amp;lt;/head&amp;gt;&lt;br /&gt;&amp;lt;body&amp;gt;&lt;br /&gt;&amp;lt;f:view&amp;gt;&lt;br /&gt;&amp;lt;h1&amp;gt;&lt;br /&gt;&amp;lt;h:outputText value=”#{msg.pagina_principal_label_titulo}”/&amp;gt;&lt;br /&gt;&amp;lt;/h1&amp;gt;&lt;br /&gt;&amp;lt;h3&amp;gt;&lt;br /&gt;&amp;lt;h:outputText value=”#{msg.pagina_principal_label_site}”/&amp;gt;&lt;br /&gt;&amp;lt;/h3&amp;gt;&lt;br /&gt;&amp;lt;h:form id=”helloForm”&amp;gt;&lt;br /&gt;&amp;lt;h:commandButton action=”cadastro” value=”#{msg.pagina_principal_label_link}” /&amp;gt;&lt;br /&gt;&amp;lt;/h:form&amp;gt;&lt;br /&gt;&amp;lt;/f:view&amp;gt;&lt;br /&gt;&amp;lt;/body&amp;gt;&lt;br /&gt;&amp;lt;/html&amp;gt;&lt;/i&gt;&lt;/span&gt;&lt;/blockquote&gt;&lt;span style="font-size: small;"&gt;Agora vamos às explicações!&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;As duas primeiras linhas, &lt;span style="text-decoration: underline;"&gt;&lt;b&gt;taglib&lt;/b&gt;&lt;/span&gt;, informam que utilizaremos nesta página algumas tags &lt;b&gt;JSTL &lt;/b&gt;específicas do framework JSF.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;JSTL são bibliotecas, conjuntos de códigos personalizados, para serem  utilizados dentro das páginas JSPs, existem várias JSTLs, e é possível  até criar a sua propria linguagem, porém o assunto aqui não é este então  não falaremos muito disso, mas já estou preparando um post sobre isso.  Vale saber que alguns dos arquivos JAR que fizemos download na  introdução são responsáveis por estas JSTLs que utilizaremos agora.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;Na taglib informamos a propriedade &lt;span style="text-decoration: underline;"&gt;&lt;b&gt;prefix&lt;/b&gt;&lt;/span&gt;, que é um apelido para utilizarmos esta JSTL dentro da página.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;A terceira linha utilizamos&lt;span style="text-decoration: underline;"&gt;&lt;b&gt; f:loadBundle&lt;/b&gt;&lt;/span&gt;, aqui já estamos utilizando uma JTSL! Enfim, este comando serve para carregar o arquivo &lt;i&gt;messages.properties&lt;/i&gt; e é claro que você já está craque em properties né?&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;Note que informamos nesta linha o &lt;b&gt;caminho inteiro&lt;/b&gt; (pacote) do arquivo properties, mas não é necessário informar a extensão, a propriedade &lt;span style="text-decoration: underline;"&gt;&lt;b&gt;var=”msg”&lt;/b&gt;&lt;/span&gt; funciona igual o prefix da taglib, é um apelido para utilizarmos na página.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;Na tag &lt;span style="text-decoration: underline;"&gt;&lt;b&gt;h:outputText&lt;/b&gt;&lt;/span&gt;  utilizamos a segunda taglib importada, esta é utilizada mais para  campos de formulário e similares, como por exemplo neste caso estamos  criando um &lt;b&gt;outputText&lt;/b&gt;, que é como um “label” do VB ou de aplicações Java Desktop, simplesmente inserção de texto!&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;E nesta linha já invocamos uma variável do arquivo properties “&lt;b&gt;msg.pagina_principal_label_site&lt;/b&gt;“,  o msg. é apelido do properties que definimos na terceira linha, o resto  é o nome da variável que está declarada no properties, fazendo isso, a  página vai procurar no arquivo properties a variável &lt;i&gt;pagina_principal_label_site&lt;/i&gt;, e vai escrever ná página o valor desta variável.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;Na tag &lt;span style="text-decoration: underline;"&gt;&lt;b&gt;h:form&lt;/b&gt;&lt;/span&gt;,  estamos criando um formulário, assim como no HTML, precisamos iniciar  um formulário quando quisermos criar campos e botões válidos.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;&lt;span style="text-decoration: underline;"&gt;&lt;b&gt;h:commandButton&lt;/b&gt;&lt;/span&gt;, aqui que está o pulo do gato! Este comando é similar ao botão &lt;b&gt;SUBMIT &lt;/b&gt;do HTML, e funciona da mesma maneira, ele pega todos os campos do formulário e envia para algum lugar.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;Vamos ver com um pouco de calma cada propriedade deste comando.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;&lt;b&gt;action=”cadastro”&lt;/b&gt;, mas o que é isso? “&lt;b&gt;cadastro&lt;/b&gt;“, essa porcaria não é sequer uma página!&lt;br /&gt;Realmente isto não é uma página, não é nada, “cadastro” não existe!&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;Essa string é outro apelido, que definiremos no arquivo de configuração,  quando informamos para a página, “ao clicar neste botão vai para &lt;b&gt;&lt;i&gt;cadastro&lt;/i&gt;&lt;/b&gt;” ela procura esse tal de cadastro no arquivo faces-config.xml, e este se encarrega de informar qual página deve ser invocada.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;A propriedade value é a mesma dos botões SUBMIT do HTML, aqui será  inserida a informação que ficará escrita no botão, neste caso estamos  procurando alguma informação no arquivo properties.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;Com isso encerramos as explicações desta página!&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;Agora abra o arquivo &lt;span style="text-decoration: underline;"&gt;&lt;b&gt;inicio.jsp&lt;/b&gt;&lt;/span&gt; e insira as seguintes linhas de código:&lt;/span&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;span style="font-size: small;"&gt;&lt;i&gt;&amp;lt;%@ taglib uri=”http://java.sun.com/jsf/html” prefix=”h” %&amp;gt;&lt;br /&gt;&amp;lt;%@ taglib uri=”http://java.sun.com/jsf/core” prefix=”f” %&amp;gt;&lt;br /&gt;&amp;lt;f:loadBundle basename=”br.com.projetox.view.bundle.messages” var=”msg”/&amp;gt;&lt;br /&gt;&amp;lt;html&amp;gt;&lt;br /&gt;&amp;lt;head&amp;gt;&amp;lt;/head&amp;gt;&lt;br /&gt;&amp;lt;body&amp;gt;&lt;/i&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;&lt;i&gt;&amp;lt;f:view&amp;gt;&lt;br /&gt;&amp;lt;h1&amp;gt;&lt;br /&gt;&amp;lt;h:outputText value=”#{msg.pagina_cadastro_label_titulo}”/&amp;gt;&lt;br /&gt;&amp;lt;/h1&amp;gt;&lt;br /&gt;&amp;lt;h3&amp;gt;&lt;br /&gt;&amp;lt;h:outputText value=”#{msg.pagina_cadastro_label_site}”/&amp;gt;&lt;br /&gt;&amp;lt;/h3&amp;gt;&lt;br /&gt;&amp;lt;h:form id=”helloForm”&amp;gt;&lt;br /&gt;&amp;lt;h:outputText value=”#{msg.pagina_cadastro_label_nome}”/&amp;gt;&lt;br /&gt;&amp;lt;h:inputText value=”#{teste.nome}” /&amp;gt;&lt;br /&gt;&amp;lt;f:verbatim&amp;gt;&lt;br /&gt;&amp;lt;br&amp;gt;&lt;br /&gt;&amp;lt;/f:verbatim&amp;gt;&lt;br /&gt;&amp;lt;h:outputText value=”#{msg.pagina_cadastro_label_email}”/&amp;gt;&lt;br /&gt;&amp;lt;h:inputText value=”#{teste.email}” /&amp;gt;&lt;br /&gt;&amp;lt;f:verbatim&amp;gt;&lt;br /&gt;&amp;lt;br&amp;gt;&lt;br /&gt;&amp;lt;/f:verbatim&amp;gt;&lt;br /&gt;&amp;lt;h:commandButton action=”#{teste.testar}” value=”#{msg.pagina_principal_botao_ok}” /&amp;gt;&lt;br /&gt;&amp;lt;/h:form&amp;gt;&lt;br /&gt;&amp;lt;/f:view&amp;gt;&lt;/i&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;&lt;i&gt;&amp;lt;/body&amp;gt;&lt;br /&gt;&amp;lt;/html&amp;gt;&lt;/i&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;&lt;i&gt;&lt;br /&gt;&lt;/i&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;&lt;i&gt;&lt;br /&gt;&lt;/i&gt;&lt;/span&gt;&lt;/blockquote&gt;&lt;span style="font-size: small;"&gt;Nesta página, praticamente todos os comandos são similares aos da  página anterior, com exeção de três que merecem uma explicação melhor:&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;&lt;b&gt;&amp;lt;h:inputText value=”#{teste.nome}” /&amp;gt;&lt;/b&gt;&lt;br /&gt;Aqui estamos criando um inputText, que como você deve estar imaginando é  uma caixa de texto, igual ao do HTML, mas o que precisa de uma  explicação especial nesta tag é o &lt;b&gt;value&lt;/b&gt;.&lt;br /&gt;&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;Note que estamos informando&lt;span style="color: red;"&gt;&lt;b&gt; #{teste.nome}&lt;/b&gt;&lt;/span&gt;, fazendo isso estamos falando que este campo está vinculado à variável nome da classe teste. Ainda não sabemos quem é esse &lt;i&gt;teste&lt;/i&gt;,  por que não configuramos o faces-config.xml ainda, porém este é o nosso  bean, a classe testeBean.java, lembra que criamos uma variável&lt;span style="color: blue;"&gt;&lt;b&gt; private String nome&lt;/b&gt;&lt;/span&gt; lá? Então, é aqui que ela está sendo referenciada.&lt;br /&gt;&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;Se a variável possuir algum valor, a página vai mostrar este valor no  campo quando a página for carregada, e se o usuário digitar alguma coisa  no campo, o valor do campo será copiado para a variável &lt;i&gt;nome &lt;/i&gt;quando for clicado no botão de submit (o &lt;i&gt;commandButton&lt;/i&gt;).&lt;br /&gt;&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;Então podemos imaginar, para efeito de analogia, que este campo é a  própria variável da classe testeBean! Certo, certo, não são a mesma  coisa, mas uma está vinculada diretamente com a outra, são irmãs gêmeas,  e siamesas ainda por cima, o valor que uma possuir a outra vai copiar,  tanto pra ir quando pra vir.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;Um pouco mais abaixo temos a tag &lt;b&gt;&amp;lt;f:verbatim&amp;gt;&amp;lt;br&amp;gt;&amp;lt;/f:verbatim&amp;gt;&lt;/b&gt;,  esta tag DEVE ser criada sempre que desejar inserir algum comando HTML  puro na página, nunca se deve utilizar tags HTML em páginas JSF, nunca!&lt;br /&gt;&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;Mas, eu estou utilizando alguns comandos HTML diretamente, e ai?&lt;br /&gt;&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;Bem, eu posso explicar, este projeto é algo extremamente simples, apenas  para exemplo, e as configurações do projeto deixam passar estas  coisinhas, porém quando for fazer um projeto mais avançado onde as  configurações também são mais avançadas, com certeza vai dar um erro  quando sua página for chamada, o JSF não vai conseguir compilar a página  por que não entenderá os comandos HTML, então já fica avisado aqui,  sempre que for utilizar algum comando HTML, utilize-os dentro das tags  &amp;lt;f:verbatim&amp;gt;&amp;lt;/f:verbatim&amp;gt;.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;&lt;b&gt;&amp;lt;h:commandButton&amp;gt;&lt;/b&gt; Novamente nos encontramos com o “SUBMIT” do JSF, porém ele está um pouco diferente agora…&lt;br /&gt;&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;A propriedade &lt;b&gt;action &lt;/b&gt;não está mais chamando um apelido,  e sim um método! Percorra um pouco as lembranças de sua memória ou abra  o arquivo testeBean.java no seu projeto, verifique que ele tem um  método &lt;span style="color: red;"&gt;&lt;b&gt;testar()&lt;/b&gt;&lt;/span&gt;  que retornar uma ou outra String, dependendo da situação do IF, certo?  Então, para a propriedade action devemos SEMPRE informar um alias, uma  String, porém não precisa ser diretamente, podemos chamar um método e  este método retorna a tal String, no nosso caso estamos enviando as  informações cadastradas na tela para o método &lt;b&gt;testar()&lt;/b&gt; da classe testeBean (aqui está com o nome &lt;b&gt;teste&lt;/b&gt;,  mas teste é o apelido que daremos para a classe testeBean nos arquivos  de configuração…) ao entrar no método testar(), fazemos algumas  verificações e retornamos alguma string, esta string que será a página  de destino de nossa aplicação!&lt;br /&gt;&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;Se não entendeu muito bem essa explicação, tenha calma no proximo post  vamos preparar os arquivos de configuração, então você poderá entender  melhor essa questão.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;Agora não sobrou muito o que falar sobre as tags do JSF, então vamos inserir os códigos nos arquivos restantes!&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;Códigos da página &lt;span style="text-decoration: underline;"&gt;&lt;b&gt;sucesso.jsp&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;span style="font-size: small;"&gt;&lt;i&gt;&amp;lt;%@ taglib uri=”http://java.sun.com/jsf/html” prefix=”h” %&amp;gt;&lt;br /&gt;&amp;lt;%@ taglib uri=”http://java.sun.com/jsf/core” prefix=”f” %&amp;gt;&lt;br /&gt;&amp;lt;f:loadBundle basename=”br.com.projetox.view.bundle.messages” var=”msg”/&amp;gt;&lt;br /&gt;&amp;lt;html&amp;gt;&lt;br /&gt;&amp;lt;head&amp;gt;&amp;lt;/head&amp;gt;&lt;br /&gt;&amp;lt;body&amp;gt;&lt;/i&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;&lt;i&gt;&amp;lt;f:view&amp;gt;&lt;br /&gt;&amp;lt;h1&amp;gt;&lt;br /&gt;&amp;lt;h:outputText value=”#{msg.pagina_sucesso_label_titulo}”/&amp;gt;&lt;br /&gt;&amp;lt;/h1&amp;gt;&lt;br /&gt;&amp;lt;h3&amp;gt;&lt;br /&gt;&amp;lt;h:outputText value=”#{msg.pagina_sucesso_label_site}”/&amp;gt;&lt;br /&gt;&amp;lt;/h3&amp;gt;&lt;br /&gt;&amp;lt;h:form id=”helloForm”&amp;gt;&lt;br /&gt;&amp;lt;h:outputText value=”#{msg.pagina_sucesso_label_texto}”/&amp;gt;&lt;br /&gt;&amp;lt;f:verbatim&amp;gt;&lt;br /&gt;&amp;lt;br&amp;gt;&lt;br /&gt;&amp;lt;/f:verbatim&amp;gt;&lt;br /&gt;&amp;lt;h:commandButton action=”inicio” value=”#{msg.pagina_sucesso_botao_voltar}” /&amp;gt;&lt;br /&gt;&amp;lt;/h:form&amp;gt;&lt;br /&gt;&amp;lt;/f:view&amp;gt;&lt;/i&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;&lt;i&gt;&amp;lt;/body&amp;gt;&lt;br /&gt;&amp;lt;/html&amp;gt;&lt;/i&gt;&lt;/span&gt;&lt;/blockquote&gt;&lt;span style="font-size: small;"&gt;Código da página &lt;span style="text-decoration: underline;"&gt;&lt;b&gt;falha.jsp&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;span style="font-size: small;"&gt;&lt;i&gt;&amp;lt;%@ taglib uri=”http://java.sun.com/jsf/html” prefix=”h” %&amp;gt;&lt;br /&gt;&amp;lt;%@ taglib uri=”http://java.sun.com/jsf/core” prefix=”f” %&amp;gt;&lt;br /&gt;&amp;lt;f:loadBundle basename=”br.com.projetox.view.bundle.messages” var=”msg”/&amp;gt;&lt;br /&gt;&amp;lt;html&amp;gt;&lt;br /&gt;&amp;lt;head&amp;gt;&amp;lt;/head&amp;gt;&lt;br /&gt;&amp;lt;body&amp;gt;&lt;/i&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;&lt;i&gt;&amp;lt;f:view&amp;gt;&lt;br /&gt;&amp;lt;h1&amp;gt;&lt;br /&gt;&amp;lt;h:outputText value=”#{msg.pagina_falha_label_titulo}”/&amp;gt;&lt;br /&gt;&amp;lt;/h1&amp;gt;&lt;br /&gt;&amp;lt;h3&amp;gt;&lt;br /&gt;&amp;lt;h:outputText value=”#{msg.pagina_falha_label_site}”/&amp;gt;&lt;br /&gt;&amp;lt;/h3&amp;gt;&lt;br /&gt;&amp;lt;h:form id=”helloForm”&amp;gt;&lt;br /&gt;&amp;lt;h:outputText value=”#{msg.pagina_falha_label_texto}”/&amp;gt;&lt;br /&gt;&amp;lt;f:verbatim&amp;gt;&lt;br /&gt;&amp;lt;br&amp;gt;&lt;br /&gt;&amp;lt;/f:verbatim&amp;gt;&lt;br /&gt;&amp;lt;h:commandButton action=”cadastro” value=”#{msg.pagina_falha_botao_voltar}” /&amp;gt;&lt;br /&gt;&amp;lt;/h:form&amp;gt;&lt;br /&gt;&amp;lt;/f:view&amp;gt;&lt;/i&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;&lt;i&gt;&amp;lt;/body&amp;gt;&lt;br /&gt;&amp;lt;/html&amp;gt;&lt;/i&gt;&lt;/span&gt;&lt;/blockquote&gt;&lt;span style="font-size: small;"&gt;Pronto! Ou melhor, quase pronto!&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;Já inserimos os códigos de todas as páginas, do arquivo de  propriedades e até do nosso bean, falta agora configurar o arquivo  faces-config.xml, que é a alma de um projeto JSF!&lt;br /&gt;&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt; Mas isso colocarei em outro post…&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;&lt;a href="http://javaerro.blogspot.com/2011/02/passo-anterior-passo-4.html"&gt;PRÓXIMO PASSO (PARTE 5)&amp;nbsp;&lt;/a&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6756811341323141038-482331236514351338?l=javaerro.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javaerro.blogspot.com/feeds/482331236514351338/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://javaerro.blogspot.com/2011/02/passo-anterior-parte-3.html#comment-form' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6756811341323141038/posts/default/482331236514351338'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6756811341323141038/posts/default/482331236514351338'/><link rel='alternate' type='text/html' href='http://javaerro.blogspot.com/2011/02/passo-anterior-parte-3.html' title='JSF, Inicio Rápido – Parte 4'/><author><name>Reinaldo Elias</name><uri>http://www.blogger.com/profile/17009512606320480417</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><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6756811341323141038.post-2489537954670756304</id><published>2011-02-19T18:41:00.000-02:00</published><updated>2012-01-10T22:31:12.763-02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Web'/><category scheme='http://www.blogger.com/atom/ns#' term='JSF'/><category scheme='http://www.blogger.com/atom/ns#' term='Códigos'/><category scheme='http://www.blogger.com/atom/ns#' term='Dicas'/><title type='text'>JSF, Início Rápido – Parte 3</title><content type='html'>&lt;span style="font-size: small;"&gt;&lt;a href="http://javaerro.blogspot.com/2011/02/ja-leu-introducao-entao-vamos-parte-2.html" target="_self"&gt;PASSO ANTERIOR (PARTE 2).&lt;/a&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;Se você chegou até aqui acho que você já leu a &lt;b&gt;&lt;a href="http://javaerro.blogspot.com/2011/02/java-server-faces-ou-jsf-para-os-mais.html" target="_blank"&gt;introdução&lt;/a&gt;&lt;/b&gt;, e a &lt;b&gt;&lt;a href="http://javaerro.blogspot.com/2011/02/ja-leu-introducao-entao-vamos-parte-2.html" target="_blank"&gt;parte 2&lt;/a&gt;&lt;/b&gt; do tutorial de JSF.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;Presumindo que estas tarefas já estejam feitas, as pastas e o bean criados, é hora de falar do arquivo &lt;b&gt;messages.properties&lt;/b&gt;.&lt;br /&gt;&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;Este arquivo é utilizado abrangentemente, em vários frameworks, não somente em JSF. Mas afinal pra serve este bendito arquivo?&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;Este arquivo nada mais é que algum txt, que contém nomes de váriáveis  e seus conteúdos, ele nem ao menos precisa ter esse nome, poderia ser &lt;b&gt;sorvetechocolate.properties&lt;/b&gt;,  também funcionaria, porém como tudo em java precisa seguir certos  padrões de programação, principalmente para futuras manutenções, este  nome foi adotado.&lt;br /&gt;&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;O arquivo funciona da seguinte maneira:&lt;/span&gt;&lt;br /&gt;&lt;div style="padding-left: 30px;"&gt;&lt;span style="font-size: small;"&gt;&lt;span style="color: #333399;"&gt;variavel_nome1.variavel_sobrenome.variavel_maisumnome = valor1&lt;br /&gt;variavel_nome2.variavel_sobrenome.variavel_maisumnome = valor2&lt;br /&gt;variavel_nome3.variavel_sobrenome.variavel_maisumnome = valor3&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;Em suas páginas, ao invés de escrever os textos diretamente no JSP  você importa estas “variáveis” do messages.properties, e assim o texto é  escrito na página, sem ter sido inserido diretamente entre as tags  html.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;Isso é útil por que?&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;&lt;span style="color: red;"&gt;&lt;b&gt;Para manutenções&lt;/b&gt;&lt;/span&gt;,  por exemplo, o telefone do PABX da empresa mudou, se você não estiver  utilizando algum “messages.properties” ou similares, provavelmente você  terá que abrir página por página e alterar todos os telefones, e é quase  certeza que alguma página irá passar em branco, porém se você estiver  utilizando o messages.properties, e mapeando a variável “telefone.pabx”,  basta alterar o valor desta variável no messages.properties e pronto!  Todas as páginas serão atualizadas, sem complicações.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;&lt;span style="color: red;"&gt;&lt;b&gt;Internacionalização&lt;/b&gt;&lt;/span&gt;,  digamos que sua empresa tem um portal, todo gerenciavel, em determinado  dia acionistas estrangeiros compram ações da sua empresa e querem o  site em inglês. Se você não estiver utilizando algum mapeamento de  textos como o messages.properties, provavelmente vai ter que abrir  página por página, coletar texto por texto e traduzir cada um, compilar o  site inteiro novamente, mas com o messages.properties devidamente  configurado &lt;span style="text-decoration: underline;"&gt;&lt;b&gt;e utilizado&lt;/b&gt;&lt;/span&gt;  isso não será preciso, e o tempo para traduzir o site será muito  pequeno, aliás, não demandará tempo algum, basta anexar o  messages.properties no e-mail e enviar para o departamento responsável e  informar “Aqui estão todos os textos do site, traduz ai que eu vou pra  casa descansar”.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;Agora que ja sabemos o que é, como funciona e pra que serve este  famoso quebra-galhos, messages.properties, podemos configurá-lo em nossa  aplicação.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;Na parte 2 deste tutorial criamos o arquivo messages.properties dentro do pacote &lt;b&gt;br.com.projetox.view.bundle&lt;/b&gt;, mas não colocamos nenhum conteúdo nele.&lt;br /&gt;Abra o arquivo messages.properties e insira as seguintes linhas de código:&lt;/span&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;span style="font-size: small;"&gt;&lt;i&gt;##### Textos da Página Principal #####&lt;br /&gt;pagina_principal_label_titulo=JSF Inicio Rápido&lt;br /&gt;pagina_principal_label_site=http://codeerror.wordpress.com&lt;br /&gt;pagina_principal_label_link=Página de Cadastro&lt;/i&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;&lt;i&gt;##### Textos da página de cadastro #####&lt;br /&gt;pagina_cadastro_label_titulo=JSF Inicio Rápido&lt;br /&gt;pagina_cadastro_label_site=http://codeerror.wordpress.com&lt;br /&gt;pagina_cadastro_label_nome=Nome&lt;br /&gt;pagina_cadastro_label_email=E-mail&lt;br /&gt;pagina_principal_botao_ok=Ok&lt;/i&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;&lt;i&gt;#### Textos da página Sucesso ####&lt;br /&gt;pagina_sucesso_label_titulo=Cadastro efetuado com sucesso!!!&lt;br /&gt;pagina_sucesso_label_site=http://codeerror.wordpress.com&lt;br /&gt;pagina_sucesso_label_texto=Parabéns, o projeto JSF Inicio Rápido está dando resultados!&lt;br /&gt;pagina_sucesso_botao_voltar=Voltar&lt;/i&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;&lt;i&gt;#### Textos da página Falha ####&lt;br /&gt;pagina_falha_label_titulo=Falha ao realizar o cadastro…&lt;br /&gt;pagina_falha_label_site=http://codeerror.wordpress.com&lt;br /&gt;pagina_falha_label_texto=Acho que você não preencheu os campos na página anterior, por favor preencha!&lt;br /&gt;pagina_falha_botao_voltar=Tentar novamente&lt;/i&gt;&lt;/span&gt;&lt;/blockquote&gt;&lt;span style="font-size: small;"&gt;Este arquivo está totamemte intuitivo, os nomes das variáveis  foram criados com base em nome da página, tipo de texto e nome do campo.&lt;br /&gt;Por exemplo a primeira linha:&lt;br /&gt;&lt;span style="color: #339966;"&gt;&lt;b&gt;pagina_principal_label_titulo=&lt;/b&gt;&lt;/span&gt; &lt;/span&gt;&lt;span style="font-size: small;"&gt;&lt;b&gt;&lt;span style="color: blue;"&gt;JSF Inicio Rápido&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;&lt;span style="color: #339966;"&gt;&lt;b&gt;pagina_principal_label_titulo&lt;/b&gt;&lt;/span&gt; é o nome da variável, este nome que invocaremos nas páginas JSP da aplicação.&lt;br /&gt;&lt;b&gt;&lt;span style="color: blue;"&gt;JSF Inicio Rápido&lt;/span&gt;&lt;/b&gt; &lt;/span&gt;&lt;span style="font-size: small;"&gt; é o valor da variável, este que será apresentado na tela sempre que a variável for solicitada.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;Os textos precedidos por sustenido (#) são comentários, que inseri  para separar mais ainda as variáveis, facilitando futuras manutenções no  código.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;Agora podemos criar as páginas JSP da aplicação, mas isso fica pra outro post.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;&lt;a href="http://javaerro.blogspot.com/2011/02/passo-anterior-parte-3.html" target="_self"&gt;PRÓXIMO PASSO (PARTE 4).&lt;/a&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6756811341323141038-2489537954670756304?l=javaerro.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javaerro.blogspot.com/feeds/2489537954670756304/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://javaerro.blogspot.com/2011/02/passo-anterior-parte-2.html#comment-form' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6756811341323141038/posts/default/2489537954670756304'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6756811341323141038/posts/default/2489537954670756304'/><link rel='alternate' type='text/html' href='http://javaerro.blogspot.com/2011/02/passo-anterior-parte-2.html' title='JSF, Início Rápido – Parte 3'/><author><name>Reinaldo Elias</name><uri>http://www.blogger.com/profile/17009512606320480417</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><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6756811341323141038.post-866596514843855090</id><published>2011-02-19T18:35:00.000-02:00</published><updated>2012-01-10T22:30:14.445-02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Web'/><category scheme='http://www.blogger.com/atom/ns#' term='JSF'/><category scheme='http://www.blogger.com/atom/ns#' term='Códigos'/><category scheme='http://www.blogger.com/atom/ns#' term='Dicas'/><title type='text'>JSF, Inicio Rápido – Parte 2</title><content type='html'>&lt;span style="font-size: x-small;"&gt;&lt;a href="http://javaerro.blogspot.com/2011/02/java-server-faces-ou-jsf-para-os-mais.html" target="_self"&gt;&lt;b&gt;Já leu a introdução?&lt;/b&gt;&lt;/a&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&gt;&lt;br /&gt;Então vamos à parte 2 deste tutorial.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&gt;Agora vamos criar algumas páginas JSP e Java, para começar a transformar nosso projeto em um “projeto”.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&gt;Mas primeiro, deixa eu explicar a finalidade destas páginas.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&gt;Vamos desenvolver um projetinho simples de JSF, para exemplificar a  comunicação e configuração das páginas e do projeto em si, para isso  iremos construir uma páginazinha index com uma opção de cadastro, ao  clicar no link será aberta uma página de cadastro com 3 campos: Nome,  e-mail e um “botão” submit, ao enviar este formulário os beans serão  populados e estas informações serão exibidas em outra página, com um  botão de voltar para a página inicial.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&gt;Ficará mais ou menos assim:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&gt;Página inicial / Menu:&lt;br /&gt;&lt;img alt="Imagem de exemplo do projeto JSF concluído, Pagina inicial/Menu." border="1" src="http://codeerror.background.googlepages.com/JSF_3.jpg" /&gt;&lt;br /&gt;&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&gt; Página de cadastro:&lt;br /&gt;&lt;img alt="Imagem de exemplo do projeto JSF concluído, Página de cadastro." border="1" src="http://codeerror.background.googlepages.com/JSF_4.jpg" /&gt;&lt;br /&gt;&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&gt; Página de Falha no cadastro (Caso não tenha sido digitado nada na tela):&lt;br /&gt;&lt;img alt="Imagem de exemplo do projeto JSF concluído, Página de falha no cadastro." border="1" src="http://codeerror.background.googlepages.com/JSF_5.jpg" /&gt;&lt;br /&gt;&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&gt; Página de cadastro (Após clicar no botão “Tentar novamente” da página de erro):&lt;br /&gt;&lt;img alt="Imagem de exemplo do projeto JSF concluído, Página de cadastro." border="1" src="http://codeerror.background.googlepages.com/JSF_6.jpg" /&gt;&lt;br /&gt;&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&gt; Página de sucesso (Ao preencher os campos de cadastro corretamente):&lt;br /&gt;&lt;img alt="Imagem de exemplo do projeto JSF concluído, Página de cadastro realizado com sucesso." border="1" src="http://codeerror.background.googlepages.com/JSF_7.jpg" /&gt;&lt;br /&gt;&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&gt; Página principal (Ao clicar no botão “Voltar” da página de Sucesso.)&lt;br /&gt;&lt;img alt="Imagem de exemplo do projeto JSF concluído, Página principal/Menu." border="1" src="http://codeerror.background.googlepages.com/JSF_3.jpg" /&gt;&lt;/span&gt;      &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&gt;Agora que já sabemos como o projeto irá ficar no final, podemos começar a construir as páginas.&lt;br /&gt;Aqui vale uma explicação sobre as páginas. Em JSF nenhuma tag especial  consegue ser executada se a página não for chamada “página.jsf”, se você  chamar em algum link “página.jsp”, por exemplo, o console irá acusar um  erro, informando que as tags da página solicitada são inválidos. Não se  esqueça disso!&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&gt;Crie a seguinte estrutura de arquivos (dentro das pastas indicadas nas imagens, crie as pastas que não existirem):&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&gt;&lt;br /&gt;&lt;img alt="Imagem da estrutura de arquivos que deve ser criada." height="400" src="http://codeerror.background.googlepages.com/JSF_8.jpg" width="283" /&gt;&lt;br /&gt;&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&gt; Então teremos os seguintes arquivos criados:&lt;br /&gt;&lt;b&gt;testeBean&lt;/b&gt;&lt;/span&gt;  &lt;span style="font-size: x-small;"&gt; dentro das pastas (pacote) br.com.projetox.view.bean;&lt;br /&gt;&lt;b&gt;messages.properties&lt;/b&gt;&lt;/span&gt; &lt;span style="font-size: x-small;"&gt; dentro das pastas (pacote) br.com.projetox.view.bundle;&lt;br /&gt;&lt;b&gt;index.jsp&lt;/b&gt;&lt;/span&gt; &lt;span style="font-size: x-small;"&gt; dentro da pasta WebContent;&lt;br /&gt;&lt;b&gt;falha.jsp&lt;/b&gt;&lt;/span&gt; &lt;span style="font-size: x-small;"&gt; dentro da pasta WebContent/pages;&lt;br /&gt;&lt;b&gt;inicio.jsp&lt;/b&gt;&lt;/span&gt; &lt;span style="font-size: x-small;"&gt; dentro da pasta WebContent/pages;&lt;br /&gt;&lt;b&gt;menu.jsp&lt;/b&gt;&lt;/span&gt; &lt;span style="font-size: x-small;"&gt; dentro da pasta WebContent/pages;&lt;br /&gt;&lt;b&gt;sucesso.jsp&lt;/b&gt;&lt;/span&gt; &lt;span style="font-size: x-small;"&gt; dentro da pasta WebContent/pages;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&gt;Agora que criamos todos os arquivos, vamos preenchê-los com códigos, começando do &lt;b&gt;BEAN&lt;/b&gt;.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&gt;Abra o arquivo&lt;b&gt; testeBean.java&lt;/b&gt; e crie duas váriáveis  String, uma nome e outra email (exatamente com estes nomes) e faça os  gets e sets das variáveis. Crie também um método testar(), para executar  alguma ação e retornar algum “endereço” para a aplicação.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&gt;Segue o código:&lt;/span&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;pre&gt;&lt;span style="font-size: x-small;"&gt;//----INICIO DO CÓDIGO DA CLASSE testeBean.java&lt;br /&gt;&lt;i&gt;package br.com.projetox.view.bean;&lt;br /&gt; /**&lt;br /&gt; * @author codeerror.wordpress.com&lt;br /&gt; */&lt;br /&gt; public class testeBean {&lt;br /&gt; private String nome;&lt;br /&gt; private String email;&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&amp;nbsp;&amp;nbsp; public String testar(){&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; String retorno = "falhou";&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if(!this.nome.equals("") &amp;amp;&amp;amp; !this.email.equals("")){&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; retorno = "sucesso";&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return retorno;&lt;br /&gt;&amp;nbsp;&amp;nbsp; }&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&amp;nbsp;&amp;nbsp; public String getNome() {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return nome;&lt;br /&gt;&amp;nbsp;&amp;nbsp; }&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&amp;nbsp;&amp;nbsp; public void setNome(String novoNome) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; this.nome = novoNome;&lt;br /&gt;&amp;nbsp;&amp;nbsp; }&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&amp;nbsp;&amp;nbsp; public String getEmail() {&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; return email;&lt;br /&gt;&amp;nbsp;&amp;nbsp; }&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&amp;nbsp;&amp;nbsp; public void setEmail(String novoEmail) {&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; this.email = novoEmail;&lt;br /&gt;&amp;nbsp;&amp;nbsp; }&lt;br /&gt; }&lt;br /&gt;//----- FIM DO CÓDIGO DA CLASSE testeBean.java&lt;/i&gt;&lt;/span&gt;&lt;/pre&gt;&lt;/blockquote&gt;&lt;span style="font-size: x-small;"&gt;Sim eu sei, falta &lt;i&gt;JavaDoc&lt;/i&gt;, mas precisamos economizar linhas aqui no post…&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&gt;Deixa eu explicar o que significa cada coisa.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&gt;As variáveis são &lt;b&gt;private String&lt;/b&gt;, por que queremos  variáveis do tipo String, e private por que não é pra mais ninguém  (nenhuma outra classe) acessar estas variáveis diretamente, isto é um  padrão de desenvolvimento.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&gt;O método &lt;b&gt;testar()&lt;/b&gt; verifica se os campos &lt;b&gt;nome &lt;/b&gt;e &lt;b&gt;e-mail&lt;/b&gt; possuem algum valor, se eles possuirem algum valor o método irá retornar “&lt;i&gt;sucesso&lt;/i&gt;” caso eles estejam em branco, o método irá retornar “&lt;i&gt;falha&lt;/i&gt;“, irei falar o significado destes retornos mais pra frente, mas já da pra se ter uma idéia.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&gt;Depois do método &lt;b&gt;testar()&lt;/b&gt; estão os &lt;i&gt;gets &lt;/i&gt;e &lt;i&gt;sets &lt;/i&gt;das  variáveis. Estes métodos são necessários (e muito) para praticamente  tudo em java, eles que controlam a entrada e saida das variáveis, por  exemplo o método &lt;b&gt;getNome()&lt;/b&gt; retorna o valor contido na variável nome, o método &lt;b&gt;setNome(String novoNome)&lt;/b&gt; copia o valor da variável novoNome para a variável nome do bean.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&gt;Agora vamos falar do arquivo messages.properties, mas a explicação  deste arquivo é um pouco extensa, e este post já está bem grande, então  continuarei no proximo post!&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&gt;&lt;a href="http://javaerro.blogspot.com/2011/02/passo-anterior-parte-2.html" target="_self"&gt;PRÓXIMO PASSO (PARTE 3).&lt;/a&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6756811341323141038-866596514843855090?l=javaerro.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javaerro.blogspot.com/feeds/866596514843855090/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://javaerro.blogspot.com/2011/02/ja-leu-introducao-entao-vamos-parte-2.html#comment-form' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6756811341323141038/posts/default/866596514843855090'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6756811341323141038/posts/default/866596514843855090'/><link rel='alternate' type='text/html' href='http://javaerro.blogspot.com/2011/02/ja-leu-introducao-entao-vamos-parte-2.html' title='JSF, Inicio Rápido – Parte 2'/><author><name>Reinaldo Elias</name><uri>http://www.blogger.com/profile/17009512606320480417</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><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6756811341323141038.post-3550119924452411524</id><published>2011-02-19T18:29:00.000-02:00</published><updated>2012-01-10T22:35:24.075-02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Web'/><category scheme='http://www.blogger.com/atom/ns#' term='JSF'/><category scheme='http://www.blogger.com/atom/ns#' term='Códigos'/><category scheme='http://www.blogger.com/atom/ns#' term='Dicas'/><title type='text'>JSF, Inicio Rápido – Introdução</title><content type='html'>&lt;span style="font-family: Arial, Helvetica, sans-serif; font-size: small;"&gt;&lt;b&gt;Java Server Faces&lt;/b&gt;, ou &lt;b&gt;JSF&lt;/b&gt; para os mais íntimos é basicamente um framework que trabalha com modelos de interfaces gáficas sobre eventos, é um framework baseado no conceito &lt;b&gt;MVC&lt;/b&gt; para desenvolvimento web.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Arial, Helvetica, sans-serif; font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Arial, Helvetica, sans-serif; font-size: small;"&gt;MVC é o conceito &lt;b&gt;Model-View-Controler&lt;/b&gt;, que consiste em separar seu código em camadas de visualização, controle e negócios, mas a princípio esta sigla é inútil. Mais para frente retomarei o assunto.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Arial, Helvetica, sans-serif; font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Arial, Helvetica, sans-serif; font-size: small;"&gt;Em JSF todo o controle é feito por um Servlet (&lt;b&gt;FacesServlet&lt;/b&gt;) por um conjunto de manipuladores de ações e eventos e alguns arquivos de configuração. Não vou entrar muito no detalhe de cada bit que compõe a arquitetura senão daria uma biblia.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Arial, Helvetica, sans-serif; font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Arial, Helvetica, sans-serif; font-size: small;"&gt;O que importa é que JSF é um framework “simples”, fácil de configurar e utilizar, ágil e quebra muito o galho.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Arial, Helvetica, sans-serif; font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Arial, Helvetica, sans-serif; font-size: small;"&gt;A principal diferença entre &lt;b&gt;Struts&lt;/b&gt; e &lt;b&gt;JSF&lt;/b&gt; é:&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Arial, Helvetica, sans-serif; font-size: small;"&gt;O Struts sempre chama Actions primeiro(&lt;b&gt;Classes&lt;/b&gt;, o famoso *.do) e JSPs depois, isso é configurado no Struts-config.xml.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Arial, Helvetica, sans-serif; font-size: small;"&gt;O JSF chama JSPs primeiro (*.JSF) e dentro destas páginas você decide o que quer fazer.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Arial, Helvetica, sans-serif; font-size: small;"&gt;Mas o retorno configurado é basicamente o mesmo, você configura um arquivinho XML, informa um parâmetro e dentro diz uma string de retorno e seu destino, ou várias strings de retorno e vários destinos.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Arial, Helvetica, sans-serif; font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Arial, Helvetica, sans-serif; font-size: small;"&gt;Fácil né?&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Arial, Helvetica, sans-serif; font-size: small;"&gt;Se você é iniciante em JSF ou em Struts não se desespere essa é só uma comparação, a parte legal vai começar em algumas linhas.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Arial, Helvetica, sans-serif; font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Arial, Helvetica, sans-serif; font-size: small;"&gt;O Objetivo deste post (e dos próximos) é apresentar a quem interessar um tutorial fácil de JSF, literalmente uma “Receita de bolo”. Como não da pra explicar tudo em um único post, separei por partes e irei postando aqui todos os links. também existe no menu um link próprio para JSF contendo todas os posts da categoria.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Arial, Helvetica, sans-serif; font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Arial, Helvetica, sans-serif; font-size: small;"&gt;Então vamos ao que interessa:&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Arial, Helvetica, sans-serif; font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Arial, Helvetica, sans-serif; font-size: small;"&gt;Parte 1.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Arial, Helvetica, sans-serif; font-size: small;"&gt;- Pra que lado eu atiro?&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Arial, Helvetica, sans-serif; font-size: small;"&gt;Primeiro você precisa ter um ambiente configurado, se ainda não configurou o seu, clique &lt;a href="http://javaerro.blogspot.com/2010/10/instalacao-da-jdk-instalacao-do-tomcat_24.html"&gt;neste link&lt;/a&gt; e veja como configurar, tem também &lt;a href="http://javaerro.blogspot.com/2010/10/este-plugin-e-muito-util-pois-permite-o.html"&gt;este link&lt;/a&gt; que mostra como configurar o plugin Sysdeo do Tomcat no Eclipse.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Arial, Helvetica, sans-serif; font-size: small;"&gt;Se você&lt;b&gt; ja configurou o ambiente&lt;/b&gt; e já está com o &lt;b&gt;Eclipse&lt;/b&gt; ou outra IDE preparada, podemos começar.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Arial, Helvetica, sans-serif; font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Arial, Helvetica, sans-serif; font-size: small;"&gt;Vou mostrar como funciona a organização e fornecer todos os arquivos separadamente, mas irei fornecer o projeto final completo para download no final.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Arial, Helvetica, sans-serif; font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Arial, Helvetica, sans-serif; font-size: small;"&gt;Crie um novo projeto com um nome qualquer e defina a seguinte estrutura de pastas:&lt;/span&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;span style="font-size: small;"&gt;&lt;a href="http://sites.google.com/site/codeerrorbackground/JSF_1.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="171" src="http://sites.google.com/site/codeerrorbackground/JSF_1.jpg" width="200" /&gt;&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;&lt;span style="font-family: Arial, Helvetica, sans-serif; font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Arial, Helvetica, sans-serif; font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Arial, Helvetica, sans-serif; font-size: small;"&gt;É com esta estrutura de pastas que iremos trabalhar.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Arial, Helvetica, sans-serif; font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Arial, Helvetica, sans-serif; font-size: small;"&gt;Na pasta &lt;b&gt;ant&lt;/b&gt; armazenaremos os arquivos de build.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Arial, Helvetica, sans-serif; font-size: small;"&gt;Na pasta&lt;b&gt; JavaSource &lt;/b&gt;armazenaremos todos os pacotes e classes.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Arial, Helvetica, sans-serif; font-size: small;"&gt;Na pasta &lt;b&gt;WebContent&lt;/b&gt; colocaremos todos os JSPs.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Arial, Helvetica, sans-serif; font-size: small;"&gt;A pasta &lt;b&gt;WEB-INF&lt;/b&gt; deve obrigatóriamente estar dentro da pasta WebContents, é nela que colocaremos os arquivos de configuração do JSF. Crie também dentro da pasta WEB-INF mais duas pastas, uma com o nome &lt;b&gt;&lt;span style="color: red;"&gt;classes&lt;/span&gt;&lt;/b&gt; e outra com o nome &lt;b&gt;&lt;span style="color: red;"&gt;lib&lt;/span&gt;&lt;/b&gt;.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Arial, Helvetica, sans-serif; font-size: small;"&gt;A pasta &lt;b&gt;works&lt;/b&gt; não serve para nada, ao menos para nós, ela será usada pelo servidor, para ir guardando os arquivos “temporários”, compilando as classes, etç, etç.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Arial, Helvetica, sans-serif; font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Arial, Helvetica, sans-serif; font-size: small;"&gt;Agora que criamos a estrutura de classes, vamos criar os arquivos.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Arial, Helvetica, sans-serif; font-size: small;"&gt;Dentro da pasta WEB-INF, crie um arquivo chamado &lt;b&gt;faces-config.xml&lt;/b&gt;.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Arial, Helvetica, sans-serif; font-size: small;"&gt;Ainda na pasta WEB-INF, crie outro arquivo chamado&lt;b&gt; web.xml&lt;/b&gt;.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Arial, Helvetica, sans-serif; font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Arial, Helvetica, sans-serif; font-size: small;"&gt;No arquivo faces-config.xml escreveremos todas as configurações do JSF, como managed-beans e regras de navegação.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Arial, Helvetica, sans-serif; font-size: small;"&gt;No arquivo web.xml, escreveremos as configurações do projeto, como por exemplo: “Ô Tomcat, esse troço aqui é JSF!” ou “Tomcat, quando eu escrever &lt;i&gt;algumacoisa.JSF&lt;/i&gt;, faz o favor de entender!”, entre outros.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Arial, Helvetica, sans-serif; font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Arial, Helvetica, sans-serif; font-size: small;"&gt;Agora é necessário baixar as&lt;b&gt; bibliotecas&lt;/b&gt; JSF, afinal é um framework.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Arial, Helvetica, sans-serif; font-size: small;"&gt;&lt;a href="http://codeerror.background.googlepages.com/JSF_libs.zip"&gt;Clique aqui&lt;/a&gt; para baixar as bibliotecas, descompacte o conteúdo deste arquivo em qualquer lugar e copie tudo que for &lt;b&gt;JAR&lt;/b&gt; para a pasta&lt;b&gt; lib&lt;/b&gt;.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Arial, Helvetica, sans-serif; font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Arial, Helvetica, sans-serif; font-size: small;"&gt;Então até agora já criamos a estrutura de pastas, criamos os arquivos de configuração e baixamos as bibliotecas, então o projeto deve estar como a figura abaixo:&lt;/span&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;span style="font-size: small;"&gt;&lt;a href="http://sites.google.com/site/codeerrorbackground/JSF_2.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="400" src="http://sites.google.com/site/codeerrorbackground/JSF_2.jpg" width="293" /&gt;&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;&lt;span style="font-family: Arial, Helvetica, sans-serif; font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Arial, Helvetica, sans-serif; font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Arial, Helvetica, sans-serif; font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Arial, Helvetica, sans-serif; font-size: small;"&gt;Esse é o fim de primeira parte, o proximo passo será a criação dos &lt;b&gt;JSPs&lt;/b&gt; e &lt;b&gt;Java&lt;/b&gt; necessários para nossa aplicação.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Arial, Helvetica, sans-serif; font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Arial, Helvetica, sans-serif; font-size: small;"&gt;&lt;a href="http://javaerro.blogspot.com/2011/02/ja-leu-introducao-entao-vamos-parte-2.html"&gt;PRÓXIMO PASSO (PARTE 2)&lt;/a&gt;.&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6756811341323141038-3550119924452411524?l=javaerro.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javaerro.blogspot.com/feeds/3550119924452411524/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://javaerro.blogspot.com/2011/02/java-server-faces-ou-jsf-para-os-mais.html#comment-form' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6756811341323141038/posts/default/3550119924452411524'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6756811341323141038/posts/default/3550119924452411524'/><link rel='alternate' type='text/html' href='http://javaerro.blogspot.com/2011/02/java-server-faces-ou-jsf-para-os-mais.html' title='JSF, Inicio Rápido – Introdução'/><author><name>Reinaldo Elias</name><uri>http://www.blogger.com/profile/17009512606320480417</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><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6756811341323141038.post-7568544268130466752</id><published>2011-02-16T21:09:00.000-02:00</published><updated>2012-01-10T21:53:14.759-02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Swing'/><category scheme='http://www.blogger.com/atom/ns#' term='Códigos'/><category scheme='http://www.blogger.com/atom/ns#' term='Dicas'/><title type='text'>Swing: JFrame e Imagem</title><content type='html'>&lt;span class="Apple-style-span" style="color: #333333; font-family: Tahoma, Verdana, Arial, sans-serif; font-size: 12px; line-height: 21px;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;div style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: inherit; font-size: 12px; font-style: inherit; font-weight: inherit; margin-bottom: 1.8em; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;Se você está querendo criar um “programinha” ou um “programão” em java, certamente vai querer colocar uma ou algumas imagens nas janelas que criar, porém ao procurar algum código swing ou, se estiver utilizando o netbeans ou algum outro editor visual (arrastar e soltar), repara que não existe uma opção para inserir imagens no jFrame.&lt;/div&gt;&lt;div style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: inherit; font-size: 12px; font-style: inherit; font-weight: inherit; margin-bottom: 1.8em; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;Mas como fica o programa nesse caso? Não existe forma de colocar uma imagem na janela?&lt;br /&gt;Claro que tem, existem diversas formas de se fazer isso, mas vou falar de uma forma em específico, a forma mais simples.&lt;/div&gt;&lt;div style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: inherit; font-size: 12px; font-style: inherit; font-weight: inherit; margin-bottom: 1.8em; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;Veja, no exemplo abaixo, uma imagem inserida dentro de um JFrame.&lt;/div&gt;&lt;div style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: inherit; font-size: 12px; font-style: inherit; font-weight: inherit; margin-bottom: 1.8em; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;&lt;img alt="Imagem exemplo - JFrame com imagem de fundo" src="http://codeerror.background.googlepages.com/JFrame_imagem_fundo.jpg" style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: inherit; font-size: 12px; font-style: inherit; font-weight: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; max-width: 100%; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;" /&gt;&lt;/div&gt;&lt;div style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: inherit; font-size: 12px; font-style: inherit; font-weight: inherit; margin-bottom: 1.8em; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: inherit; font-size: 12px; font-style: inherit; font-weight: inherit; margin-bottom: 1.8em; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;Para colocar essa imagem no JFrame eu não coloquei a imagem no JFrame.&lt;br /&gt;Confuso? Eu explico.&lt;/div&gt;&lt;div style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: inherit; font-size: 12px; font-style: inherit; font-weight: inherit; margin-bottom: 1.8em; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;Realmente não dá, ou não é tão “acessível” com os códigos convencionais do swing, colocar uma imagem diretamente na janela, como se coloca qualquer componente como labels, botões, etç. Mas é extremamente simples colocar uma imagem em um componente como um label ou botão.&lt;/div&gt;&lt;div style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: inherit; font-size: 12px; font-style: inherit; font-weight: inherit; margin-bottom: 1.8em; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;O mais indicado para esse caso é o JLabel, ficando basicamente assim, você tem seu JFrame e insere nele um JLabel, esse label no lugar de exibir um texto vai exibir uma imagem!&lt;/div&gt;&lt;div style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: inherit; font-size: 12px; font-style: inherit; font-weight: inherit; margin-bottom: 1.8em; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;Simples né?&lt;br /&gt;Vamos ver se o código também fica simples:&lt;/div&gt;&lt;div style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: inherit; font-size: 12px; font-style: inherit; font-weight: inherit; margin-bottom: 1.8em; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;blockquote style="background-attachment: initial; background-clip: initial; background-color: initial; background-image: url(http://s0.wp.com/wp-content/themes/pub/greyzed/images/quote.gif); background-origin: initial; background-position: 0% 0%; background-repeat: no-repeat no-repeat; border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: #747775; font-family: inherit; font-size: 12px; font-style: inherit; font-weight: inherit; margin-bottom: 0px; margin-left: 10px; margin-right: 30px; margin-top: 15px; min-height: 32px; padding-bottom: 0px; padding-left: 60px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;&lt;div style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: inherit; font-size: 12px; font-style: inherit; font-weight: inherit; margin-bottom: 1.8em; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;{&lt;br /&gt;labelImagemFundo = new JLabel();&lt;br /&gt;getContentPane().add(labelImagemFundo);&lt;br /&gt;labelImagemFundo.setIcon(new ImageIcon(getClass().getClassLoader().getResource(“java_job.gif”)));&lt;br /&gt;}&lt;/div&gt;&lt;/blockquote&gt;&lt;div style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: inherit; font-size: 12px; font-style: inherit; font-weight: inherit; margin-bottom: 1.8em; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;Enjoy!&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6756811341323141038-7568544268130466752?l=javaerro.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javaerro.blogspot.com/feeds/7568544268130466752/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://javaerro.blogspot.com/2011/02/se-voce-esta-querendo-criar-um.html#comment-form' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6756811341323141038/posts/default/7568544268130466752'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6756811341323141038/posts/default/7568544268130466752'/><link rel='alternate' type='text/html' href='http://javaerro.blogspot.com/2011/02/se-voce-esta-querendo-criar-um.html' title='Swing: JFrame e Imagem'/><author><name>Reinaldo Elias</name><uri>http://www.blogger.com/profile/17009512606320480417</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><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6756811341323141038.post-4910004468777872288</id><published>2011-02-16T20:58:00.000-02:00</published><updated>2012-01-10T21:53:14.687-02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Swing'/><category scheme='http://www.blogger.com/atom/ns#' term='Códigos'/><category scheme='http://www.blogger.com/atom/ns#' term='Dicas'/><title type='text'>Swing – WindowListener</title><content type='html'>&lt;span class="Apple-style-span" style="color: #333333; font-family: Tahoma, Verdana, Arial, sans-serif; font-size: 12px; line-height: 21px;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;div style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: inherit; font-size: 12px; font-style: inherit; font-weight: inherit; margin-bottom: 1.8em; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;Iniciando a seção Swing (não pense em outra coisa, esse blog é de Java!!), vou postar um código-exemplo de WindowListener, mais precisamente o evento “Fechando a janela”, com esse exemplo é possível escolher qualquer comportamento ao fechar a jenela, só vai depender da sua criatividade:&lt;br /&gt;Quer impossibilitar o fechamento? A vontade!&lt;br /&gt;Quer enviar a janela para a bandeja do sistema? Você pode! (este exemplo não ensina a fazer isso, mas darei algumas dicas desta “POG” no final).&lt;/div&gt;&lt;div style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: inherit; font-size: 12px; font-style: inherit; font-weight: inherit; margin-bottom: 1.8em; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;Enfim, vamos ao que interessa, capturar o evento windowClosing, ou fechando a janela para os mais íntimos.&lt;/div&gt;&lt;blockquote style="background-attachment: initial; background-clip: initial; background-color: initial; background-image: url(http://s0.wp.com/wp-content/themes/pub/greyzed/images/quote.gif); background-origin: initial; background-position: 0% 0%; background-repeat: no-repeat no-repeat; border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: #747775; font-family: inherit; font-size: 12px; font-style: inherit; font-weight: inherit; margin-bottom: 0px; margin-left: 10px; margin-right: 30px; margin-top: 15px; min-height: 32px; padding-bottom: 0px; padding-left: 60px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;&lt;div style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: inherit; font-size: 12px; font-style: inherit; font-weight: inherit; margin-bottom: 1.8em; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: inherit; font-size: 12px; font-style: inherit; font-weight: inherit; margin-bottom: 1.8em; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;&lt;em style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: inherit; font-size: 12px; font-style: italic; font-weight: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;//Importação das bibliotecas que iremos precisar&lt;br /&gt;&lt;span style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: maroon; font-family: inherit; font-size: 12px; font-style: inherit; font-weight: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;&lt;strong style="font-weight: bold;"&gt;import&lt;/strong&gt;&amp;nbsp;&lt;/span&gt;java.awt.event.WindowAdapter;&lt;br /&gt;&lt;strong style="font-weight: bold;"&gt;&lt;span style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: maroon; font-family: inherit; font-size: 12px; font-style: inherit; font-weight: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;import&lt;/span&gt;&lt;/strong&gt;&amp;nbsp;java.awt.event.WindowEvent;&lt;br /&gt;&lt;strong style="font-weight: bold;"&gt;&lt;span style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: maroon; font-family: inherit; font-size: 12px; font-style: inherit; font-weight: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;import&lt;/span&gt;&lt;/strong&gt;&amp;nbsp;javax.swing.JFrame;&lt;br /&gt;&lt;strong style="font-weight: bold;"&gt;&lt;span style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: maroon; font-family: inherit; font-size: 12px; font-style: inherit; font-weight: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;import&lt;/span&gt;&lt;/strong&gt;&amp;nbsp;javax.swing.JOptionPane;&lt;br /&gt;&lt;strong style="font-weight: bold;"&gt;&lt;span style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: maroon; font-family: inherit; font-size: 12px; font-style: inherit; font-weight: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;import&lt;/span&gt;&lt;/strong&gt;&amp;nbsp;java.awt.*;&amp;nbsp;&lt;br /&gt;&lt;strong style="font-weight: bold;"&gt;&lt;span style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: maroon; font-family: inherit; font-size: 12px; font-style: inherit; font-weight: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;import&lt;/span&gt;&lt;/strong&gt;&amp;nbsp;javax.swing.*;&amp;nbsp;&amp;nbsp;&lt;/em&gt;&lt;/div&gt;&lt;div style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: inherit; font-size: 12px; font-style: inherit; font-weight: inherit; margin-bottom: 1.8em; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;&lt;em style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: inherit; font-size: 12px; font-style: italic; font-weight: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;&lt;strong style="font-weight: bold;"&gt;&lt;span style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: maroon; font-family: inherit; font-size: 12px; font-style: inherit; font-weight: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;public class&lt;/span&gt;&lt;/strong&gt;&amp;nbsp;JanelaTeste&amp;nbsp;&lt;strong style="font-weight: bold;"&gt;&lt;span style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: maroon; font-family: inherit; font-size: 12px; font-style: inherit; font-weight: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;extends&lt;/span&gt;&lt;/strong&gt;&amp;nbsp;JFrame{&lt;/em&gt;&lt;/div&gt;&lt;div style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: inherit; font-size: 12px; font-style: inherit; font-weight: inherit; margin-bottom: 1.8em; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;&lt;em style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: inherit; font-size: 12px; font-style: italic; font-weight: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;&amp;nbsp;&lt;strong style="font-weight: bold;"&gt;&lt;span style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: maroon; font-family: inherit; font-size: 12px; font-style: inherit; font-weight: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;private static void&lt;/span&gt;&lt;/strong&gt;&amp;nbsp;criaJanelaExemploGUI() {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: #339966; font-family: inherit; font-size: 12px; font-style: inherit; font-weight: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;//Cria uma nova janela, instanciando um JFrame, afinal para fechar&lt;br /&gt;&amp;nbsp;&amp;nbsp; //uma janela, primeiro precisamos da janela!&lt;/span&gt;&amp;nbsp;&amp;nbsp;JFrame frame =&amp;nbsp;&lt;span style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: maroon; font-family: inherit; font-size: 12px; font-style: inherit; font-weight: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;&lt;strong style="font-weight: bold;"&gt;new&lt;/strong&gt;&amp;nbsp;&lt;/span&gt;JFrame&lt;span style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: #333399; font-family: inherit; font-size: 12px; font-style: inherit; font-weight: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;(“Janela Teste – Brincando com o botão Fechar”&lt;/span&gt;);&lt;br /&gt;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&lt;span style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: #339966; font-family: inherit; font-size: 12px; font-style: inherit; font-weight: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;//Seta o comportamento padrão para a ação “Fechar” da janela.&lt;br /&gt;&amp;nbsp;&amp;nbsp;//Neste caso, estamos informando “Não faça nada ao fechar”&amp;nbsp;&lt;/span&gt;&lt;/em&gt;&lt;em style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: inherit; font-size: 12px; font-style: italic; font-weight: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;&amp;nbsp;&amp;nbsp;frame.setDefaultCloseOperation(JFrame.&lt;span style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: blue; font-family: inherit; font-size: 12px; font-style: inherit; font-weight: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;DO_NOTHING_ON_CLOSE&lt;/span&gt;);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&lt;/em&gt;&lt;/div&gt;&lt;div style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: inherit; font-size: 12px; font-style: inherit; font-weight: inherit; margin-bottom: 1.8em; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;&lt;em style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: inherit; font-size: 12px; font-style: italic; font-weight: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;&lt;span style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: #339966; font-family: inherit; font-size: 12px; font-style: inherit; font-weight: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;//Esse&amp;nbsp;bloco não tem a menor necessidade, coloquei apenas para ter&amp;nbsp;algo&lt;br /&gt;//adicional no código, neste caso a primeira linha dentro do TRY recolhe&lt;br /&gt;//todos os looks instalados na máquina, depois eu seleciona o terceira da lista.&lt;br /&gt;//lembrando que o array começa em&amp;nbsp;zero, então 0, 1, 2…&lt;/span&gt;&lt;/em&gt;&lt;em style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: inherit; font-size: 12px; font-style: italic; font-weight: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&lt;span style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: maroon; font-family: inherit; font-size: 12px; font-style: inherit; font-weight: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;&lt;strong style="font-weight: bold;"&gt;try&lt;/strong&gt;&amp;nbsp;&lt;/span&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; UIManager.LookAndFeelInfo[] instalados = UIManager.getInstalledLookAndFeels();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; UIManager.setLookAndFeel(instalados[2].getClassName());&lt;br /&gt;&amp;nbsp;&amp;nbsp;}&lt;strong style="font-weight: bold;"&gt;&lt;span style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: maroon; font-family: inherit; font-size: 12px; font-style: inherit; font-weight: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;catch&lt;/span&gt;&lt;/strong&gt;(Exception e) {&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; e.printStackTrace();&lt;br /&gt;&amp;nbsp;&amp;nbsp;}&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&lt;span style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: #339966; font-family: inherit; font-size: 12px; font-style: inherit; font-weight: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;//Seta uma dimensão para a janela, que será assumida na inicialização;&lt;br /&gt;//porporção larguxa x altura&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;frame.setSize(&lt;span style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: red; font-family: inherit; font-size: 12px; font-style: inherit; font-weight: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;400&lt;/span&gt;,&lt;span style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: red; font-family: inherit; font-size: 12px; font-style: inherit; font-weight: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;100&lt;/span&gt;);&lt;br /&gt;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&lt;span style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: #339966; font-family: inherit; font-size: 12px; font-style: inherit; font-weight: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;//Adiciona o WindowListener ao frame, este&amp;nbsp;listener&amp;nbsp;possibilita capturar todos os eventos&lt;br /&gt;&amp;nbsp;&amp;nbsp;//da janela, ex.: Fechando, Minimizando, Restaurando, Recebendo Foco, Perdendo Foco, etç.&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;frame.addWindowListener(&lt;span style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: maroon; font-family: inherit; font-size: 12px; font-style: inherit; font-weight: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;&lt;strong style="font-weight: bold;"&gt;new&amp;nbsp;&lt;/strong&gt;&lt;/span&gt;WindowAdapter() {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: #339966; font-family: inherit; font-size: 12px; font-style: inherit; font-weight: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;//aqui estou informando que quero o evento fechando a janela&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;strong style="font-weight: bold;"&gt;&lt;span style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: maroon; font-family: inherit; font-size: 12px; font-style: inherit; font-weight: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;public void&lt;/span&gt;&lt;/strong&gt;&amp;nbsp;windowClosing (WindowEvent e) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: #339966; font-family: inherit; font-size: 12px; font-style: inherit; font-weight: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;&amp;nbsp;//Nesta parte devemos colocar todo o que queremos que aconteça quando o botão&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //fechar for pressionado, neste caso apenas é exibida uma mensagem simples&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //e depois&amp;nbsp;a&amp;nbsp;aplicação é encerrada.&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;JOptionPane.showMessageDialog(&lt;span style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: maroon; font-family: inherit; font-size: 12px; font-style: inherit; font-weight: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;&lt;strong style="font-weight: bold;"&gt;null&lt;/strong&gt;&lt;/span&gt;,&lt;span style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: blue; font-family: inherit; font-size: 12px; font-style: inherit; font-weight: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;“A janela será fechada.”&lt;/span&gt;,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: blue; font-family: inherit; font-size: 12px; font-style: inherit; font-weight: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;“Você clicou em fechar.”,&lt;/span&gt;JOptionPane.&lt;span style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: blue; font-family: inherit; font-size: 12px; font-style: inherit; font-weight: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;PLAIN_MESSAGE&lt;/span&gt;);&lt;br /&gt;&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;System.exit(&lt;span style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: red; font-family: inherit; font-size: 12px; font-style: inherit; font-weight: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;0&lt;/span&gt;);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;});&lt;br /&gt;&amp;nbsp;&lt;br /&gt;&lt;span style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: #339966; font-family: inherit; font-size: 12px; font-style: inherit; font-weight: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;&amp;nbsp;&amp;nbsp;//Deixa o frame visivel aos olhos dos mortais.&lt;/span&gt;&amp;nbsp;&amp;nbsp;frame.setVisible(&lt;strong style="font-weight: bold;"&gt;&lt;span style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: maroon; font-family: inherit; font-size: 12px; font-style: inherit; font-weight: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;true&lt;/span&gt;&lt;/strong&gt;);&lt;br /&gt;&amp;nbsp;}&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&lt;strong style="font-weight: bold;"&gt;&lt;span style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: maroon; font-family: inherit; font-size: 12px; font-style: inherit; font-weight: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;public static void&lt;/span&gt;&lt;/strong&gt;&amp;nbsp;main(String[] args){&lt;br /&gt;&amp;nbsp;&amp;nbsp;criaJanelaExemploGUI();&lt;br /&gt;&amp;nbsp;}&lt;/em&gt;&lt;/div&gt;&lt;div style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: inherit; font-size: 12px; font-style: inherit; font-weight: inherit; margin-bottom: 1.8em; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;&lt;em style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: inherit; font-size: 12px; font-style: italic; font-weight: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;}&lt;/em&gt;&lt;/div&gt;&lt;/blockquote&gt;&lt;div style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: inherit; font-size: 12px; font-style: inherit; font-weight: inherit; margin-bottom: 1.8em; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: inherit; font-size: 12px; font-style: inherit; font-weight: inherit; margin-bottom: 1.8em; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;&amp;nbsp;Alguns comentários adicionais…&lt;/div&gt;&lt;div style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: inherit; font-size: 12px; font-style: inherit; font-weight: inherit; margin-bottom: 1.8em; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;No comando “&lt;span style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: inherit; font-size: xx-small; font-style: inherit; font-weight: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;frame.setDefaultCloseOperation(JFrame.&lt;/span&gt;&lt;em style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: inherit; font-size: 12px; font-style: italic; font-weight: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;&lt;span style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: #0000c0; font-family: inherit; font-size: xx-small; font-style: inherit; font-weight: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;&lt;span style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: #0000c0; font-family: inherit; font-size: xx-small; font-style: inherit; font-weight: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;DO_NOTHING_ON_CLOSE&lt;/span&gt;&lt;/span&gt;&lt;span style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: inherit; font-size: xx-small; font-style: inherit; font-weight: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;);&lt;/span&gt;&lt;/em&gt;“, estou setando a operação padrão de fechamento do frame, neste caso a opção desejada foi uma constante da classe JFrame, a constante DO_NOTHING_ON_CLOSE, não faça nada ao fechar, porém não existe somente esta, outras constantes podem ser passadas como parâmetros:&lt;br /&gt;&lt;span style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: blue; font-family: inherit; font-size: 12px; font-style: inherit; font-weight: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;DISPOSE_ON_CLOSE&lt;/span&gt;:&amp;nbsp;Induzir ao&amp;nbsp;Fechar,&amp;nbsp;fecha&amp;nbsp;a janela.&lt;br /&gt;&lt;span style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: blue; font-family: inherit; font-size: 12px; font-style: inherit; font-weight: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;HIDE_ON_CLOSE&lt;/span&gt;: Esconder ao Fechar, se quiser ver a jenela novamente basta aplicar um “setVisible(true)”.&lt;br /&gt;&lt;span style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: blue; font-family: inherit; font-size: 12px; font-style: inherit; font-weight: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;EXIT_ON_CLOSE&lt;/span&gt;: Sai ao fechar, sai do sistema.&lt;/div&gt;&lt;div style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: inherit; font-size: 12px; font-style: inherit; font-weight: inherit; margin-bottom: 1.8em; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;Dentro do listener (windowListener), estamos invocando o evento windowClosing, para fiscalizar quando a janela é fechada, existem vários outros eventos úteis que podem ser utilizados, como por exemplo:&lt;br /&gt;&lt;span style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: blue; font-family: inherit; font-size: 12px; font-style: inherit; font-weight: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;windowClosed&lt;/span&gt;: Invocado quando a janela é fechada&lt;br /&gt;&lt;span style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: blue; font-family: inherit; font-size: 12px; font-style: inherit; font-weight: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;windowLostFocus&lt;/span&gt;: Invocado quando a janela perde o foco.&lt;br /&gt;&lt;span style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: blue; font-family: inherit; font-size: 12px; font-style: inherit; font-weight: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;windowIconified&lt;/span&gt;: Invocado quando a janela é minimizada.&lt;br /&gt;&lt;span style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: blue; font-family: inherit; font-size: 12px; font-style: inherit; font-weight: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;windowOpened&lt;/span&gt;: Invocado quando a janela é aberta.&lt;br /&gt;E outros mais, que podem ser consultados na API da classe&amp;nbsp;&lt;a href="http://java.sun.com/javase/6/docs/api/java/awt/event/WindowAdapter.html" style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: #cc0000; font-family: inherit; font-size: 12px; font-style: inherit; font-weight: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-decoration: none; vertical-align: baseline;" target="_blank" title="Classe WindowAdapter"&gt;WindowAdapter&lt;/a&gt;.&lt;/div&gt;&lt;div style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: inherit; font-size: 12px; font-style: inherit; font-weight: inherit; margin-bottom: 1.8em; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;Agora sobre enviar a janela para a bandeja do sistema (ao lado do reógio), que comentei no inicio do tópico, bem isso não existe nenhum programa (ao menos em java) faz isso, o que acontece é o seguinte: Em determinado momento, quando é decidido que o programa tem que ir para a bandeja do sistema, deve-se esconder a janela, isso mesmo “setVisible(false)”, desta forma a janela some da visão do usuário, porém continua ativa.&lt;br /&gt;Mas como fazer aquele icone com um menu bonitinho do lado do relógio? Para isso é preciso utilizar algumas artimanhas da classe&amp;nbsp;&lt;a href="http://java.sun.com/javase/6/docs/api/java/awt/TrayIcon.html" style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: #cc0000; font-family: inherit; font-size: 12px; font-style: inherit; font-weight: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-decoration: none; vertical-align: baseline;" target="_self" title="TrayIcon - Sun"&gt;TrayIcon&amp;nbsp;&lt;/a&gt;para colocar um icone na bandeja, mas o icone por si só não faz nada! É preciso também criar um&amp;nbsp;&lt;a href="http://java.sun.com/j2se/1.4.2/docs/api/java/awt/event/MouseAdapter.html" style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: #cc0000; font-family: inherit; font-size: 12px; font-style: inherit; font-weight: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-decoration: none; vertical-align: baseline;" target="_blank" title="MouseAdapter - Sun"&gt;MouseAdapter&lt;/a&gt;&amp;nbsp;(mouseClicked, mousePressed, etç, basta seguir o mesmo exemplo do WindowAdapter acima), para capturar o evento do mouse clicando neste icone e quando isso for feito devemos abrir um&amp;nbsp;&lt;a href="http://java.sun.com/javase/6/docs/api/javax/swing/JPopupMenu.html" style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: #cc0000; font-family: inherit; font-size: 12px; font-style: inherit; font-weight: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-decoration: none; vertical-align: baseline;" target="_blank" title="JPopupMenu - Sun"&gt;JPopupMenu&lt;/a&gt;, para abrir um menuzinho com as opções “Mostrar Janela”, “Sair”, “Etç, etç, etç”.&lt;br /&gt;Dependendo da sua criatividade e boa vontade, da até pra fazer um efeitozinho da janela sendo “enviada” para a bandeja, exemplo: Um loop que vai alterando o tamanho e a posição da janela fazendo-a ficar menor e mais próxima do relógio antes de a escondermos.&lt;/div&gt;&lt;div style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: inherit; font-size: 12px; font-style: inherit; font-weight: inherit; margin-bottom: 1.8em; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;Fazer um exemplo/modelo de uma janela sendo enviada para a bandeja do sistema está na minha lista de tarefas, em breve postarei aqui!&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6756811341323141038-4910004468777872288?l=javaerro.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javaerro.blogspot.com/feeds/4910004468777872288/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://javaerro.blogspot.com/2011/02/iniciando-secao-swing-nao-pense-em.html#comment-form' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6756811341323141038/posts/default/4910004468777872288'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6756811341323141038/posts/default/4910004468777872288'/><link rel='alternate' type='text/html' href='http://javaerro.blogspot.com/2011/02/iniciando-secao-swing-nao-pense-em.html' title='Swing – WindowListener'/><author><name>Reinaldo Elias</name><uri>http://www.blogger.com/profile/17009512606320480417</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><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6756811341323141038.post-4336061734067648515</id><published>2011-02-16T20:55:00.000-02:00</published><updated>2012-01-10T21:53:14.662-02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Web'/><category scheme='http://www.blogger.com/atom/ns#' term='Códigos'/><category scheme='http://www.blogger.com/atom/ns#' term='Dicas'/><title type='text'>JSF – actionListener, outra possibilidade…</title><content type='html'>&lt;span class="Apple-style-span" style="color: #333333; font-family: Tahoma, Verdana, Arial, sans-serif; font-size: 12px; line-height: 21px;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;div style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: inherit; font-size: 12px; font-style: inherit; font-weight: inherit; margin-bottom: 1.8em; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;&lt;span style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: red; font-family: inherit; font-size: 12px; font-style: inherit; font-weight: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;&lt;strong style="font-weight: bold;"&gt;ActionListener&amp;nbsp;&lt;/strong&gt;&lt;/span&gt;é uma outra funcionalidade (propriedade) da taglib&amp;nbsp;&lt;a href="http://codeerror.wordpress.com/2009/05/15/jsf-inicio-rapido-parte-4/" style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: #cc0000; font-family: inherit; font-size: 12px; font-style: inherit; font-weight: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-decoration: none; vertical-align: baseline;" target="_blank"&gt;&lt;span style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: blue; font-family: inherit; font-size: 12px; font-style: inherit; font-weight: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;&lt;strong style="font-weight: bold;"&gt;commandButton&lt;/strong&gt;&lt;/span&gt;&lt;/a&gt;, utilizado nas páginas JSPs.&lt;br /&gt;Apenas para recapitular, um&amp;nbsp;&lt;span style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: #3366ff; font-family: inherit; font-size: 12px; font-style: inherit; font-weight: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;commandButon&amp;nbsp;&lt;/span&gt;(taglig do JSF) simula um botão Submit do HTML, porém com inúmeras possibilidades, como por exemplo o action.&lt;br /&gt;Existe também uma outra propriedade, que serve basicamente para chamar métodos, ela se chama ActionListener, e é invocada sempre antes da propriedade Action.&lt;/div&gt;&lt;div style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: inherit; font-size: 12px; font-style: inherit; font-weight: inherit; margin-bottom: 1.8em; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;Mas qual a utilidade dela se já podemos utilizar o action?&lt;br /&gt;Inúmeras são as possibilidades para o uso das duas propriedades em conjunto,&amp;nbsp;&lt;strong style="font-weight: bold;"&gt;action&amp;nbsp;&lt;/strong&gt;e&amp;nbsp;&lt;strong style="font-weight: bold;"&gt;actionListener&lt;/strong&gt;, por exemplo, podemos definir um padrão para nosso projeto onde em todas as propriedades&amp;nbsp;&lt;strong style="font-weight: bold;"&gt;action&amp;nbsp;&lt;/strong&gt;só informamos as strings de navegação, e as chamadas de métodos devem ser feitas unicamente pelo&amp;nbsp;&lt;strong style="font-weight: bold;"&gt;actionListener&lt;/strong&gt;, tudo é válido quando não queremos ter trabalho em futuras manutenções. Outro uso para estas tags em conjunto seria chamadas diferentes para camadas diferentes (&lt;a href="http://codeerror.wordpress.com/2009/05/19/mvc-e-pra-comer/" style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: #cc0000; font-family: inherit; font-size: 12px; font-style: inherit; font-weight: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-decoration: none; vertical-align: baseline;" target="_blank"&gt;&lt;strong style="font-weight: bold;"&gt;MVC&lt;/strong&gt;&lt;/a&gt;), a propriedade&amp;nbsp;&lt;strong style="font-weight: bold;"&gt;actionListener&amp;nbsp;&lt;/strong&gt;se encarrega de chamar os métodos responsáveis pelo controle de negócios, e a propriedade&amp;nbsp;&lt;strong style="font-weight: bold;"&gt;action&amp;nbsp;&lt;/strong&gt;se encarrega da camada de visualização, enfim,&amp;nbsp;&lt;span style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: inherit; font-size: 12px; font-style: inherit; font-weight: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-decoration: underline; vertical-align: baseline;"&gt;é útil&lt;/span&gt;só depende do projeto.&lt;/div&gt;&lt;div style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: inherit; font-size: 12px; font-style: inherit; font-weight: inherit; margin-bottom: 1.8em; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;&lt;em style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: inherit; font-size: 12px; font-style: italic; font-weight: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;&lt;span style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: inherit; font-size: 12px; font-style: inherit; font-weight: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-decoration: underline; vertical-align: baseline;"&gt;&lt;strong style="font-weight: bold;"&gt;Como utilizar?&lt;/strong&gt;&lt;/span&gt;&lt;/em&gt;&lt;/div&gt;&lt;div style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: inherit; font-size: 12px; font-style: inherit; font-weight: inherit; margin-bottom: 1.8em; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;Existem três passos básicos, e tudo começa no JSP, com a propriedade do commandButton.&lt;br /&gt;&lt;strong style="font-weight: bold;"&gt;Primeiro:&lt;/strong&gt;&lt;/div&gt;&lt;blockquote style="background-attachment: initial; background-clip: initial; background-color: initial; background-image: url(http://s0.wp.com/wp-content/themes/pub/greyzed/images/quote.gif); background-origin: initial; background-position: 0% 0%; background-repeat: no-repeat no-repeat; border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: #747775; font-family: inherit; font-size: 12px; font-style: inherit; font-weight: inherit; margin-bottom: 0px; margin-left: 10px; margin-right: 30px; margin-top: 15px; min-height: 32px; padding-bottom: 0px; padding-left: 60px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;&lt;div style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: inherit; font-size: 12px; font-style: inherit; font-weight: inherit; margin-bottom: 1.8em; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;&amp;lt;h:commandButton&lt;br /&gt;action=”string_mapeada_no_faces_config_xml”&lt;br /&gt;&lt;span style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: #3366ff; font-family: inherit; font-size: 12px; font-style: inherit; font-weight: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;&lt;strong style="font-weight: bold;"&gt;actionListener=”&lt;span style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: red; font-family: inherit; font-size: 12px; font-style: inherit; font-weight: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;#{&lt;/span&gt;&lt;span style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: red; font-family: inherit; font-size: 12px; font-style: inherit; font-weight: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;meuBean.metodoActionListener&lt;/span&gt;&lt;span style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: red; font-family: inherit; font-size: 12px; font-style: inherit; font-weight: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;}&lt;/span&gt;”&amp;nbsp;&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;value=”Texto_do_botao” /&amp;gt;&lt;/div&gt;&lt;/blockquote&gt;&lt;div style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: inherit; font-size: 12px; font-style: inherit; font-weight: inherit; margin-bottom: 1.8em; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;Na tag&amp;nbsp;&lt;span style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: #3366ff; font-family: inherit; font-size: 12px; font-style: inherit; font-weight: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;commandButton&amp;nbsp;&lt;/span&gt;estamos informando que a ação (&lt;span style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: #3366ff; font-family: inherit; font-size: 12px; font-style: inherit; font-weight: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;action&lt;/span&gt;) será uma string que foi mapeada no&amp;nbsp;&lt;span style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: #3366ff; font-family: inherit; font-size: 12px; font-style: inherit; font-weight: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;&lt;em style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: inherit; font-size: 12px; font-style: italic; font-weight: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;faces-config.xml&lt;/em&gt;&lt;/span&gt;(a página jsp que será exibida quando este botão for acionado), também pode-se chamar um método cujo retorno seja alguma string mapeada no faces-config.&lt;br /&gt;Na tag&amp;nbsp;&lt;span style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: #3366ff; font-family: inherit; font-size: 12px; font-style: inherit; font-weight: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;&lt;strong style="font-weight: bold;"&gt;actionListener&amp;nbsp;&lt;/strong&gt;&lt;/span&gt;estamos invocando o metodo&amp;nbsp;&lt;span style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: red; font-family: inherit; font-size: 12px; font-style: inherit; font-weight: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;&lt;strong style="font-weight: bold;"&gt;metodoActionListener&lt;/strong&gt;&lt;/span&gt;&amp;nbsp;do nosso bean.&lt;/div&gt;&lt;div style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: inherit; font-size: 12px; font-style: inherit; font-weight: inherit; margin-bottom: 1.8em; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;É importante informar (novamente) que a propriedade actionListener&lt;span style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: inherit; font-size: 12px; font-style: inherit; font-weight: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-decoration: underline; vertical-align: baseline;"&gt;&amp;nbsp;é executada antes&lt;/span&gt;&amp;nbsp;da propriedade action, ou seja, primeiro o servidor irá executar o método que está definido na propriedade actionListener, depois que este método acabar o servidor vai prosseguir para a página ou método informado na propriedade action.&lt;/div&gt;&lt;div style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: inherit; font-size: 12px; font-style: inherit; font-weight: inherit; margin-bottom: 1.8em; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;&lt;strong style="font-weight: bold;"&gt;Segundo:&lt;/strong&gt;&lt;br /&gt;O método tem que ser void!&lt;br /&gt;Bem, não precisa ser exatamente void, se você fizer este método com algum retorno não vai dar erro, porém o retorno não vai ser utilizado pra nada, então vamos evitar código e processamento desnecessário.&lt;/div&gt;&lt;div style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: inherit; font-size: 12px; font-style: inherit; font-weight: inherit; margin-bottom: 1.8em; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;&lt;strong style="font-weight: bold;"&gt;Terceiro:&lt;/strong&gt;&lt;br /&gt;O método&amp;nbsp;&lt;strong style="font-weight: bold;"&gt;DEVE&amp;nbsp;&lt;/strong&gt;receber como parâmetro um&amp;nbsp;&lt;span style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: red; font-family: inherit; font-size: 12px; font-style: inherit; font-weight: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;&lt;strong style="font-weight: bold;"&gt;ActionEvent&lt;/strong&gt;&lt;/span&gt;, do pacote&lt;span style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: red; font-family: inherit; font-size: 12px; font-style: inherit; font-weight: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;&lt;strong style="font-weight: bold;"&gt;&amp;nbsp;javax.faces.event&lt;/strong&gt;&lt;/span&gt;.&lt;br /&gt;Este parâmetro é passado automaticamente pelo servlet durante a execução, e deve ser informado para que a comunicação entre a página e o bean ocorra através do actionListener.&lt;br /&gt;Então nosso método ficaria assim:&lt;/div&gt;&lt;blockquote style="background-attachment: initial; background-clip: initial; background-color: initial; background-image: url(http://s0.wp.com/wp-content/themes/pub/greyzed/images/quote.gif); background-origin: initial; background-position: 0% 0%; background-repeat: no-repeat no-repeat; border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: #747775; font-family: inherit; font-size: 12px; font-style: inherit; font-weight: inherit; margin-bottom: 0px; margin-left: 10px; margin-right: 30px; margin-top: 15px; min-height: 32px; padding-bottom: 0px; padding-left: 60px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;&lt;div style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: inherit; font-size: 12px; font-style: inherit; font-weight: inherit; margin-bottom: 1.8em; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;import import javax.faces.event.ActionEvent;&lt;/div&gt;&lt;div style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: inherit; font-size: 12px; font-style: inherit; font-weight: inherit; margin-bottom: 1.8em; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;public void&amp;nbsp;&lt;span style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: #3366ff; font-family: inherit; font-size: 12px; font-style: inherit; font-weight: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;metodoActionListener&lt;/span&gt;(&lt;span style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: red; font-family: inherit; font-size: 12px; font-style: inherit; font-weight: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;ActionEvent e&lt;/span&gt;){&lt;br /&gt;//alguma coisa é feita aqui.&lt;br /&gt;}&lt;/div&gt;&lt;/blockquote&gt;&lt;div style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: inherit; font-size: 12px; font-style: inherit; font-weight: inherit; margin-bottom: 1.8em; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;Agora divirta-se!&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6756811341323141038-4336061734067648515?l=javaerro.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javaerro.blogspot.com/feeds/4336061734067648515/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://javaerro.blogspot.com/2011/02/actionlistener-e-uma-outra.html#comment-form' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6756811341323141038/posts/default/4336061734067648515'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6756811341323141038/posts/default/4336061734067648515'/><link rel='alternate' type='text/html' href='http://javaerro.blogspot.com/2011/02/actionlistener-e-uma-outra.html' title='JSF – actionListener, outra possibilidade…'/><author><name>Reinaldo Elias</name><uri>http://www.blogger.com/profile/17009512606320480417</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><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6756811341323141038.post-3483451527292855602</id><published>2011-02-16T20:53:00.000-02:00</published><updated>2012-01-10T21:53:14.635-02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Web'/><category scheme='http://www.blogger.com/atom/ns#' term='Códigos'/><category scheme='http://www.blogger.com/atom/ns#' term='Dicas'/><title type='text'>web.xml – Alguns conceitos e exemplos…</title><content type='html'>&lt;span class="Apple-style-span" style="color: #333333; font-family: Tahoma, Verdana, Arial, sans-serif; font-size: 12px; line-height: 21px;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;div style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: inherit; font-size: 12px; font-style: inherit; font-weight: inherit; margin-bottom: 1.8em; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;Em várias postagens deste blog este arquivo foi mencionado, bem como algumas configurações, mas o que é este arquivo? Pra que serve?&lt;/div&gt;&lt;div style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: inherit; font-size: 12px; font-style: inherit; font-weight: inherit; margin-bottom: 1.8em; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;O arquivo web.xml está presente praticamente em todas as aplicações web – Java, não importa se você utiliza o framework A, B ou C, sempre terá um arquivo chamado web.xml dentro da pasta WEB-INF, isso por que este arquivo contém todas as informações do seu projeto. Este arquivo é lido diretamente pelo seu servidor, e é através dele que o servidor fica sabendo qual framework você está utilizando, quais os níveis de segurança que ele deve utilizar, qual o tempo de vida de seus servlets, até mesmo qual será sua página inicial.&lt;/div&gt;&lt;div style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: inherit; font-size: 12px; font-style: inherit; font-weight: inherit; margin-bottom: 1.8em; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;Nota: O arquivo web.xml é case-sensitive, ou seja AAA é diferente de aaa, então cuidado ao escrever. Por padrão, todas as tags são escrita com letras minúsculas, e hífens (-) são utilizados para separar palavras (Exemplos:&amp;nbsp;&lt;span style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: #ff8000; font-family: inherit; font-size: 12px; font-style: inherit; font-weight: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;&lt;em style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: inherit; font-size: 12px; font-style: italic; font-weight: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;error-code&lt;/em&gt;&lt;/span&gt;,&lt;span style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: #ff8000; font-family: inherit; font-size: 12px; font-style: inherit; font-weight: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;&lt;em style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: inherit; font-size: 12px; font-style: italic; font-weight: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;web-app&lt;/em&gt;&lt;/span&gt;,&lt;span style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: #ff8000; font-family: inherit; font-size: 12px; font-style: inherit; font-weight: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;&lt;em style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: inherit; font-size: 12px; font-style: italic; font-weight: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;&amp;nbsp;param-name&lt;/em&gt;&lt;/span&gt;, etç.)&lt;/div&gt;&lt;div style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: inherit; font-size: 12px; font-style: inherit; font-weight: inherit; margin-bottom: 1.8em; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;O arquivo web.xml precisa de uma inicialização, um cabeçalho padrão que define como o servidor fará a leitura do arquivo.&lt;/div&gt;&lt;blockquote style="background-attachment: initial; background-clip: initial; background-color: initial; background-image: url(http://s0.wp.com/wp-content/themes/pub/greyzed/images/quote.gif); background-origin: initial; background-position: 0% 0%; background-repeat: no-repeat no-repeat; border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: #747775; font-family: inherit; font-size: 12px; font-style: inherit; font-weight: inherit; margin-bottom: 0px; margin-left: 10px; margin-right: 30px; margin-top: 15px; min-height: 32px; padding-bottom: 0px; padding-left: 60px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;&lt;div style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: inherit; font-size: 12px; font-style: inherit; font-weight: inherit; margin-bottom: 1.8em; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;&lt;span style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: grey; font-family: inherit; font-size: 12px; font-style: inherit; font-weight: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;&amp;lt;?xml version=”1.0″ encoding=”ISO-8859-1″?&amp;gt;&lt;br /&gt;&amp;lt;!DOCTYPE web-app&amp;nbsp; PUBLIC “-/Sun Microsystems,&amp;nbsp; Inc.//DTD Web Application 2.3//EN” “http://java.sun.com/dtd/web-app_2_3.dtd”&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/blockquote&gt;&lt;div style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: inherit; font-size: 12px; font-style: inherit; font-weight: inherit; margin-bottom: 1.8em; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;Agora que o servidor sabe como interpretar este arquivo, ele precisa de um começo e de um fim, todas as tags de configuração do arquivo web.xml devem obrigatoriamente ser inseridas entre as tags&amp;nbsp;&lt;span style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: grey; font-family: inherit; font-size: 12px; font-style: inherit; font-weight: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;&amp;lt;web-app&amp;gt;&lt;/span&gt;&amp;nbsp;e&amp;nbsp;&lt;span style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: grey; font-family: inherit; font-size: 12px; font-style: inherit; font-weight: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;&amp;lt;/web-app&amp;gt;.&lt;/span&gt;&lt;/div&gt;&lt;div style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: inherit; font-size: 12px; font-style: inherit; font-weight: inherit; margin-bottom: 1.8em; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;Outra tag muito utilizada é a tag display-name, que define o título padrão do seu projeto, a mensagem informada dentro desta tag será utilizada por todas as páginas da aplicação.&lt;br /&gt;Exemplo:&amp;nbsp;&lt;em style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: inherit; font-size: 12px; font-style: italic; font-weight: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;&lt;span style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: grey; font-family: inherit; font-size: 12px; font-style: inherit; font-weight: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;&amp;lt;display-name&amp;gt;&lt;strong style="font-weight: bold;"&gt;Meu projeto!!!&lt;/strong&gt;&amp;lt;/display-name&amp;gt;&lt;/span&gt;&lt;/em&gt;&lt;/div&gt;&lt;div style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: inherit; font-size: 12px; font-style: inherit; font-weight: inherit; margin-bottom: 1.8em; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;É possível também definir alguns parâmetros universais para seu projeto, por exemplo, queremos definir uma variável global para armazenar o nome do site, e em qualquer página podemos capturar e exibir este valor. Para isso utilizamos a seguinte configuração no web-xml:&lt;/div&gt;&lt;blockquote style="background-attachment: initial; background-clip: initial; background-color: initial; background-image: url(http://s0.wp.com/wp-content/themes/pub/greyzed/images/quote.gif); background-origin: initial; background-position: 0% 0%; background-repeat: no-repeat no-repeat; border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: #747775; font-family: inherit; font-size: 12px; font-style: inherit; font-weight: inherit; margin-bottom: 0px; margin-left: 10px; margin-right: 30px; margin-top: 15px; min-height: 32px; padding-bottom: 0px; padding-left: 60px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;&lt;div style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: inherit; font-size: 12px; font-style: inherit; font-weight: inherit; margin-bottom: 1.8em; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;&lt;span style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: #888888; font-family: inherit; font-size: 12px; font-style: inherit; font-weight: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;&amp;lt;context-param&amp;gt;&lt;br /&gt;&amp;lt;param-name&amp;gt;nomeSite&amp;lt;/param-name&amp;gt;&lt;br /&gt;&amp;lt;param-value&amp;gt;Meu Projeto!&amp;lt;/param-value&amp;gt;&lt;br /&gt;&amp;lt;/context-param&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/blockquote&gt;&lt;div style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: inherit; font-size: 12px; font-style: inherit; font-weight: inherit; margin-bottom: 1.8em; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;Onde&amp;nbsp;&lt;strong style="font-weight: bold;"&gt;&lt;em style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: inherit; font-size: 12px; font-style: italic; font-weight: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;param-name&lt;/em&gt;&lt;/strong&gt;&amp;nbsp;guarda o nome do parâmetro, é esta informação que devemos solicitar em nossas páginas, e&lt;strong style="font-weight: bold;"&gt;&lt;em style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: inherit; font-size: 12px; font-style: italic; font-weight: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;param-value&lt;/em&gt;&lt;/strong&gt;&amp;nbsp;é o valor que esta variável irá nos retornar sempre que à chamarmos.&lt;br /&gt;Para recuperar esta variável em qualquer lugar da aplicação, basta utilizar o seguinte comando (retorna String):&lt;em style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: inherit; font-size: 12px; font-style: italic; font-weight: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;&lt;span style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: #404040; font-family: inherit; font-size: 12px; font-style: inherit; font-weight: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;getServletContext().getInitParameter(“&lt;strong style="font-weight: bold;"&gt;nomeSite&lt;/strong&gt;“);&lt;/span&gt;&lt;/em&gt;&lt;/div&gt;&lt;div style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: inherit; font-size: 12px; font-style: inherit; font-weight: inherit; margin-bottom: 1.8em; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;Uma coisa muito importante é a configuração dos servlets no web.xml!&lt;br /&gt;Calma, não é preciso configurar cada jsp, somente as classes que irão trabalhar de forma visual, diretamente na tela do usuário, jsps apesar de serem servlets não precisam ser configurados.&lt;/div&gt;&lt;div style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: inherit; font-size: 12px; font-style: inherit; font-weight: inherit; margin-bottom: 1.8em; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;Para configurar um servlet temos as seguintes tags:&lt;/div&gt;&lt;blockquote style="background-attachment: initial; background-clip: initial; background-color: initial; background-image: url(http://s0.wp.com/wp-content/themes/pub/greyzed/images/quote.gif); background-origin: initial; background-position: 0% 0%; background-repeat: no-repeat no-repeat; border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: #747775; font-family: inherit; font-size: 12px; font-style: inherit; font-weight: inherit; margin-bottom: 0px; margin-left: 10px; margin-right: 30px; margin-top: 15px; min-height: 32px; padding-bottom: 0px; padding-left: 60px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;&lt;div style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: inherit; font-size: 12px; font-style: inherit; font-weight: inherit; margin-bottom: 1.8em; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;&lt;span style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: #888888; font-family: inherit; font-size: 12px; font-style: inherit; font-weight: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;&amp;lt;servlet&amp;gt;&lt;br /&gt;&amp;lt;servlet-name&amp;gt;meuServlet&amp;lt;/servlet-name&amp;gt;&lt;br /&gt;&amp;lt;description&amp;gt;&amp;lt;/description&amp;gt;&lt;br /&gt;&amp;lt;servlet-class&amp;gt;com.meu.pacote.ServletTal&amp;lt;/servlet-class&amp;gt;&lt;br /&gt;&amp;lt;load-on-startup&amp;gt;1&amp;lt;/load-on-startup&amp;gt;&lt;br /&gt;&amp;lt;/servlet&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/blockquote&gt;&lt;div style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: inherit; font-size: 12px; font-style: inherit; font-weight: inherit; margin-bottom: 1.8em; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;Aqui funciona mais ou menos assim:&lt;br /&gt;As tags&amp;nbsp;&lt;strong style="font-weight: bold;"&gt;&lt;span style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: #0080c0; font-family: inherit; font-size: 12px; font-style: inherit; font-weight: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;&amp;lt;servlet&amp;gt;&lt;/span&gt;&lt;/strong&gt;&amp;nbsp;e&amp;nbsp;&lt;strong style="font-weight: bold;"&gt;&lt;span style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: #0080c0; font-family: inherit; font-size: 12px; font-style: inherit; font-weight: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;&amp;lt;/servlet&amp;gt;&lt;/span&gt;&lt;/strong&gt;&amp;nbsp;indicam que entre elas está a configuração de um servlet.&lt;br /&gt;A tag&lt;strong style="font-weight: bold;"&gt;&lt;em style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: inherit; font-size: 12px; font-style: italic; font-weight: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;&lt;span style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: red; font-family: inherit; font-size: 12px; font-style: inherit; font-weight: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;&amp;nbsp;servlet-name&lt;/span&gt;&lt;/em&gt;&lt;/strong&gt;&amp;nbsp;contém o apelido que iremos dar ao nosso servlet, e é este apelido que será invocado pela aplicação quando formos utilizar este servlet, é uma tag obrigatória.&lt;br /&gt;A tag&amp;nbsp;&lt;strong style="font-weight: bold;"&gt;&lt;em style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: inherit; font-size: 12px; font-style: italic; font-weight: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;&lt;span style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: red; font-family: inherit; font-size: 12px; font-style: inherit; font-weight: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;description&lt;/span&gt;&lt;/em&gt;&lt;/strong&gt;&amp;nbsp;é apelas ilustrativa, ela não é funcional, serve para escrevermos uma breve descrição desta servlet, muito importante para futuras manutenções, porém não é obrigatória, coloca quem quer.&lt;br /&gt;A tag&amp;nbsp;&lt;strong style="font-weight: bold;"&gt;&lt;em style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: inherit; font-size: 12px; font-style: italic; font-weight: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;&lt;span style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: red; font-family: inherit; font-size: 12px; font-style: inherit; font-weight: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;servlet-class&lt;/span&gt;&lt;/em&gt;&lt;/strong&gt;&amp;nbsp;também é obrigatória, ela indica onde está a classe propriamente dita, aqui devemos informar o caminho completo do servlet, com pacote e tudo mais.&lt;br /&gt;A tag&amp;nbsp;&lt;strong style="font-weight: bold;"&gt;&lt;em style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: inherit; font-size: 12px; font-style: italic; font-weight: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;&lt;span style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: red; font-family: inherit; font-size: 12px; font-style: inherit; font-weight: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;load-on-startup&lt;/span&gt;&lt;/em&gt;&lt;/strong&gt;&amp;nbsp;não é obrigatória, mas se você colocá-la, estará informando ao servidor que este servlet deve ser carregado sempre que o projeto for iniciado, e o número que informamos dentro desta tag indica a ordem em que ele deve ser carregado, se na aplicação quisermos que 10 servlets sejam carregadas durante a inicialização do projeto, então devemos colocar esta tag&lt;em style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: inherit; font-size: 12px; font-style: italic; font-weight: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;&amp;nbsp;load-on-startup&lt;/em&gt;&amp;nbsp;na configuração de todas as 10 servlets, e em cada uma definimos a ordem de inicialização com números inteiros. Não precisa ser exatamente na sequencia, nem começar do 1, mas tem que ser inteiros! Se várias servlets possuirem o mesmo número, o servidor carrega alguma aleatóriamente.&lt;/div&gt;&lt;div style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: inherit; font-size: 12px; font-style: inherit; font-weight: inherit; margin-bottom: 1.8em; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;É possível também chamar algum servlet diretamente pela URL, por exemplo&lt;em style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: inherit; font-size: 12px; font-style: italic; font-weight: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;&lt;span style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: grey; font-family: inherit; font-size: 12px; font-style: inherit; font-weight: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;http://localhost:8080/Projeto/Chamandoservlet&lt;/span&gt;&lt;/em&gt;. Mas para isso é necessário uma pequena configuraçãozinha…&lt;/div&gt;&lt;blockquote style="background-attachment: initial; background-clip: initial; background-color: initial; background-image: url(http://s0.wp.com/wp-content/themes/pub/greyzed/images/quote.gif); background-origin: initial; background-position: 0% 0%; background-repeat: no-repeat no-repeat; border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: #747775; font-family: inherit; font-size: 12px; font-style: inherit; font-weight: inherit; margin-bottom: 0px; margin-left: 10px; margin-right: 30px; margin-top: 15px; min-height: 32px; padding-bottom: 0px; padding-left: 60px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;&lt;div style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: inherit; font-size: 12px; font-style: inherit; font-weight: inherit; margin-bottom: 1.8em; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;&lt;span style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: #888888; font-family: inherit; font-size: 12px; font-style: inherit; font-weight: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;&amp;lt;servlet-mapping&amp;gt;&lt;br /&gt;&amp;lt;servlet-name&amp;gt;meuServlet&amp;lt;/servlet-name&amp;gt;&lt;br /&gt;&amp;lt;url-pattern&amp;gt;/ChamandoServlet&amp;lt;/url-pattern&amp;gt;&lt;br /&gt;&amp;lt;/servlet-mapping&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/blockquote&gt;&lt;div style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: inherit; font-size: 12px; font-style: inherit; font-weight: inherit; margin-bottom: 1.8em; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;A tag&amp;nbsp;&lt;strong style="font-weight: bold;"&gt;&lt;em style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: inherit; font-size: 12px; font-style: italic; font-weight: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;&lt;span style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: red; font-family: inherit; font-size: 12px; font-style: inherit; font-weight: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;url-pattern&lt;/span&gt;&lt;/em&gt;&lt;/strong&gt;&amp;nbsp;indica qual url deve ser informada para ativarmos nossa servlet.&lt;br /&gt;A tag&amp;nbsp;&lt;strong style="font-weight: bold;"&gt;&lt;em style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: inherit; font-size: 12px; font-style: italic; font-weight: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;&lt;span style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: red; font-family: inherit; font-size: 12px; font-style: inherit; font-weight: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;servlet-name&lt;/span&gt;&lt;/em&gt;&lt;/strong&gt;&amp;nbsp;indica o nome da servlet que deve ser chamada, aqui devemos informar o nome de alguma servlet mapeada no passo anterior.&lt;/div&gt;&lt;div style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: inherit; font-size: 12px; font-style: inherit; font-weight: inherit; margin-bottom: 1.8em; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;É possível também determinar o tempo de vida das sessões de sua aplicação, muito útil quando se tem uma aplicação que transporta na sessão dados importantes.&lt;/div&gt;&lt;blockquote style="background-attachment: initial; background-clip: initial; background-color: initial; background-image: url(http://s0.wp.com/wp-content/themes/pub/greyzed/images/quote.gif); background-origin: initial; background-position: 0% 0%; background-repeat: no-repeat no-repeat; border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: #747775; font-family: inherit; font-size: 12px; font-style: inherit; font-weight: inherit; margin-bottom: 0px; margin-left: 10px; margin-right: 30px; margin-top: 15px; min-height: 32px; padding-bottom: 0px; padding-left: 60px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;&lt;div style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: inherit; font-size: 12px; font-style: inherit; font-weight: inherit; margin-bottom: 1.8em; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;&lt;span style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: #888888; font-family: inherit; font-size: 12px; font-style: inherit; font-weight: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;&amp;lt;session-config&amp;gt;&lt;br /&gt;&amp;lt;session-timeout&amp;gt;10&amp;lt;/session-timeout&amp;gt;&lt;br /&gt;&amp;lt;/session-config&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/blockquote&gt;&lt;div style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: inherit; font-size: 12px; font-style: inherit; font-weight: inherit; margin-bottom: 1.8em; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;Neste caso estamos configurando o tempo das sessões em&amp;nbsp;&lt;strong style="font-weight: bold;"&gt;10 minutos&lt;/strong&gt;, ou seja, se a aplicação ficar parada por 10 minutos, as sessões são eliminadas na memória!&lt;/div&gt;&lt;div style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: inherit; font-size: 12px; font-style: inherit; font-weight: inherit; margin-bottom: 1.8em; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;Outra configuração interessante é a configuração dos&amp;nbsp;&lt;strong style="font-weight: bold;"&gt;arquivos iniciais&lt;/strong&gt;, estes arquivos são procurados sempre que alguem acessa algum diretório da sua aplicação, sem informar um arquivo, por exemplo, para acessar algum site você informa apenas&amp;nbsp;&lt;strong style="font-weight: bold;"&gt;&lt;em style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: inherit; font-size: 12px; font-style: italic; font-weight: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;www.site.com.br&lt;/em&gt;&lt;/strong&gt;&amp;nbsp;e não&amp;nbsp;&lt;strong style="font-weight: bold;"&gt;&lt;em style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: inherit; font-size: 12px; font-style: italic; font-weight: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;www.site.com.br/paginaInicial.jsp&lt;/em&gt;&lt;/strong&gt;, se os arquivos de inicialização estiverem configurados, digitando apenas&amp;nbsp;&lt;strong style="font-weight: bold;"&gt;&lt;em style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: inherit; font-size: 12px; font-style: italic; font-weight: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;www.site.com.br&lt;/em&gt;&lt;/strong&gt;&amp;nbsp;o servidor saberá que tem que mostrar a página&lt;strong style="font-weight: bold;"&gt;&lt;em style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: inherit; font-size: 12px; font-style: italic; font-weight: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;paginaInicial.jsp&lt;/em&gt;&lt;/strong&gt;.&lt;/div&gt;&lt;blockquote style="background-attachment: initial; background-clip: initial; background-color: initial; background-image: url(http://s0.wp.com/wp-content/themes/pub/greyzed/images/quote.gif); background-origin: initial; background-position: 0% 0%; background-repeat: no-repeat no-repeat; border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: #747775; font-family: inherit; font-size: 12px; font-style: inherit; font-weight: inherit; margin-bottom: 0px; margin-left: 10px; margin-right: 30px; margin-top: 15px; min-height: 32px; padding-bottom: 0px; padding-left: 60px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;&lt;div style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: inherit; font-size: 12px; font-style: inherit; font-weight: inherit; margin-bottom: 1.8em; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;&lt;span style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: #888888; font-family: inherit; font-size: 12px; font-style: inherit; font-weight: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;&amp;lt;welcome-file-list&amp;gt;&lt;br /&gt;&amp;lt;welcome-file&amp;gt;&lt;strong style="font-weight: bold;"&gt;index.jsp&lt;/strong&gt;&amp;lt;/welcome-file&amp;gt;&lt;br /&gt;&amp;lt;welcome-file&amp;gt;&lt;strong style="font-weight: bold;"&gt;paginaInicial.jsp&lt;/strong&gt;&amp;lt;/welcome-file&amp;gt;&lt;br /&gt;&amp;lt;/welcome-file-list&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/blockquote&gt;&lt;div style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: inherit; font-size: 12px; font-style: inherit; font-weight: inherit; margin-bottom: 1.8em; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;Com estas tags, sempre que um diretório da sua aplicação for chamado o servidor vai procurar dentro deste diretório um arquivo&amp;nbsp;&lt;strong style="font-weight: bold;"&gt;index.jsp&lt;/strong&gt;&amp;nbsp;ou um arquivo&amp;nbsp;&lt;strong style="font-weight: bold;"&gt;paginaInicial.jsp&lt;/strong&gt;&amp;nbsp;e exibi-los.&lt;/div&gt;&lt;div style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: inherit; font-size: 12px; font-style: inherit; font-weight: inherit; margin-bottom: 1.8em; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;Estas são as principais tags genéricas do arquivo web.xml, existem trocentas outras tags para este arquivo, porém da pra se virar com estas dicas por enquanto!&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6756811341323141038-3483451527292855602?l=javaerro.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javaerro.blogspot.com/feeds/3483451527292855602/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://javaerro.blogspot.com/2011/02/em-varias-postagens-deste-blog-este.html#comment-form' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6756811341323141038/posts/default/3483451527292855602'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6756811341323141038/posts/default/3483451527292855602'/><link rel='alternate' type='text/html' href='http://javaerro.blogspot.com/2011/02/em-varias-postagens-deste-blog-este.html' title='web.xml – Alguns conceitos e exemplos…'/><author><name>Reinaldo Elias</name><uri>http://www.blogger.com/profile/17009512606320480417</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><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6756811341323141038.post-3327833065013881821</id><published>2011-02-16T20:51:00.000-02:00</published><updated>2012-01-10T21:53:14.632-02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Web'/><category scheme='http://www.blogger.com/atom/ns#' term='Erros Java'/><title type='text'>JSF – HTTP Status 500</title><content type='html'>&lt;span class="Apple-style-span" style="color: #333333; font-family: Tahoma, Verdana, Arial, sans-serif; font-size: 12px; line-height: 21px;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;div style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: inherit; font-size: 12px; font-style: inherit; font-weight: inherit; margin-bottom: 1.8em; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;&lt;strong style="font-weight: bold;"&gt;Descrição&lt;/strong&gt;: The server encountered an internal error () that prevented it from fulfilling this request.&lt;br /&gt;&lt;strong style="font-weight: bold;"&gt;Exceção&lt;/strong&gt;:&lt;br /&gt;&lt;em style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: inherit; font-size: 12px; font-style: italic; font-weight: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;org.apache.jasper.JasperException: Can’t find bundle for base name “&lt;span style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: red; font-family: inherit; font-size: 12px; font-style: inherit; font-weight: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;xxxxxx&lt;/span&gt;“&lt;br /&gt;java.util.MissingResourceException: Can’t find bundle for base name “&lt;span style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: red; font-family: inherit; font-size: 12px; font-style: inherit; font-weight: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;xxxxxx&lt;/span&gt;“&lt;br /&gt;java.util.ResourceBundle.throwMissingResourceException&lt;br /&gt;java.util.ResourceBundle.getBundleImpl&lt;br /&gt;com.sun.faces.taglib.jsf_core.LoadBundleTag.doStartTag&lt;br /&gt;org.apache.jsp.pages.menu_jsp._jspx_meth_f_loadBundle&lt;/em&gt;&lt;/div&gt;&lt;div style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: inherit; font-size: 12px; font-style: inherit; font-weight: inherit; margin-bottom: 1.8em; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;&lt;strong style="font-weight: bold;"&gt;O que é?&lt;/strong&gt;&lt;br /&gt;&lt;em style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: inherit; font-size: 12px; font-style: italic; font-weight: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;“Erro 500, falha interna do servidor.&lt;br /&gt;Este erro ocorre sempre que o servidor não consegue interpretar algo estranho no código, todos os códigos de erro que começam com 5 (500, 501, 502, etç.) significam basicamente isto, falha ao tentar entender o código, porém o erro 500 é genérico, o servidor não conseguir realizar a solicitação do código, mas também não sabe por que, os demais erros cujo prefixo é 5, o servidor ao menos sabe por que ocorreu o erro.”&lt;/em&gt;&lt;/div&gt;&lt;div style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: inherit; font-size: 12px; font-style: inherit; font-weight: inherit; margin-bottom: 1.8em; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;&lt;strong style="font-weight: bold;"&gt;Como resolver?&lt;/strong&gt;&lt;br /&gt;Repare que as linhas da exeção indicam todas as mesmas coisas:&lt;br /&gt;&lt;strong style="font-weight: bold;"&gt;&lt;span style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: inherit; font-size: 12px; font-style: inherit; font-weight: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-decoration: underline; vertical-align: baseline;"&gt;Can’t find bundle for base name&lt;/span&gt;&lt;/strong&gt;&amp;nbsp;ou&amp;nbsp;&lt;strong style="font-weight: bold;"&gt;&lt;span style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: inherit; font-size: 12px; font-style: inherit; font-weight: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-decoration: underline; vertical-align: baseline;"&gt;throwMissingResourceException&lt;/span&gt;&lt;/strong&gt;, trazendo isso para o português ficaria mais ou menos “&lt;strong style="font-weight: bold;"&gt;Não foi possível encontrar o pacote que se chama&amp;nbsp;&lt;span style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: red; font-family: inherit; font-size: 12px; font-style: inherit; font-weight: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;XXXXX&lt;/span&gt;&lt;/strong&gt;“, ou seja, nosso pacote não foi encontrado, mas que pacote? basta reparar no que vem descrito depois de&amp;nbsp;&lt;em style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: inherit; font-size: 12px; font-style: italic; font-weight: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;Can’t find bundle for base name,&lt;/em&gt;&amp;nbsp;no caso do exemplo “&lt;strong style="font-weight: bold;"&gt;XXXXXX&lt;/strong&gt;“, este é o nome que à página está procurando, mas não o encontrou.&lt;br /&gt;Verifique se este arquivo (properties, bean, xml, etç.) realmente existe e está no local indicado, se ele realmente existir, verifique se o nome tanto do arquivo quando do caminho está correto (&lt;em style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: inherit; font-size: 12px; font-style: italic; font-weight: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;br.com.projeto.pasta1.pasta2.arquivo&lt;/em&gt;, etç.) e não se esqueça que java é&amp;nbsp;&lt;strong style="font-weight: bold;"&gt;case&lt;/strong&gt;&amp;nbsp;&lt;strong style="font-weight: bold;"&gt;sensitive&lt;/strong&gt;,&amp;nbsp;&lt;span style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: #993300; font-family: inherit; font-size: 12px; font-style: inherit; font-weight: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;minhaClasse&lt;/span&gt;&amp;nbsp;é diferente de&amp;nbsp;&lt;span style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: #993300; font-family: inherit; font-size: 12px; font-style: inherit; font-weight: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;MinhaClasse&lt;/span&gt;.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6756811341323141038-3327833065013881821?l=javaerro.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javaerro.blogspot.com/feeds/3327833065013881821/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://javaerro.blogspot.com/2011/02/descricao-server-encountered-internal.html#comment-form' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6756811341323141038/posts/default/3327833065013881821'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6756811341323141038/posts/default/3327833065013881821'/><link rel='alternate' type='text/html' href='http://javaerro.blogspot.com/2011/02/descricao-server-encountered-internal.html' title='JSF – HTTP Status 500'/><author><name>Reinaldo Elias</name><uri>http://www.blogger.com/profile/17009512606320480417</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><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6756811341323141038.post-4419631512887269893</id><published>2011-02-16T20:50:00.000-02:00</published><updated>2012-01-10T21:53:14.667-02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Web'/><category scheme='http://www.blogger.com/atom/ns#' term='Erros Java'/><title type='text'>JSF – HTTP Status 500</title><content type='html'>&lt;span class="Apple-style-span" style="color: #333333; font-family: Tahoma, Verdana, Arial, sans-serif; font-size: 12px; line-height: 21px;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;div style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: inherit; font-size: 12px; font-style: inherit; font-weight: inherit; margin-bottom: 1.8em; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;&lt;strong style="font-weight: bold;"&gt;Descrição&lt;/strong&gt;: The server encountered an internal error () that prevented it from fulfilling this request.&lt;br /&gt;&lt;strong style="font-weight: bold;"&gt;Exceção&lt;/strong&gt;:&lt;br /&gt;&lt;em style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: inherit; font-size: 12px; font-style: italic; font-weight: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;javax.servlet.ServletException: Error testing property&amp;nbsp;&lt;span style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: red; font-family: inherit; font-size: 12px; font-style: inherit; font-weight: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;‘XXXX’&lt;/span&gt;&amp;nbsp;in bean of type null javax.faces.webapp.FacesServlet.service&lt;br /&gt;javax.faces.el.PropertyNotFoundException: Error testing property&amp;nbsp;&lt;span style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: red; font-family: inherit; font-size: 12px; font-style: inherit; font-weight: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;‘XXXX’&lt;/span&gt;&amp;nbsp;in bean of type null&lt;/em&gt;&lt;/div&gt;&lt;div style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: inherit; font-size: 12px; font-style: inherit; font-weight: inherit; margin-bottom: 1.8em; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;&lt;strong style="font-weight: bold;"&gt;O que é?&lt;/strong&gt;&lt;br /&gt;&lt;em style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: inherit; font-size: 12px; font-style: italic; font-weight: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;“Erro 500, falha interna do servidor.&lt;br /&gt;Este erro ocorre sempre que o servidor não consegue interpretar algo estranho no código, todos os códigos de erro que começam com 5 (500, 501, 502, etç.) significam basicamente isto, falha ao tentar entender o código, porém o erro 500 é genérico, o servidor não conseguir realizar a solicitação do código, mas também não sabe por que, os demais erros cujo prefixo é 5, o servidor ao menos sabe por que ocorreu o erro.”&lt;/em&gt;&lt;/div&gt;&lt;div style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: inherit; font-size: 12px; font-style: inherit; font-weight: inherit; margin-bottom: 1.8em; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;&lt;strong style="font-weight: bold;"&gt;Como resolver?&lt;/strong&gt;&lt;br /&gt;As mensagens de erro falam&amp;nbsp;&lt;strong style="font-weight: bold;"&gt;“a propriedade&amp;nbsp;&lt;span style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: red; font-family: inherit; font-size: 12px; font-style: inherit; font-weight: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;XXXX&lt;/span&gt;&amp;nbsp;do bean&lt;span style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: red; font-family: inherit; font-size: 12px; font-style: inherit; font-weight: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;&amp;nbsp;NON ECZISTE&lt;/span&gt;!”&lt;/strong&gt;Neste caso, existe um campo (input) na página que faz referência à uma variável de algum bean.&lt;/div&gt;&lt;div style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: inherit; font-size: 12px; font-style: inherit; font-weight: inherit; margin-bottom: 1.8em; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;Primeiro verifique se a variávei existe, e se está com mesmo nome (não esqueça do&amp;nbsp;&lt;strong style="font-weight: bold;"&gt;case&lt;/strong&gt;&amp;nbsp;&lt;strong style="font-weight: bold;"&gt;sensitive&lt;/strong&gt;!).&lt;br /&gt;Se o nome da variável estiver correto, verifique se ela possui os métodos gets e sets.&lt;br /&gt;Se os métodos estiverem corretos, procure no&amp;nbsp;&lt;strong style="font-weight: bold;"&gt;faces-config.xml&lt;/strong&gt;&amp;nbsp;se o bean está corretamente mapeado.&lt;br /&gt;Se tudo isso estiver certo, só resta uma alternativa, verifique no seu&amp;nbsp;&lt;strong style="font-weight: bold;"&gt;JSP&lt;/strong&gt;&amp;nbsp;se o nome do bean está exatamente igual ao alias dele definido no faces-config.&lt;br /&gt;E boa sorte!&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6756811341323141038-4419631512887269893?l=javaerro.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javaerro.blogspot.com/feeds/4419631512887269893/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://javaerro.blogspot.com/2011/02/descricao-server-encountered-internal_16.html#comment-form' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6756811341323141038/posts/default/4419631512887269893'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6756811341323141038/posts/default/4419631512887269893'/><link rel='alternate' type='text/html' href='http://javaerro.blogspot.com/2011/02/descricao-server-encountered-internal_16.html' title='JSF – HTTP Status 500'/><author><name>Reinaldo Elias</name><uri>http://www.blogger.com/profile/17009512606320480417</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><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6756811341323141038.post-410693716219788669</id><published>2011-02-16T20:40:00.000-02:00</published><updated>2012-01-10T21:53:14.656-02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Web'/><category scheme='http://www.blogger.com/atom/ns#' term='Erros Java'/><title type='text'>Tomcat – HTTP Status 404</title><content type='html'>&lt;span class="Apple-style-span" style="color: #333333; font-family: Tahoma, Verdana, Arial, sans-serif; font-size: 12px; line-height: 21px;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;div style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: inherit; font-size: 12px; font-style: inherit; font-weight: inherit; margin-bottom: 1.8em; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;&lt;strong style="font-weight: bold;"&gt;Tipo&lt;/strong&gt;: Status report&lt;br /&gt;&lt;strong style="font-weight: bold;"&gt;Mensagem&lt;/strong&gt;: [[Nome do Projeto]]&lt;br /&gt;&lt;strong style="font-weight: bold;"&gt;Descrição&lt;/strong&gt;: The requested resource [[&lt;span style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: red; font-family: inherit; font-size: 12px; font-style: inherit; font-weight: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;Nome do Projeto&lt;/span&gt;]] is not available.&lt;br /&gt;&lt;strong style="font-weight: bold;"&gt;Exceção&lt;/strong&gt;:&lt;br /&gt;Não é exibida exceção no navegador, mas ela pode ser encontrada nos logs do tomcat, pelo console onde o tomcat está sendo iniciado.&lt;/div&gt;&lt;div style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: inherit; font-size: 12px; font-style: inherit; font-weight: inherit; margin-bottom: 1.8em; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;&lt;em style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: inherit; font-size: 12px; font-style: italic; font-weight: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;LifecycleException: Container StandardContext [[&lt;span style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: red; font-family: inherit; font-size: 12px; font-style: inherit; font-weight: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;Nome do Projeto&lt;/span&gt;]] has not been started.&lt;br /&gt;org.apache.catalina.core.StandardContext&lt;br /&gt;org.apache.catalina.core.ContainerBase&lt;br /&gt;org.apache.catalina.core.StandardHost&lt;br /&gt;org.apache.catalina.core.ContainerBase&lt;br /&gt;org.apache.catalina.core.StandardEngine&lt;br /&gt;org.apache.catalina.startup.Catalina&lt;br /&gt;java.lang.IllegalArgumentException: Document base [[&lt;span style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: red; font-family: inherit; font-size: 12px; font-style: inherit; font-weight: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;Endereço&lt;/span&gt;]]&amp;nbsp; does not exist or is not a readable directory.&lt;br /&gt;org.apache.naming.resources.FileDirContext&lt;/em&gt;&lt;br /&gt;&lt;strong style="font-weight: bold;"&gt;O que é?&lt;br /&gt;&lt;em style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: inherit; font-size: 12px; font-style: italic; font-weight: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;404&lt;/em&gt;&lt;/strong&gt;&amp;nbsp;é um erro do tipo “&lt;em style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: inherit; font-size: 12px; font-style: italic; font-weight: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;client error&lt;/em&gt;“, ou seja, “&lt;em style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: inherit; font-size: 12px; font-style: italic; font-weight: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;erro no cliente&lt;/em&gt;“, basicamente o cliente (computador do usuário) fez alguma solicitação incorreta, neste caso (404) o cliente tentou solicitar algo que não existe, por exemplo, digitou uma URL que o servidor não conhece.&lt;/div&gt;&lt;div style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: inherit; font-size: 12px; font-style: inherit; font-weight: inherit; margin-bottom: 1.8em; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;&lt;strong style="font-weight: bold;"&gt;Como resolver?&lt;/strong&gt;&lt;br /&gt;1º – Verifique se digitou a URL corretamente, observe o&amp;nbsp;&lt;strong style="font-weight: bold;"&gt;case sensitive&lt;/strong&gt;!&lt;br /&gt;2º – Se o problema não é “&lt;em style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: inherit; font-size: 12px; font-style: italic; font-weight: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;de usuário&lt;/em&gt;” pode ser a configuração do projeto, então verifique os logs do tomcat no console, se estiver aparecendo mensagens como as descritas à cima, “&lt;strong style="font-weight: bold;"&gt;&lt;em style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: inherit; font-size: 12px; font-style: italic; font-weight: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;Document base&amp;nbsp;&lt;span style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: red; font-family: inherit; font-size: 12px; font-style: inherit; font-weight: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;XXX&amp;nbsp;&lt;/span&gt;does not exist…&lt;/em&gt;&lt;/strong&gt;” ou “&lt;strong style="font-weight: bold;"&gt;&lt;em style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: inherit; font-size: 12px; font-style: italic; font-weight: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;StandardContext has not been started&lt;/em&gt;&lt;/strong&gt;” é provável que a configuração do arquivo&amp;nbsp;&lt;strong style="font-weight: bold;"&gt;server.xml&lt;/strong&gt;&amp;nbsp;esteja incorreta.&lt;br /&gt;Se seu tomcat está com os contextos configurados no server.xml, procure o contexto da sua aplicação “&lt;span style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: #3366ff; font-family: inherit; font-size: 12px; font-style: inherit; font-weight: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;&lt;em style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: inherit; font-size: 12px; font-style: italic; font-weight: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;&amp;lt;context path=”/Projeto” docBase=”algum_lugar”&amp;gt;&lt;/em&gt;&lt;/span&gt;” e verifique se o&amp;nbsp;&lt;strong style="font-weight: bold;"&gt;&lt;span style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: red; font-family: inherit; font-size: 12px; font-style: inherit; font-weight: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;docBase&lt;/span&gt;&lt;/strong&gt;&amp;nbsp;está realmente apontando para a pasta certa da sua aplicação.&lt;br /&gt;A pasta certa é aquela que abriga o&amp;nbsp;&lt;strong style="font-weight: bold;"&gt;WEB-INF&lt;/strong&gt;, por exemplo, a pasta WEB-INF está dentro da pasta WebContent, então no docBase deve estar algo como “&lt;strong style="font-weight: bold;"&gt;&lt;span style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: #3366ff; font-family: inherit; font-size: 12px; font-style: inherit; font-weight: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;c:\blábláblá\Projeto\WebContent\&lt;/span&gt;&lt;/strong&gt;“.&lt;br /&gt;Se os seus contextos estão configurados via&amp;nbsp;&lt;strong style="font-weight: bold;"&gt;&lt;span style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: red; font-family: inherit; font-size: 12px; font-style: inherit; font-weight: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;catalina&lt;/span&gt;&lt;/strong&gt;, então abra o xml que está com o nome do seu projeto dentro da pasta Catalina (&lt;span style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: #3366ff; font-family: inherit; font-size: 12px; font-style: inherit; font-weight: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;&lt;strong style="font-weight: bold;"&gt;exemplo: PastaDoTomcat \ conf \ Catalina \ localhost \ Projeto.xml&lt;/strong&gt;&lt;/span&gt;) e proceda da mesma forma como no arquivo server.xml, verifique se o caminho descrito no docBase do contexto está correto.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6756811341323141038-410693716219788669?l=javaerro.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javaerro.blogspot.com/feeds/410693716219788669/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://javaerro.blogspot.com/2011/02/tipo-status-report-mensagem-nome-do.html#comment-form' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6756811341323141038/posts/default/410693716219788669'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6756811341323141038/posts/default/410693716219788669'/><link rel='alternate' type='text/html' href='http://javaerro.blogspot.com/2011/02/tipo-status-report-mensagem-nome-do.html' title='Tomcat – HTTP Status 404'/><author><name>Reinaldo Elias</name><uri>http://www.blogger.com/profile/17009512606320480417</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><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6756811341323141038.post-5195486825176278234</id><published>2011-02-16T20:11:00.000-02:00</published><updated>2012-01-10T21:53:14.694-02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Web'/><category scheme='http://www.blogger.com/atom/ns#' term='Dicas'/><title type='text'>Container, o que é isso?</title><content type='html'>&lt;span class="Apple-style-span" style="color: #333333; font-family: Tahoma, Verdana, Arial, sans-serif; font-size: 12px; line-height: 21px;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;div style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: inherit; font-size: 12px; font-style: inherit; font-weight: inherit; margin-bottom: 1.8em; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;&lt;strong style="font-weight: bold;"&gt;Container&lt;/strong&gt;&amp;nbsp;é uma especie de caçamba, uma caixa de metal grande, aquela parte de tras de um caminhão “baú”.&lt;/div&gt;&lt;div style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: inherit; font-size: 12px; font-style: inherit; font-weight: inherit; margin-bottom: 1.8em; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;Exemplo de container:&lt;/div&gt;&lt;div align="center" style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: inherit; font-size: 12px; font-style: inherit; font-weight: inherit; margin-bottom: 1.8em; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;&lt;img alt="Imagem de um container de carga de mercadorias, para facilitar o entendimento do que é um container em programação" height="145" src="http://codeerror.background.googlepages.com/container_1.gif" style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: inherit; font-size: 12px; font-style: inherit; font-weight: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; max-width: 100%; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;" width="194" /&gt;&lt;/div&gt;&lt;div style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: inherit; font-size: 12px; font-style: inherit; font-weight: inherit; margin-bottom: 1.8em; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;Mas o que seria um container&amp;nbsp;&lt;strong style="font-weight: bold;"&gt;&lt;span style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: inherit; font-size: 12px; font-style: inherit; font-weight: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-decoration: underline; vertical-align: baseline;"&gt;em programação&lt;/span&gt;&lt;/strong&gt;?&lt;/div&gt;&lt;div style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: inherit; font-size: 12px; font-style: inherit; font-weight: inherit; margin-bottom: 1.8em; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;Seria basicamente, em orientação à objetos,&amp;nbsp;&lt;strong style="font-weight: bold;"&gt;um objeto que contém outros objetos&lt;/strong&gt;, exatamente como o container demonstrado acima, um objeto grande que contém outros menores e os transporta de um lugar para outro, os objetos do container (de programação) podem ser incluídos ou excluídos em tempo de execução!&lt;/div&gt;&lt;div style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: inherit; font-size: 12px; font-style: inherit; font-weight: inherit; margin-bottom: 1.8em; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;Agora falando mais especificamente em&amp;nbsp;&lt;strong style="font-weight: bold;"&gt;Java&lt;/strong&gt;!&lt;br /&gt;Um container possui os componentes da aplicação, como por exemplo os&amp;nbsp;&lt;strong style="font-weight: bold;"&gt;servlets&lt;/strong&gt;&amp;nbsp;(JSPs são servlets!), e quando você digita no navegador&amp;nbsp;&lt;em style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: inherit; font-size: 12px; font-style: italic; font-weight: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;&lt;span style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: #0080c0; font-family: inherit; font-size: 12px; font-style: inherit; font-weight: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;http://localhost:8080/MeuProjeto&lt;/span&gt;&lt;/em&gt;, o servidor não passa a solicitação para o JSP diretamente, ele passa o controle para o Container e este se encarrega de administrar o ciclo de vida desse servlet, a segurança, o suporte à exibição na tela, etç.&lt;/div&gt;&lt;div style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: inherit; font-size: 12px; font-style: inherit; font-weight: inherit; margin-bottom: 1.8em; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;Alguns exemplos de Servlet Conteiners (containers web):&lt;/div&gt;&lt;div style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: inherit; font-size: 12px; font-style: inherit; font-weight: inherit; margin-bottom: 1.8em; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;&lt;strong style="font-weight: bold;"&gt;&lt;span style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: inherit; font-size: 12px; font-style: inherit; font-weight: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-decoration: underline; vertical-align: baseline;"&gt;&lt;span style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: red; font-family: inherit; font-size: 12px; font-style: inherit; font-weight: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;Comerciais:&lt;/span&gt;&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;&lt;strong style="font-weight: bold;"&gt;&lt;span style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: inherit; font-size: 12px; font-style: inherit; font-weight: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-decoration: underline; vertical-align: baseline;"&gt;&lt;span style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: red; font-family: inherit; font-size: 12px; font-style: inherit; font-weight: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/strong&gt;JBoss&lt;br /&gt;Oracle Application Server&lt;br /&gt;WebSphere (IBM)&lt;br /&gt;Netweaver (SAP)&lt;br /&gt;JRun (Adobe)&lt;br /&gt;GlassFish (Código Aberto)&lt;/div&gt;&lt;div style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: inherit; font-size: 12px; font-style: inherit; font-weight: inherit; margin-bottom: 1.8em; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;&lt;strong style="font-weight: bold;"&gt;&lt;span style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: inherit; font-size: 12px; font-style: inherit; font-weight: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-decoration: underline; vertical-align: baseline;"&gt;&lt;span style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: #008040; font-family: inherit; font-size: 12px; font-style: inherit; font-weight: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;Não Comerciais (Free!!!)&lt;/span&gt;&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;Tomcat&lt;br /&gt;Jetty&lt;br /&gt;Winstone&lt;br /&gt;Apache Gerônimo&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6756811341323141038-5195486825176278234?l=javaerro.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javaerro.blogspot.com/feeds/5195486825176278234/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://javaerro.blogspot.com/2011/02/container-uma-especie-de-cacamba-uma.html#comment-form' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6756811341323141038/posts/default/5195486825176278234'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6756811341323141038/posts/default/5195486825176278234'/><link rel='alternate' type='text/html' href='http://javaerro.blogspot.com/2011/02/container-uma-especie-de-cacamba-uma.html' title='Container, o que é isso?'/><author><name>Reinaldo Elias</name><uri>http://www.blogger.com/profile/17009512606320480417</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><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6756811341323141038.post-5499224443583828492</id><published>2011-02-16T20:07:00.000-02:00</published><updated>2012-01-10T21:53:14.709-02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Códigos'/><category scheme='http://www.blogger.com/atom/ns#' term='Dicas'/><title type='text'>Lançar exceções quando quiser</title><content type='html'>&lt;span class="Apple-style-span" style="color: #333333; font-family: Tahoma, Verdana, Arial, sans-serif; font-size: 12px; line-height: 21px;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;div style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: inherit; font-size: 12px; font-style: inherit; font-weight: inherit; margin-bottom: 1.8em; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;Algumas vezes criamos um programa/site/portal com muita dificuldade e o fazemos funcionar perfeitamente na máquina de desenvolvimento e até mesmo em servidores de teste, mas quando chega no cliente algo acontece, o fantasma de&amp;nbsp;&lt;span style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: #333333; font-family: inherit; font-size: 12px; font-style: inherit; font-weight: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;&lt;em style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: inherit; font-size: 12px; font-style: italic; font-weight: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;Murph&amp;nbsp;&lt;/em&gt;&lt;/span&gt;aparece para fazer suas leis entrarem em cena e mensagens de erro do servidor pipocam na tela, como por exemplo o odiado erro 500…&lt;/div&gt;&lt;div style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: inherit; font-size: 12px; font-style: inherit; font-weight: inherit; margin-bottom: 1.8em; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;Nessas horas algumas das coisas mais comuns:&lt;/div&gt;&lt;div style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: inherit; font-size: 12px; font-style: inherit; font-weight: inherit; margin-bottom: 1.8em; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;&lt;span style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: #eeeeee; font-family: inherit; font-size: 12px; font-style: inherit; font-weight: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;&lt;em style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: inherit; font-size: 12px; font-style: italic; font-weight: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;“Por hora não é necessário resolver a situação”&lt;/em&gt;&lt;/span&gt;, ou.&lt;br /&gt;&lt;span style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: #eeeeee; font-family: inherit; font-size: 12px; font-style: inherit; font-weight: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;&lt;em style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: inherit; font-size: 12px; font-style: italic; font-weight: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;“Quem configura o servidor não está conseguindo acertar os ponteiros do servidor”&lt;/em&gt;&lt;/span&gt;, ou.&lt;br /&gt;&lt;span style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: #eeeeee; font-family: inherit; font-size: 12px; font-style: inherit; font-weight: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;&lt;em style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: inherit; font-size: 12px; font-style: italic; font-weight: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;“Após explicar ao usuário que isso não é um erro, ele pediu para alterar a tela “&lt;/em&gt;&lt;/span&gt;, ou.&lt;br /&gt;Qualquer outra coisa que impeça o reparo deste erro e nos forçam simplesmente a tratá-lo.&lt;/div&gt;&lt;div style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: inherit; font-size: 12px; font-style: inherit; font-weight: inherit; margin-bottom: 1.8em; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;Como é um erro 500, muitas vezes ele nem passa por classes, então nossos&lt;span style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: #333333; font-family: inherit; font-size: 12px; font-style: inherit; font-weight: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;&lt;em style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: inherit; font-size: 12px; font-style: italic; font-weight: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;&lt;strong style="font-weight: bold;"&gt;&amp;nbsp;try-catch&lt;/strong&gt;&lt;/em&gt;&lt;/span&gt;&amp;nbsp;podem não surtir efeito.&lt;br /&gt;Pode-se então mapear códigos de erro, como explicado&amp;nbsp;&lt;a href="http://codeerror.wordpress.com/2009/05/23/jsf-configurar-pagina-padrao-de-erro/" style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: #cc0000; font-family: inherit; font-size: 12px; font-style: inherit; font-weight: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-decoration: none; vertical-align: baseline;" target="_blank"&gt;NESTE&lt;/a&gt;&amp;nbsp;post, facilitando muito a vida, porém surge uma questão.&lt;/div&gt;&lt;div style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: inherit; font-size: 12px; font-style: inherit; font-weight: inherit; margin-bottom: 1.8em; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;Como podemos simular erros, como o&lt;span style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: red; font-family: inherit; font-size: 12px; font-style: inherit; font-weight: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;&lt;strong style="font-weight: bold;"&gt;&amp;nbsp;erro 500&lt;/strong&gt;&lt;/span&gt;?&lt;/div&gt;&lt;div style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: inherit; font-size: 12px; font-style: inherit; font-weight: inherit; margin-bottom: 1.8em; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;A resposta vem de forma fácil, basta criar um JSP com uma simples linha de comando e o erro informado nesta linha irá aparecer na tela.&lt;/div&gt;&lt;blockquote style="background-attachment: initial; background-clip: initial; background-color: initial; background-image: url(http://s0.wp.com/wp-content/themes/pub/greyzed/images/quote.gif); background-origin: initial; background-position: 0% 0%; background-repeat: no-repeat no-repeat; border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: #747775; font-family: inherit; font-size: 12px; font-style: inherit; font-weight: inherit; margin-bottom: 0px; margin-left: 10px; margin-right: 30px; margin-top: 15px; min-height: 32px; padding-bottom: 0px; padding-left: 60px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;&lt;div style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: inherit; font-size: 12px; font-style: inherit; font-weight: inherit; margin-bottom: 1.8em; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;&lt;span style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: grey; font-family: inherit; font-size: 12px; font-style: inherit; font-weight: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;&lt;em style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: inherit; font-size: 12px; font-style: italic; font-weight: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;&lt;span class="postbody" style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: inherit; font-size: 12px; font-style: inherit; font-weight: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;&amp;lt;%@ page import=”javax.servlet.http.HttpServletResponse” %&amp;gt;&lt;br /&gt;&amp;lt;%&lt;br /&gt;response.sendError(HttpServletResponse.SC_INTERNAL_SERVER_ERROR,”");&lt;br /&gt;%&amp;gt;&lt;/span&gt;&lt;/em&gt;&lt;/span&gt;&lt;/div&gt;&lt;/blockquote&gt;&lt;div style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: inherit; font-size: 12px; font-style: inherit; font-weight: inherit; margin-bottom: 1.8em; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;Neste exemplo estamos simulando o erro 500, indicado pela String&amp;nbsp;&lt;span style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: red; font-family: inherit; font-size: 12px; font-style: inherit; font-weight: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;&lt;strong style="font-weight: bold;"&gt;HttpServletResponse.SC_INTERNAL_SERVER_ERROR&lt;/strong&gt;&lt;/span&gt;.&lt;/div&gt;&lt;div style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: inherit; font-size: 12px; font-style: inherit; font-weight: inherit; margin-bottom: 1.8em; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;&lt;a href="http://en.wikipedia.org/wiki/List_of_HTTP_status_codes" style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: #cc0000; font-family: inherit; font-size: 12px; font-style: inherit; font-weight: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-decoration: none; vertical-align: baseline;" target="_blank"&gt;Neste link&lt;/a&gt;&amp;nbsp;da wikipédia contém uma listagem com todos códigos de erro HTTP, com a descrição em inglês.&lt;br /&gt;&lt;a href="http://java.sun.com/javaee/5/docs/api/javax/servlet/http/HttpServletResponse.html" style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: #cc0000; font-family: inherit; font-size: 12px; font-style: inherit; font-weight: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-decoration: none; vertical-align: baseline;" target="_blank"&gt;Neste link&lt;/a&gt;&amp;nbsp;da Sun, documentação da linguagem J2EE, estão descritas todas as Strings de erro que podem ser utilizadas pelo response.sendError().&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6756811341323141038-5499224443583828492?l=javaerro.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javaerro.blogspot.com/feeds/5499224443583828492/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://javaerro.blogspot.com/2011/02/algumas-vezes-criamos-um.html#comment-form' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6756811341323141038/posts/default/5499224443583828492'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6756811341323141038/posts/default/5499224443583828492'/><link rel='alternate' type='text/html' href='http://javaerro.blogspot.com/2011/02/algumas-vezes-criamos-um.html' title='Lançar exceções quando quiser'/><author><name>Reinaldo Elias</name><uri>http://www.blogger.com/profile/17009512606320480417</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><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6756811341323141038.post-8606372753156198904</id><published>2011-02-16T20:03:00.000-02:00</published><updated>2012-01-10T21:53:14.769-02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Web'/><category scheme='http://www.blogger.com/atom/ns#' term='Dicas'/><title type='text'>MVC - É pra comer?</title><content type='html'>&lt;span class="Apple-style-span" style="color: #333333; font-family: Tahoma, Verdana, Arial, sans-serif; font-size: 12px; line-height: 21px;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;div style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: inherit; font-size: 12px; font-style: inherit; font-weight: inherit; margin-bottom: 1.8em; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;&lt;strong style="font-weight: bold;"&gt;Model-View-Controler&lt;/strong&gt;, ou&amp;nbsp;&lt;strong style="font-weight: bold;"&gt;MVC&lt;/strong&gt;&amp;nbsp;para os mais íntimos, isso não é uma linguagem, não é um framework, tão pouco uma IDE, mas então o que pode ser?&lt;/div&gt;&lt;div style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: inherit; font-size: 12px; font-style: inherit; font-weight: inherit; margin-bottom: 1.8em; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;MVC é um padrão de desenvolvimento para projetos, principalmente, de grande porte cuja manutenção/mudança é constante, trabalhando com este padrão de desenvolvimento que separa o projeto em três partes, a manutenção e até o desenvolvimento&amp;nbsp;ficam mais fáceis.&amp;nbsp;&lt;/div&gt;&lt;div style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: inherit; font-size: 12px; font-style: inherit; font-weight: inherit; margin-bottom: 1.8em; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;Como funciona?&lt;/div&gt;&lt;div style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: inherit; font-size: 12px; font-style: inherit; font-weight: inherit; margin-bottom: 1.8em; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;&lt;strong style="font-weight: bold;"&gt;Model&lt;/strong&gt;&amp;nbsp;– Camada de negócios.&lt;br /&gt;&lt;strong style="font-weight: bold;"&gt;View&lt;/strong&gt;&amp;nbsp;– Camada de visualização.&lt;br /&gt;&lt;strong style="font-weight: bold;"&gt;Controller&lt;/strong&gt;&amp;nbsp;– Camada de controle e validações.&lt;/div&gt;&lt;div style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: inherit; font-size: 12px; font-style: inherit; font-weight: inherit; margin-bottom: 1.8em; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;&lt;em style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: inherit; font-size: 12px; font-style: italic; font-weight: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;&lt;span style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: grey; font-family: inherit; font-size: 12px; font-style: inherit; font-weight: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;Nota: Apesar de muitas biografias dizerem que não existe “&lt;strong style="font-weight: bold;"&gt;camadas&lt;/strong&gt;” na MVC, estas também não informam o que realmente é esta separação, porém a separação destas partes do projeto são, a grosso modo, realmente separadas em camadas, que é a definição utilizada aqui.&lt;/span&gt;&lt;/em&gt;&amp;nbsp;&lt;/div&gt;&lt;div style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: inherit; font-size: 12px; font-style: inherit; font-weight: inherit; margin-bottom: 1.8em; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;Durante a programação do projeto, deve-se separar todas as classes, jsps, imagens, xmls e demais arquivos em algumas camadas, em se tratando de Java, podemos trabalhar com pacotes.&amp;nbsp;&lt;/div&gt;&lt;div style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: inherit; font-size: 12px; font-style: inherit; font-weight: inherit; margin-bottom: 1.8em; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;&lt;span style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: #333399; font-family: inherit; font-size: 12px; font-style: inherit; font-weight: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;MODEL, tudo aquilo que se refere à regras de negócio deve ser guardado no(s) pacote(s) da camada model&lt;/span&gt;&lt;span style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: #333399; font-family: inherit; font-size: 12px; font-style: inherit; font-weight: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;.&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #6aa84f;"&gt;&lt;span style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: inherit; font-size: 12px; font-style: inherit; font-weight: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;&lt;/span&gt;&lt;span style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: inherit; font-size: 12px; font-style: inherit; font-weight: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;&lt;span style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: inherit; font-size: 12px; font-style: inherit; font-weight: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;VIEW, tudo que for relativo à tela, o que o usuário pode enxergar pertence à camada view e deve ser colocado no(s) pacote(s) referente à view, no caso dos jsps e imagens não á necessidade pois é subentendido que mesmo não estando em pacotes, todos os arquivos jsp, HTML, javascript, css, etç pertencem a esta camada.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: green; font-family: inherit; font-size: 12px; font-style: inherit; font-weight: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;&lt;span style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: #333300; font-family: inherit; font-size: 12px; font-style: inherit; font-weight: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: maroon; font-family: inherit; font-size: 12px; font-style: inherit; font-weight: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;CONTROLLER, aqui é onde a porca torce o rabo, ou melhor, onde a discussão se inicia, uma das práticas da MVC diz que esta camada serve para fazer a comunicação entre a VIEW e a MODEL, porém uma outra prática da MVC informa que esta camada serve apenas para efetuar as validações da camada VIEW.&lt;/span&gt;&lt;/div&gt;&lt;div style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: inherit; font-size: 12px; font-style: inherit; font-weight: inherit; margin-bottom: 1.8em; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;&amp;nbsp;A partir deste ponto, irei falar sobre duas formas diferentes de MVC, pois hoje em dia existe uma vasta discussão que nunca chega ao fim sobre a “verdadeira” forma da MVC. Por tanto irei comentar sobre as duas variações desta arquitetura, para você poder ter uma noção de como funciona e procurar realmente o que quer pra você.&lt;/div&gt;&lt;div style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: inherit; font-size: 12px; font-style: inherit; font-weight: inherit; margin-bottom: 1.8em; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; vertical-align: baseline;"&gt;Primeiro, irei apontar a camada controller como uma comunicação entre as outras duas camadas, segue imagem.&lt;/div&gt;&lt;div style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: inherit; font-size: 12px; font-style: inherit; font-weight: inherit; margin-bottom: 1.8em; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: center; vertical-align: baseline;"&gt;&lt;img alt="Imagem exemplo MVC: Passando pela camada controller" border="1" class="aligncenter" src="http://codeerror.background.googlepages.com/MVC-1.JPG" style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; display: block; font-family: inherit; font-size: 12px; font-style: inherit; font-weight: inherit; margin-bottom: 0px; margin-left: auto; margin-right: auto; margin-top: 0px; max-width: 100%; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;" /&gt;&lt;/div&gt;&lt;div style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: inherit; font-size: 12px; font-style: inherit; font-weight: inherit; margin-bottom: 1.8em; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; vertical-align: baseline;"&gt;Neste caso, é possível notar que a camada view não enxerga de forma alguma a camada model.&lt;/div&gt;&lt;div style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: inherit; font-size: 12px; font-style: inherit; font-weight: inherit; margin-bottom: 1.8em; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;Vejamos no exemplo:&lt;br /&gt;Em um cadastro on-line, possuímos as páginas e imagens que o cliente pode ver e tocar com o mouse (view), temos as validações (controller) e após isso temos as regras de negócio e gravação em banco de dados (model).&lt;br /&gt;Neste mesmo exemplo, o cliente preenche todos os dados na tela e clica em no botão de envio do formulário, neste momento todos os dados são repassados para a camada controller, as classes desta camada fazem a verificação dos dados informados, verificam se estão corretos, fazem a validação do CPF, etç. Se algo estiver errado o controller&amp;nbsp;retorna uma mensagem de erro para a camada view, que a exibe na tela, se estiver tudo correto&amp;nbsp;a camada controller&amp;nbsp;repassa estas informações para a camada model.&lt;br /&gt;A camada model, recebe as informações e verifica se o cliente é menor de idade (regra de negócio), em caso positivo estas informações são armazenadas na tabela X, caso negativo (cliente maior de idade) as informações são armazenadas na tabela Y.&lt;/div&gt;&lt;div style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: inherit; font-size: 12px; font-style: inherit; font-weight: inherit; margin-bottom: 1.8em; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;Existe também a definição que inutiliza a camada Controller, informando que esta só serve para realizar validações, é um suporte da camada view.&lt;/div&gt;&lt;div style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: inherit; font-size: 12px; font-style: inherit; font-weight: inherit; margin-bottom: 1.8em; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: center; vertical-align: baseline;"&gt;&lt;img alt="Imagem exemplo MVC: inutilizando a camada controller" border="1" class="aligncenter" src="http://codeerror.background.googlepages.com/MVC-2.JPG" style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; display: block; font-family: inherit; font-size: 12px; font-style: inherit; font-weight: inherit; margin-bottom: 0px; margin-left: auto; margin-right: auto; margin-top: 0px; max-width: 100%; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;" /&gt;&lt;/div&gt;&lt;div style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: inherit; font-size: 12px; font-style: inherit; font-weight: inherit; margin-bottom: 1.8em; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;No mesmo exemplo do cadastro citado acima, quando o cliente clica no botão de envio do formulário, este é repassado à camada controller que efetua as validações e repassa para a camada model, até aqui está igual a definição anterior, porém, em uma tela que não existe validação de formulário, por exemplo “escolha as opções A ou B”, como não há validação neste caso (validação de campo nulo pode ser realizada direto no jsp/html) ao ser acionado o botão de ação, a camada view repassa as informações diretamente para a camada model.&lt;/div&gt;&lt;div style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: inherit; font-size: 12px; font-style: inherit; font-weight: inherit; margin-bottom: 1.8em; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;Nesta definição possuímos duas estradas virtuais, na imagem representada pela seta vermelha (ida e volta passando pelo controller) e pela seta verde (ida e volta sem passar pelo controller).&lt;/div&gt;&lt;div style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: inherit; font-size: 12px; font-style: inherit; font-weight: inherit; margin-bottom: 1.8em; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;Mas como fazer as separações?&lt;/div&gt;&lt;div style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: inherit; font-size: 12px; font-style: inherit; font-weight: inherit; margin-bottom: 1.8em; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;Se fosse fácil não teria graça…As camadas têm que ser muito bem planejadas, e deve ser impressa a seguinte frase “Não importar classes e métodos do pacote xx.xxx.xxx pelo pacote xx.xxx.xxx”, esta frase deve ser colada na mesa de cada desenvolvedor…&lt;/div&gt;&lt;div style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: inherit; font-size: 12px; font-style: inherit; font-weight: inherit; margin-bottom: 1.8em; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;Como MVC é um padrão de desenvolvimento, não existe uma barreira que impeça você de, por exemplo, fazer a validação do CPF na camada de modelo, ou efetuar uma gravação em banco de dados na camada de visualização, porém se a MVC for seguida muito tempo e sangue serão economizados e casamentos poderão ser mantidos (viradas de noite prestando manutenção em código pode causar divórcio).&lt;/div&gt;&lt;div style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: inherit; font-size: 12px; font-style: inherit; font-weight: inherit; margin-bottom: 1.8em; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;Algumas práticas em Java podem ser utilizadas para ajudar a manter o padrão de desenvolvimento, por exemplo a utilização de Implements e classes Abstratas, que bloqueiam a utilização em determinadas ocasiões, os modificadores de acesso Private, Public e Protected devem ser utilizados com sabedoria também, para restringir e/ou permitir acesso as classes e métodos corretos.&lt;/div&gt;&lt;div style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: inherit; font-size: 12px; font-style: inherit; font-weight: inherit; margin-bottom: 1.8em; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;Agora, com a faca e o queijo na mão, boa sorte na implementação da MVC&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6756811341323141038-8606372753156198904?l=javaerro.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javaerro.blogspot.com/feeds/8606372753156198904/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://javaerro.blogspot.com/2011/02/model-view-controler-ou-mvc-os-mais.html#comment-form' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6756811341323141038/posts/default/8606372753156198904'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6756811341323141038/posts/default/8606372753156198904'/><link rel='alternate' type='text/html' href='http://javaerro.blogspot.com/2011/02/model-view-controler-ou-mvc-os-mais.html' title='MVC - É pra comer?'/><author><name>Reinaldo Elias</name><uri>http://www.blogger.com/profile/17009512606320480417</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><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6756811341323141038.post-5180852079546080973</id><published>2011-02-16T19:53:00.000-02:00</published><updated>2012-01-10T21:53:14.691-02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Swing'/><category scheme='http://www.blogger.com/atom/ns#' term='Códigos'/><category scheme='http://www.blogger.com/atom/ns#' term='Dicas'/><title type='text'>Swing: Ícone na area de notificação</title><content type='html'>&lt;span class="Apple-style-span" style="color: #333333; font-family: Tahoma, Verdana, Arial, sans-serif; font-size: 12px; line-height: 21px;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;div style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: inherit; font-size: 12px; font-style: inherit; font-weight: inherit; margin-bottom: 1.8em; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;&lt;strong style="font-weight: bold;"&gt;&lt;span style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: inherit; font-size: 12px; font-style: inherit; font-weight: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-decoration: underline; vertical-align: baseline;"&gt;&lt;span style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: red; font-family: inherit; font-size: 12px; font-style: inherit; font-weight: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;Aviso: Este post é quase um livro!&lt;/span&gt;&lt;/span&gt;&lt;/strong&gt;&lt;/div&gt;&lt;div style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: inherit; font-size: 12px; font-style: inherit; font-weight: inherit; margin-bottom: 1.8em; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;Algum tempo atraz, mas precisamente na matéria sobre&amp;nbsp;&lt;a href="http://codeerror.wordpress.com/2009/07/03/swing-windowlistener/" style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: #cc0000; font-family: inherit; font-size: 12px; font-style: inherit; font-weight: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-decoration: none; vertical-align: baseline;" target="_blank" title="WindowListener"&gt;WindowListener&lt;/a&gt;, comentei sobre a lógica necessária para enviar uma Janela&amp;nbsp;&lt;em style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: inherit; font-size: 12px; font-style: italic; font-weight: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;Swing&lt;/em&gt;&amp;nbsp;para a bandeja do sistema, ou Area de Notificação, ou SystemTray, ou como você gosta de chamar aquele cantinho inferior direito, ao lado do relógio, onde fica um aglomerado de ícones que as vezes nem conhecemos.&lt;/div&gt;&lt;div style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: inherit; font-size: 12px; font-style: inherit; font-weight: inherit; margin-bottom: 1.8em; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;Teoricamente tudo é facil, o difícil é apenas implementar a solução ao nosso projeto já finalizado…&lt;br /&gt;Mas vamos parar no pensamento que “tudo é facil”, e seguir em frente com este tutorial que ficou bem grande, e é quase todo código!&lt;/div&gt;&lt;div style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: inherit; font-size: 12px; font-style: inherit; font-weight: inherit; margin-bottom: 1.8em; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;Primeiro vamos à lógica necessária:&lt;br /&gt;Se você deseja enviar uma janela para a bandeja do sistema, desista, você nunca vai conseguir isso (ao menos em java), missão impossível.&lt;br /&gt;O que podemos fazer é uma pequena “gambiarra”, invisível aos olhos de meros mortais.&lt;br /&gt;Essa “POG” consiste em:&lt;/div&gt;&lt;div style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: inherit; font-size: 12px; font-style: inherit; font-weight: inherit; margin-bottom: 1.8em; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;&lt;span style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: teal; font-family: inherit; font-size: 12px; font-style: inherit; font-weight: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;&lt;strong style="font-weight: bold;"&gt;1º&lt;/strong&gt;&amp;nbsp;– Capturar o evento “&lt;strong style="font-weight: bold;"&gt;MINIMIZAR&lt;/strong&gt;” ou “&lt;strong style="font-weight: bold;"&gt;FECHAR&lt;/strong&gt;” ou qualquer outra porcaria que você queira.&lt;br /&gt;&lt;strong style="font-weight: bold;"&gt;2º&lt;/strong&gt;&amp;nbsp;– Deixar a janela que foi minimizada&amp;nbsp;&lt;strong style="font-weight: bold;"&gt;INVISÍVEL&lt;/strong&gt;!&lt;br /&gt;&lt;strong style="font-weight: bold;"&gt;3º&lt;/strong&gt;&amp;nbsp;– Instanciar uma nova classe que coloca um icone bonitinho ao lado do relógio.&lt;br /&gt;&lt;strong style="font-weight: bold;"&gt;4º&lt;/strong&gt;&amp;nbsp;– Colocar um menu flutuante nesse icone (Menu Popup)&lt;br /&gt;&lt;strong style="font-weight: bold;"&gt;5º&lt;/strong&gt;&amp;nbsp;– Capturar os eventos de click nos itens deste menu&lt;br /&gt;&lt;strong style="font-weight: bold;"&gt;6º&amp;nbsp;&lt;/strong&gt;- Caso o item selecionado seja “Abrir novamente a jenela principal” deve-se deixar o frame principal&amp;nbsp;&lt;strong style="font-weight: bold;"&gt;VISIVEL&lt;/strong&gt;novamente e “&lt;strong style="font-weight: bold;"&gt;matar&lt;/strong&gt;” as variáveis utilizadas para criar o icone bonitinho ao lado do relógio.&lt;/span&gt;&lt;/div&gt;&lt;div style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: inherit; font-size: 12px; font-style: inherit; font-weight: inherit; margin-bottom: 1.8em; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;&lt;span style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: teal; font-family: inherit; font-size: 12px; font-style: inherit; font-weight: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;&lt;/span&gt;&lt;/div&gt;&lt;a name='more'&gt;&lt;/a&gt;&lt;br /&gt;&lt;div style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: inherit; font-size: 12px; font-style: inherit; font-weight: inherit; margin-bottom: 1.8em; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;Viu que legal? Não se envia uma janela para o relógio, mas engana-se o usuário deixando a janela invisível e criando OUTRA janela sem corpo, apenas com um icone e um menu Popup!&lt;/div&gt;&lt;div style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: inherit; font-size: 12px; font-style: inherit; font-weight: inherit; margin-bottom: 1.8em; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;Agora que já estamos com a faca e o queijo na mão, vamos ao que interessa!&lt;/div&gt;&lt;div style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: inherit; font-size: 12px; font-style: inherit; font-weight: inherit; margin-bottom: 1.8em; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;Antes de mais nada, precisamos de uma janela, para que esta seja minimizada, então vamos criar uma classe chamada “&lt;em style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: inherit; font-size: 12px; font-style: italic; font-weight: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;Janelinha&lt;/em&gt;“, conforme exemplo:&lt;/div&gt;&lt;div style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: inherit; font-size: 12px; font-style: inherit; font-weight: inherit; margin-bottom: 1.8em; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 30px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;&lt;span style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: purple; font-family: inherit; font-size: 12px; font-style: inherit; font-weight: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;&lt;strong style="font-weight: bold;"&gt;package&lt;/strong&gt;&amp;nbsp;&lt;/span&gt;br.teste.area.notificacao;&lt;/div&gt;&lt;div style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: inherit; font-size: 12px; font-style: inherit; font-weight: inherit; margin-bottom: 1.8em; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 30px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;&lt;strong style="font-weight: bold;"&gt;&lt;span style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: purple; font-family: inherit; font-size: 12px; font-style: inherit; font-weight: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;import&lt;/span&gt;&lt;/strong&gt;&amp;nbsp;java.awt.event.WindowAdapter;&lt;br /&gt;&lt;strong style="font-weight: bold;"&gt;&lt;span style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: purple; font-family: inherit; font-size: 12px; font-style: inherit; font-weight: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;import&lt;/span&gt;&lt;/strong&gt;&amp;nbsp;java.awt.event.WindowEvent;&lt;br /&gt;&lt;strong style="font-weight: bold;"&gt;&lt;span style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: purple; font-family: inherit; font-size: 12px; font-style: inherit; font-weight: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;import&lt;/span&gt;&lt;/strong&gt;&amp;nbsp;javax.swing.WindowConstants;&lt;/div&gt;&lt;div style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: inherit; font-size: 12px; font-style: inherit; font-weight: inherit; margin-bottom: 1.8em; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 30px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;&lt;strong style="font-weight: bold;"&gt;&lt;span style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: purple; font-family: inherit; font-size: 12px; font-style: inherit; font-weight: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;public class&lt;/span&gt;&lt;/strong&gt;&amp;nbsp;Janelinha extends javax.swing.JFrame {&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&lt;strong style="font-weight: bold;"&gt;&lt;span style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: purple; font-family: inherit; font-size: 12px; font-style: inherit; font-weight: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;static&lt;/span&gt;&lt;/strong&gt;&amp;nbsp;AreaNotificacao&amp;nbsp;&lt;span style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: #3366ff; font-family: inherit; font-size: 12px; font-style: inherit; font-weight: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;an&amp;nbsp;&lt;/span&gt;=&amp;nbsp;&lt;strong style="font-weight: bold;"&gt;&lt;span style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: purple; font-family: inherit; font-size: 12px; font-style: inherit; font-weight: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;null&lt;/span&gt;&lt;/strong&gt;;&lt;br /&gt;&amp;nbsp;&lt;strong style="font-weight: bold;"&gt;&lt;span style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: purple; font-family: inherit; font-size: 12px; font-style: inherit; font-weight: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;static&lt;/span&gt;&lt;/strong&gt;&amp;nbsp;Janelinha&amp;nbsp;&lt;span style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: #3366ff; font-family: inherit; font-size: 12px; font-style: inherit; font-weight: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;j&lt;/span&gt;&amp;nbsp;=&amp;nbsp;&lt;strong style="font-weight: bold;"&gt;&lt;span style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: purple; font-family: inherit; font-size: 12px; font-style: inherit; font-weight: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;null&lt;/span&gt;&lt;/strong&gt;;&lt;/div&gt;&lt;div style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: inherit; font-size: 12px; font-style: inherit; font-weight: inherit; margin-bottom: 1.8em; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 30px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;&amp;nbsp;&lt;strong style="font-weight: bold;"&gt;&lt;span style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: purple; font-family: inherit; font-size: 12px; font-style: inherit; font-weight: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;public static void&lt;/span&gt;&lt;/strong&gt;&amp;nbsp;main(String[] args) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: #3366ff; font-family: inherit; font-size: 12px; font-style: inherit; font-weight: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;j&lt;/span&gt;&amp;nbsp;=&amp;nbsp;&lt;strong style="font-weight: bold;"&gt;&lt;span style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: purple; font-family: inherit; font-size: 12px; font-style: inherit; font-weight: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;new&lt;/span&gt;&lt;/strong&gt;&amp;nbsp;Janelinha();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: #3366ff; font-family: inherit; font-size: 12px; font-style: inherit; font-weight: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;j&lt;/span&gt;.setVisible(&lt;span style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: purple; font-family: inherit; font-size: 12px; font-style: inherit; font-weight: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;&lt;strong style="font-weight: bold;"&gt;true&lt;/strong&gt;&lt;/span&gt;);&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&lt;strong style="font-weight: bold;"&gt;&lt;span style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: purple; font-family: inherit; font-size: 12px; font-style: inherit; font-weight: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;public&lt;/span&gt;&lt;/strong&gt;&amp;nbsp;Janelinha() {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;strong style="font-weight: bold;"&gt;&lt;span style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: purple; font-family: inherit; font-size: 12px; font-style: inherit; font-weight: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;super&lt;/span&gt;&lt;/strong&gt;(&lt;span style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: blue; font-family: inherit; font-size: 12px; font-style: inherit; font-weight: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;“Oi, me minimiza…”&lt;/span&gt;);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; constroiJanelinha();&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&lt;strong style="font-weight: bold;"&gt;&lt;span style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: purple; font-family: inherit; font-size: 12px; font-style: inherit; font-weight: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;private void&lt;/span&gt;&lt;/strong&gt;&amp;nbsp;constroiJanelinha() {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&lt;strong style="font-weight: bold;"&gt;&lt;span style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: purple; font-family: inherit; font-size: 12px; font-style: inherit; font-weight: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;try&lt;/span&gt;&lt;/strong&gt;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp; setDefaultCloseOperation(WindowConstants.&lt;em style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: inherit; font-size: 12px; font-style: italic; font-weight: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;&lt;span style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: blue; font-family: inherit; font-size: 12px; font-style: inherit; font-weight: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;DISPOSE_ON_CLOSE&lt;/span&gt;&lt;/em&gt;);&lt;br /&gt;&amp;nbsp;&amp;nbsp; setLocationRelativeTo(&lt;strong style="font-weight: bold;"&gt;&lt;span style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: purple; font-family: inherit; font-size: 12px; font-style: inherit; font-weight: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;null&lt;/span&gt;&lt;/strong&gt;);&lt;br /&gt;&amp;nbsp;&amp;nbsp; pack();&lt;br /&gt;&amp;nbsp;&amp;nbsp; setSize(&lt;span style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: #ff6600; font-family: inherit; font-size: 12px; font-style: inherit; font-weight: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;200&lt;/span&gt;,&amp;nbsp;&lt;span style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: #ff6600; font-family: inherit; font-size: 12px; font-style: inherit; font-weight: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;50&lt;/span&gt;);&lt;br /&gt;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;em style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: inherit; font-size: 12px; font-style: italic; font-weight: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;&lt;span style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: #339966; font-family: inherit; font-size: 12px; font-style: inherit; font-weight: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;//Listener que capitura o evento “minimizar”&lt;/span&gt;&lt;/em&gt;&amp;nbsp;&amp;nbsp; addWindowListener(&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;strong style="font-weight: bold;"&gt;&lt;span style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: purple; font-family: inherit; font-size: 12px; font-style: inherit; font-weight: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;new&lt;/span&gt;&lt;/strong&gt;&amp;nbsp;WindowAdapter(){&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;strong style="font-weight: bold;"&gt;&lt;span style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: purple; font-family: inherit; font-size: 12px; font-style: inherit; font-weight: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;public void&lt;/span&gt;&lt;/strong&gt;&amp;nbsp;windowIconified(WindowEvent evnt){&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: #339966; font-family: inherit; font-size: 12px; font-style: inherit; font-weight: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;&lt;em style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: inherit; font-size: 12px; font-style: italic; font-weight: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;//Deixa a janela atual (Janelinha) invisível!&lt;/em&gt;&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; setVisible(&lt;strong style="font-weight: bold;"&gt;&lt;span style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: purple; font-family: inherit; font-size: 12px; font-style: inherit; font-weight: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;false&lt;/span&gt;&lt;/strong&gt;);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: #339966; font-family: inherit; font-size: 12px; font-style: inherit; font-weight: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;&lt;em style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: inherit; font-size: 12px; font-style: italic; font-weight: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;//Instancia a classe responsável pelo ícone na área de notificação.&lt;/em&gt;&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; getAreaNotificacao();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp; );&lt;br /&gt;&amp;nbsp;&lt;br /&gt;&amp;nbsp; }&amp;nbsp;&lt;strong style="font-weight: bold;"&gt;&lt;span style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: purple; font-family: inherit; font-size: 12px; font-style: inherit; font-weight: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;catch&lt;/span&gt;&lt;/strong&gt;&amp;nbsp;(Exception e) {&lt;br /&gt;&amp;nbsp;&amp;nbsp; e.printStackTrace();&lt;br /&gt;&amp;nbsp; }&lt;br /&gt;}&lt;/div&gt;&lt;div style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: inherit; font-size: 12px; font-style: inherit; font-weight: inherit; margin-bottom: 1.8em; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;&lt;strong style="font-weight: bold;"&gt;&lt;span style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: purple; font-family: inherit; font-size: 12px; font-style: inherit; font-weight: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;void&lt;/span&gt;&lt;/strong&gt;&amp;nbsp;getAreaNotificacao(){&lt;br /&gt;&amp;nbsp;&amp;nbsp;&lt;strong style="font-weight: bold;"&gt;&lt;span style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: purple; font-family: inherit; font-size: 12px; font-style: inherit; font-weight: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;if&lt;/span&gt;&lt;/strong&gt;(&lt;span style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: #3366ff; font-family: inherit; font-size: 12px; font-style: inherit; font-weight: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;an&lt;/span&gt;&amp;nbsp;==&amp;nbsp;&lt;strong style="font-weight: bold;"&gt;&lt;span style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: purple; font-family: inherit; font-size: 12px; font-style: inherit; font-weight: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;null&lt;/span&gt;&lt;/strong&gt;){&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: #3366ff; font-family: inherit; font-size: 12px; font-style: inherit; font-weight: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;an&lt;/span&gt;&amp;nbsp;=&amp;nbsp;&lt;strong style="font-weight: bold;"&gt;&lt;span style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: purple; font-family: inherit; font-size: 12px; font-style: inherit; font-weight: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;new&lt;/span&gt;&lt;/strong&gt;&amp;nbsp;AreaNotificacao();&lt;br /&gt;&amp;nbsp; }&lt;br /&gt;}&lt;/div&gt;&lt;div style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: inherit; font-size: 12px; font-style: inherit; font-weight: inherit; margin-bottom: 1.8em; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 30px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;}&lt;/div&gt;&lt;div style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: inherit; font-size: 12px; font-style: inherit; font-weight: inherit; margin-bottom: 1.8em; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;Esta é a classe principal que na verdade é nossa coadjuvante, só servirá para ser minimizada.&lt;br /&gt;Repare no WindowListener, o que ele faz…&lt;br /&gt;No WindowListener, estamos deixando o frame invisível&amp;nbsp;&lt;em style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: inherit; font-size: 12px; font-style: italic; font-weight: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;&lt;span style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: #993300; font-family: inherit; font-size: 12px; font-style: inherit; font-weight: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;“setVisible(false)”&lt;/span&gt;&lt;/em&gt;, na verdade ele continua vivinho da silva, a memória ocupada, o processamento em alta, execução de processos à todo vapor, porém não está visivel.&lt;br /&gt;Após esta poção da invisibilidade, está sendo chamado o método interno&amp;nbsp;&lt;span style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: #993300; font-family: inherit; font-size: 12px; font-style: inherit; font-weight: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;&lt;em style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: inherit; font-size: 12px; font-style: italic; font-weight: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;“getAreaNotificacao()”&lt;/em&gt;&lt;/span&gt;, e sua única finalidade é instanciar a classe&amp;nbsp;&lt;strong style="font-weight: bold;"&gt;“AreaNotificacao”&lt;/strong&gt;, e é nesta classe que a mágica vai acontecer!&lt;/div&gt;&lt;div style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: inherit; font-size: 12px; font-style: inherit; font-weight: inherit; margin-bottom: 1.8em; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;&lt;strong style="font-weight: bold;"&gt;IMPORTANTE&lt;/strong&gt;: Repare também que as duas principais variáveis desta classe são&amp;nbsp;&lt;strong style="font-weight: bold;"&gt;static&lt;/strong&gt;! Mas por que isso? A resposta na prática está logo abaixo, a resposta na teoria é simples, essas duas variáveis serão&amp;nbsp;&lt;strong style="font-weight: bold;"&gt;&lt;span style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: inherit; font-size: 12px; font-style: inherit; font-weight: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-decoration: underline; vertical-align: baseline;"&gt;únicas&lt;/span&gt;&lt;/strong&gt;&amp;nbsp;em toda a aplicação, e precisam ser acessadas por outra janela (a classe AreaNotificacao), quando a classe AreaNotificacao for acessar estes objetos, precisamos ter certeza que eles são os mesmos objetos/variáveis/referências utilizados pela classe Janelinha, caso contrário a mágica não será tão boa.&lt;/div&gt;&lt;div style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: inherit; font-size: 12px; font-style: inherit; font-weight: inherit; margin-bottom: 1.8em; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;Agora, vamos à classe secundária que na verdade é nossa protagonista.&lt;/div&gt;&lt;div style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: inherit; font-size: 12px; font-style: inherit; font-weight: inherit; margin-bottom: 1.8em; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 30px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;&lt;span style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: purple; font-family: inherit; font-size: 12px; font-style: inherit; font-weight: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;&lt;strong style="font-weight: bold;"&gt;package&lt;/strong&gt;&amp;nbsp;&lt;/span&gt;br.teste.area.notificacao;&lt;/div&gt;&lt;div style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: inherit; font-size: 12px; font-style: inherit; font-weight: inherit; margin-bottom: 1.8em; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 30px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;&lt;strong style="font-weight: bold;"&gt;&lt;span style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: purple; font-family: inherit; font-size: 12px; font-style: inherit; font-weight: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;import&lt;/span&gt;&lt;/strong&gt;&amp;nbsp;java.awt.AWTException;&lt;br /&gt;&lt;strong style="font-weight: bold;"&gt;&lt;span style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: purple; font-family: inherit; font-size: 12px; font-style: inherit; font-weight: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;import&lt;/span&gt;&lt;/strong&gt;&amp;nbsp;java.awt.Image;&lt;br /&gt;&lt;strong style="font-weight: bold;"&gt;&lt;span style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: purple; font-family: inherit; font-size: 12px; font-style: inherit; font-weight: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;import&lt;/span&gt;&lt;/strong&gt;&amp;nbsp;java.awt.MenuItem;&lt;br /&gt;&lt;strong style="font-weight: bold;"&gt;&lt;span style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: purple; font-family: inherit; font-size: 12px; font-style: inherit; font-weight: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;import&lt;/span&gt;&lt;/strong&gt;&amp;nbsp;java.awt.PopupMenu;&lt;br /&gt;&lt;strong style="font-weight: bold;"&gt;&lt;span style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: purple; font-family: inherit; font-size: 12px; font-style: inherit; font-weight: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;import&lt;/span&gt;&lt;/strong&gt;&amp;nbsp;java.awt.SystemTray;&lt;br /&gt;&lt;strong style="font-weight: bold;"&gt;&lt;span style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: purple; font-family: inherit; font-size: 12px; font-style: inherit; font-weight: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;import&lt;/span&gt;&lt;/strong&gt;&amp;nbsp;java.awt.TrayIcon;&lt;br /&gt;&lt;strong style="font-weight: bold;"&gt;&lt;span style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: purple; font-family: inherit; font-size: 12px; font-style: inherit; font-weight: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;import&lt;/span&gt;&lt;/strong&gt;&amp;nbsp;java.awt.event.ActionEvent;&lt;br /&gt;&lt;strong style="font-weight: bold;"&gt;&lt;span style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: purple; font-family: inherit; font-size: 12px; font-style: inherit; font-weight: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;import&lt;/span&gt;&lt;/strong&gt;&amp;nbsp;java.awt.event.ActionListener;&lt;br /&gt;&lt;strong style="font-weight: bold;"&gt;&lt;span style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: purple; font-family: inherit; font-size: 12px; font-style: inherit; font-weight: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;import&lt;/span&gt;&lt;/strong&gt;&amp;nbsp;java.net.URL;&lt;/div&gt;&lt;div style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: inherit; font-size: 12px; font-style: inherit; font-weight: inherit; margin-bottom: 1.8em; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 30px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;&lt;strong style="font-weight: bold;"&gt;&lt;span style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: purple; font-family: inherit; font-size: 12px; font-style: inherit; font-weight: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;import&lt;/span&gt;&lt;/strong&gt;&amp;nbsp;javax.swing.ImageIcon;&lt;br /&gt;&lt;strong style="font-weight: bold;"&gt;&lt;span style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: purple; font-family: inherit; font-size: 12px; font-style: inherit; font-weight: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;import&lt;/span&gt;&lt;/strong&gt;&amp;nbsp;javax.swing.JFrame;&lt;br /&gt;&lt;strong style="font-weight: bold;"&gt;&lt;span style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: purple; font-family: inherit; font-size: 12px; font-style: inherit; font-weight: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;import&lt;/span&gt;&lt;/strong&gt;&amp;nbsp;javax.swing.JOptionPane;&lt;/div&gt;&lt;div style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: inherit; font-size: 12px; font-style: inherit; font-weight: inherit; margin-bottom: 1.8em; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 30px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;&lt;/div&gt;&lt;div style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: inherit; font-size: 12px; font-style: inherit; font-weight: inherit; margin-bottom: 1.8em; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 30px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;&lt;strong style="font-weight: bold;"&gt;&lt;span style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: purple; font-family: inherit; font-size: 12px; font-style: inherit; font-weight: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;public class&lt;/span&gt;&lt;/strong&gt;&amp;nbsp;AreaNotificacao {&lt;/div&gt;&lt;div style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: inherit; font-size: 12px; font-style: inherit; font-weight: inherit; margin-bottom: 1.8em; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 30px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;&amp;nbsp;&lt;span style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: #339966; font-family: inherit; font-size: 12px; font-style: inherit; font-weight: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;&lt;em style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: inherit; font-size: 12px; font-style: italic; font-weight: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;//Criação da icone, instancia da classe java java.awt.TrayIcon&lt;/em&gt;&lt;/span&gt;&amp;nbsp;&lt;strong style="font-weight: bold;"&gt;&lt;span style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: purple; font-family: inherit; font-size: 12px; font-style: inherit; font-weight: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;static&lt;/span&gt;&lt;/strong&gt;&amp;nbsp;TrayIcon&amp;nbsp;&lt;span style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: blue; font-family: inherit; font-size: 12px; font-style: inherit; font-weight: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;&lt;em style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: inherit; font-size: 12px; font-style: italic; font-weight: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;trayIcon&lt;/em&gt;&amp;nbsp;&lt;/span&gt;=&amp;nbsp;&lt;strong style="font-weight: bold;"&gt;&lt;span style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: purple; font-family: inherit; font-size: 12px; font-style: inherit; font-weight: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;null&lt;/span&gt;&lt;/strong&gt;;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&lt;em style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: inherit; font-size: 12px; font-style: italic; font-weight: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;&lt;span style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: #339966; font-family: inherit; font-size: 12px; font-style: inherit; font-weight: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;//Referencia à instancia “J” da classe Janelinha, para acesso da bandeja.&lt;/span&gt;&lt;/em&gt;&amp;nbsp;&lt;strong style="font-weight: bold;"&gt;&lt;span style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: purple; font-family: inherit; font-size: 12px; font-style: inherit; font-weight: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;static&lt;/span&gt;&lt;/strong&gt;&amp;nbsp;Janelinha&amp;nbsp;&lt;em style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: inherit; font-size: 12px; font-style: italic; font-weight: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;&lt;span style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: blue; font-family: inherit; font-size: 12px; font-style: inherit; font-weight: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;pai&lt;/span&gt;&lt;/em&gt;&amp;nbsp;= Janelinha.&lt;em style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: inherit; font-size: 12px; font-style: italic; font-weight: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;&lt;span style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: blue; font-family: inherit; font-size: 12px; font-style: inherit; font-weight: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;j&lt;/span&gt;&lt;/em&gt;;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&lt;em style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: inherit; font-size: 12px; font-style: italic; font-weight: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;&lt;span style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: #339966; font-family: inherit; font-size: 12px; font-style: inherit; font-weight: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;//Construtor, que será chamado quando a classe for instanciada&lt;/span&gt;&lt;/em&gt;&lt;br /&gt;AreaNotificacao() {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&lt;strong style="font-weight: bold;"&gt;&lt;span style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: purple; font-family: inherit; font-size: 12px; font-style: inherit; font-weight: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;super&lt;/span&gt;&lt;/strong&gt;();&lt;br /&gt;&amp;nbsp; criaAreaNotificacao();&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&lt;strong style="font-weight: bold;"&gt;&lt;span style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: purple; font-family: inherit; font-size: 12px; font-style: inherit; font-weight: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;static void&lt;/span&gt;&lt;/strong&gt;&amp;nbsp;criaAreaNotificacao(){&lt;br /&gt;&lt;br /&gt;&lt;em style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: inherit; font-size: 12px; font-style: italic; font-weight: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;&lt;span style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: #339966; font-family: inherit; font-size: 12px; font-style: inherit; font-weight: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;&amp;nbsp; //Verifica se não é possível trabalhar com “TrayIcon”&lt;/span&gt;&lt;/em&gt;&amp;nbsp;&amp;nbsp;&lt;strong style="font-weight: bold;"&gt;&lt;span style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: purple; font-family: inherit; font-size: 12px; font-style: inherit; font-weight: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;if&lt;/span&gt;&lt;/strong&gt;&amp;nbsp;(!SystemTray.isSupported()) {&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; System.&lt;em style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: inherit; font-size: 12px; font-style: italic; font-weight: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;&lt;span style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: blue; font-family: inherit; font-size: 12px; font-style: inherit; font-weight: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;out&lt;/span&gt;&lt;/em&gt;.println(&lt;span style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: blue; font-family: inherit; font-size: 12px; font-style: inherit; font-weight: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;“Não dá pra fazer, nem tenta!”&lt;/span&gt;);&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;&lt;strong style="font-weight: bold;"&gt;&lt;span style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: purple; font-family: inherit; font-size: 12px; font-style: inherit; font-weight: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;return&lt;/span&gt;&lt;/strong&gt;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&lt;em style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: inherit; font-size: 12px; font-style: italic; font-weight: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;&lt;span style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: #339966; font-family: inherit; font-size: 12px; font-style: inherit; font-weight: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;//Instanciação de um objeto java.awt.PopupMenu&lt;/span&gt;&lt;/em&gt;&amp;nbsp;&amp;nbsp;&lt;strong style="font-weight: bold;"&gt;&lt;span style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: purple; font-family: inherit; font-size: 12px; font-style: inherit; font-weight: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;final&lt;/span&gt;&lt;/strong&gt;&amp;nbsp;PopupMenu pop =&amp;nbsp;&lt;strong style="font-weight: bold;"&gt;&lt;span style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: purple; font-family: inherit; font-size: 12px; font-style: inherit; font-weight: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;new&lt;/span&gt;&lt;/strong&gt;&amp;nbsp;PopupMenu();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&lt;em style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: inherit; font-size: 12px; font-style: italic; font-weight: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;&lt;span style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: #339966; font-family: inherit; font-size: 12px; font-style: inherit; font-weight: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;//Instanciação do objeto java.awt.SystemTray;&lt;/span&gt;&lt;/em&gt;&amp;nbsp;&amp;nbsp;&lt;strong style="font-weight: bold;"&gt;&lt;span style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: purple; font-family: inherit; font-size: 12px; font-style: inherit; font-weight: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;final&lt;/span&gt;&lt;/strong&gt;&amp;nbsp;SystemTray tray = SystemTray.getSystemTray();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&lt;em style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: inherit; font-size: 12px; font-style: italic; font-weight: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;&lt;span style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: #339966; font-family: inherit; font-size: 12px; font-style: inherit; font-weight: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;//Criação do objeto TrayIcon, informando uma imagem e um título&lt;/span&gt;&lt;/em&gt;&amp;nbsp;&amp;nbsp;&lt;em style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: inherit; font-size: 12px; font-style: italic; font-weight: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;&lt;span style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: blue; font-family: inherit; font-size: 12px; font-style: inherit; font-weight: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;trayIcon&lt;/span&gt;&lt;/em&gt;&amp;nbsp;=&amp;nbsp;&lt;strong style="font-weight: bold;"&gt;&lt;span style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: purple; font-family: inherit; font-size: 12px; font-style: inherit; font-weight: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;new&lt;/span&gt;&lt;/strong&gt;&amp;nbsp;TrayIcon(createImage(&lt;span style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: blue; font-family: inherit; font-size: 12px; font-style: inherit; font-weight: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;“padraoTray.jpg”&lt;/span&gt;,&lt;span style="border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: blue; font-family: inherit; font-size: 12px; font-style: inherit; font-weight: inherit; margin-bottom: 0px; margi
