<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	>

<channel>
	<title>Paulo Jr - JavaDev and more+</title>
	<atom:link href="http://www.paulojdev.com.br/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.paulojdev.com.br</link>
	<description></description>
	<pubDate>Wed, 06 Aug 2008 20:28:14 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.6</generator>
	<language>en</language>
			<item>
		<title>PUJ 2008 - Eu Participei!</title>
		<link>http://www.paulojdev.com.br/2008/08/puj-2008-eu-participei/</link>
		<comments>http://www.paulojdev.com.br/2008/08/puj-2008-eu-participei/#comments</comments>
		<pubDate>Wed, 06 Aug 2008 20:24:25 +0000</pubDate>
		<dc:creator>paulojdev</dc:creator>
		
		<category><![CDATA[cejug]]></category>

		<category><![CDATA[prêmios]]></category>

		<category><![CDATA[puj]]></category>

		<guid isPermaLink="false">http://www.paulojdev.com.br/?p=50</guid>
		<description><![CDATA[
O PUJ (Prêmio Universitário Java) 2008 foi realmente sensacional. Foi a segunda versão do prêmio universitário, que teve em 2007.2 a primeira versão com 2 (dois) participantes. Nesta versão foram nada menos que 12 (doze) participantes no prêmio e cada um fez o melhor que pode para que seus projetos de faculdade tivessem um nível [...]]]></description>
			<content:encoded><![CDATA[<div id="attachment_52" class="wp-caption alignleft" style="width: 181px"><a href="http://www.cejug.org/display/cejug/PUJ"><img class="size-full wp-image-52" title="puj166" src="http://www.paulojdev.com.br/wp-content/uploads/2008/08/puj166.png" alt="Logo PUJ 2008" width="171" height="166" /></a><p class="wp-caption-text">Logo PUJ 2008</p></div>
<p>O <a href="http://www.cejug.org/display/cejug/PUJ" target="_blank">PUJ (Prêmio Universitário Java)</a> 2008 foi realmente sensacional. Foi a segunda versão do prêmio universitário, que teve em 2007.2 a primeira versão com 2 (dois) participantes. Nesta versão foram nada menos que 12 (doze) participantes no prêmio e cada um fez o melhor que pode para que seus projetos de faculdade tivessem um nível alto para o concurso.</p>
<p>As aplicações foram de vários estilos diferentes, desde aplicações desktop com swing a aplicações robustas WEB com Spring, Hibernate e JSF. Vale a pena BAIXAR (<a href="https://cejug.dev.java.net/files/documents/859/102783/puj2008.rar">Link para todos os trabalhos em um .rar</a>) as aplicações para conferir. O código está o mais fácil e legível possível para poder ser avaliado pelos professores e profissionais do mercado.</p>
<p>Abaixo, seguem 2 (dois) screenshots, um da aplicação vencedora que foi a do Daniel Velente (UNIFOR), onde ele se garantiu mesmo ultilizando a tecnica de busca de melhor caminho através de grafos. Sendo que a aplicação ainda lhe permite ultilizar diversos algoritmos para o cálculo do melhor caminho. Ficou realmente espetacular, mereceu o prêmio. E a outra da minha aplicação, que é um aperfeiçoamento do famoso jogo <a href="http://pt.wikipedia.org/wiki/Pong" target="_blank">Pong</a>, um dos jogos mais antigos (talvez o mais) que existe para computador. A idéia era usar <a href="http://pt.wikipedia.org/wiki/OpenGL" target="_blank">OpenGL</a> com Java. E foi mostrado que era possível de se fazer através desse projeto.</p>
<p><strong>ScreenShot 01- Trabalho de Grafos</strong></p>
<div id="attachment_54" class="wp-caption aligncenter" style="width: 510px"><a href="http://www.paulojdev.com.br/wp-content/uploads/2008/08/appdanielvalentepuj.jpg"><img class="size-full wp-image-54" title="App Daniel Valente" src="http://www.paulojdev.com.br/wp-content/uploads/2008/08/appdanielvalentepuj.jpg" alt="Aplicação do Daniel Valente" width="500" height="341" /></a><p class="wp-caption-text">Aplicação do Daniel Valente</p></div>
<p><strong>ScreenShot 02 - Jogo do OpenGL (PonGL)</strong></p>
<div id="attachment_55" class="wp-caption aligncenter" style="width: 509px"><a href="http://www.paulojdev.com.br/wp-content/uploads/2008/08/apppaulojrpuj-01.jpg"><img class="size-full wp-image-55" title="apppaulojrpuj-01" src="http://www.paulojdev.com.br/wp-content/uploads/2008/08/apppaulojrpuj-01.jpg" alt="Tela de abertura do Jogo" width="499" height="437" /></a><p class="wp-caption-text">Tela de abertura do Jogo</p></div>
<div id="attachment_56" class="wp-caption aligncenter" style="width: 510px"><a href="http://www.paulojdev.com.br/wp-content/uploads/2008/08/apppaulojrpuj-02.jpg"><img class="size-full wp-image-56" title="apppaulojrpuj-02" src="http://www.paulojdev.com.br/wp-content/uploads/2008/08/apppaulojrpuj-02.jpg" alt="A parte do Jogo em 3D" width="500" height="395" /></a><p class="wp-caption-text">A parte do Jogo em 3D</p></div>
<p>Estou anexando os arquivos fonte e também o jogo para os interessados. E indico desde já um site que é excelente  para aprender OpenGL, tanto em Java quanto outras linguagens. <a href="http://nehe.gamedev.net" target="_blank">NeHe GameDev</a>.</p>
<p>A <a href="https://cejug.dev.java.net/files/documents/859/105911/PUJ_2008_resultados.pdf" target="_blank">classificação geral do PUJ está aqui</a> e o <a href="https://cejug.dev.java.net/files/documents/859/102807/PauloAlvesJunior.rar">Código Fonte com o Jogo Aqui</a>.</p>
<p>Os demais alunos também estão de parabéns e merecem destaque. Citando pelo menos os cinco primeiros (que infelizmente não estou nessa lista):<br />
1- Daniel Valente (UNIFOR)<br />
2- Robson Araújo (CEFET)<br />
3- Pedro Belmiro (UNIFOR)<br />
4- Francisco Barroso (LOURENÇO FILHO)<br />
5- Francisco de Assis (FIC)</p>
<p>O prêmio de primeiro lugar foi incrível. Uma viagem para bélgica com passagem e hospedagem paga. Ainda de quebra, um voucher para certificação java. O segundo foram livros e assinatura da revista <a href="http://www.devmedia.com.br/canais/default.asp?site=34" target="_blank">Java Magazine</a>, e o terceiro, apenas a assinatura da <a href="http://www.devmedia.com.br/canais/default.asp?site=34" target="_blank">Java Magazine</a>.</p>
<p>Para o próximo PUJ (2009?) eu aconselho demais a participação de todos os interessados. Fazer um projetinho simples, porém bem estruturado no código, é o que vale.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.paulojdev.com.br/2008/08/puj-2008-eu-participei/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Livros de Java São para Fracos</title>
		<link>http://www.paulojdev.com.br/2008/08/livros-de-java-sao-para-fracos/</link>
		<comments>http://www.paulojdev.com.br/2008/08/livros-de-java-sao-para-fracos/#comments</comments>
		<pubDate>Fri, 01 Aug 2008 17:52:34 +0000</pubDate>
		<dc:creator>paulojdev</dc:creator>
		
		<category><![CDATA[off-topic]]></category>

		<guid isPermaLink="false">http://www.paulojdev.com.br/?p=43</guid>
		<description><![CDATA[Os livros de java são para pessoas que não sabem java, estão começando ou ainda não atingiram um nível suficiente na linguagem a ponto de não precisar mais deles.
Aqui no nosso trabalho, o nível dos profissionais é altíssimo. Veja para que usamos os livros de Java que temos na empresa&#8230;
A História Real
Isso foi um brincadeira [...]]]></description>
			<content:encoded><![CDATA[<p>Os livros de java são para pessoas que não sabem java, estão começando ou ainda não atingiram um nível suficiente na linguagem a ponto de não precisar mais deles.</p>
<p>Aqui no nosso trabalho, o nível dos profissionais é altíssimo. Veja para que usamos os livros de Java que temos na empresa&#8230;</p>
<div id="attachment_45" class="wp-caption aligncenter" style="width: 310px"><a href="http://www.paulojdev.com.br/wp-content/uploads/2008/08/0731_140218.jpg"><img class="size-medium wp-image-45" title="livrosdejava" src="http://www.paulojdev.com.br/wp-content/uploads/2008/08/0731_140218-300x225.jpg" alt="Livros de Java para por o monitor em cima" width="300" height="225" /></a><p class="wp-caption-text">Livros de Java servem como suporte pra monitor </p></div>
<h2>A História Real</h2>
<p>Isso foi um brincadeira que originou-se a partir da falta de um suporte para o monitor de nosso colega. Então ele colocou temporariamente dois livros para servir como &#8220;SUPORTE&#8221; ao monitor. O legal é que o livro que ele colocou não era da empresa, e sim de um outro colega de trabalho, que quando viu a situação não acreditou no uso do seu tão estimado livro para tal fim <img src='http://www.paulojdev.com.br/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>Enfim, foi um fato engraçado que ocorreu na empresa e todos ficaram dizendo que ele não precisava mais de livros porque se garante demais.</p>
<p>Algo engraçado para mudar o estilo do blog um pouco.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.paulojdev.com.br/2008/08/livros-de-java-sao-para-fracos/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Design OO Simples com É-UM e TEM-UM</title>
		<link>http://www.paulojdev.com.br/2008/07/design-oo-simples-com-e-um-e-tem-um/</link>
		<comments>http://www.paulojdev.com.br/2008/07/design-oo-simples-com-e-um-e-tem-um/#comments</comments>
		<pubDate>Sat, 26 Jul 2008 20:39:39 +0000</pubDate>
		<dc:creator>paulojdev</dc:creator>
		
		<category><![CDATA[desenvolvimento]]></category>

		<category><![CDATA[design]]></category>

		<category><![CDATA[boas práticas]]></category>

		<category><![CDATA[POO]]></category>

		<guid isPermaLink="false">http://www.paulojdev.com.br/?p=35</guid>
		<description><![CDATA[A velocidade e necessidade de aprendizado a novas tecnologias que vem surgindo no mercado atual, causa uma grande euforia na maioria dos desenvolvedores atuais. O que faz com que sejamos levados a fazer as coisas ao velho modo &#8220;nas coxas&#8220;.
Uma forma simples de se pensar no Desing de sua aplicação, é aplicar o velho termo [...]]]></description>
			<content:encoded><![CDATA[<p>A velocidade e necessidade de aprendizado a novas tecnologias que vem surgindo no mercado atual, causa uma grande euforia na maioria dos desenvolvedores atuais. O que faz com que sejamos levados a fazer as coisas ao velho modo &#8220;<em>nas coxas</em>&#8220;.</p>
<p>Uma forma simples de se pensar no Desing de sua aplicação, é aplicar o velho termo É UM  e TEM UM. A coisa é simples, porém trás grandes lucros. Vejamos:</p>
<p><strong>É UM</strong></p>
<p>Parte da herança de classes ou implementação de interfaces.<br />
Esse termo, é o mesmo que dizer &#8220;A Ferrari é um tipo de Carro&#8221; ou &#8220;O Carro é um tipo de Veículo&#8221;, assim como &#8220;Uma moto É UM tipo de Veículo&#8221;.</p>
<p>Mas o que isso tem haver?</p>
<p>Digamos que você precisa desenhar um sistema OO para controlar o campeonato brasileiro. A primeira coisa que vem a mente ao falar de fultebol, são os times. Assim:</p>
<pre name="code" class="java">

class Time {

static final NUMBER_OF_PLAYERS_PLAYING = 11;

void comemorarVitoria() {
System.out.println(&quot;IIIIIIIUUHHHHHHUUUUUUUUUUUU!!!!!!&quot;)
};

}
</pre>
<p>Agora temos um time que tem um número máximo de 11 jogares em campo e sabe comemorar uma vitória. Especializando um pouco mais nossas classes, podemos agora saber quem são os times que vão jogar.</p>
<pre name="code" class="java">

class Palmeiras extends Time {

}
</pre>
<p>Assim sendo, temos então a relação que gostaríamos, &#8220;O Palmeiras É UM Time&#8221;.</p>
<p>Ao se estruturar a aplicação, deve-se pensar nas partes que <em>É UM</em> de alguém e modelalos como tal. Fica fácil imaginar essa dependência pensando se ele É UM do objeto que você quer. Vejamos alguns exemplos:</p>
<p>&#8220;Gol É UM Carro&#8221; (Mesmo que a Wolks diga que não)<br />
&#8220;Cliente É UMA Pessoa&#8221;<br />
&#8220;Coca_Cola É UM Refrigerante&#8221;<br />
&#8220;Tomate É UMA Fruta&#8221; (<a href="http://pt.wikipedia.org/wiki/Tomate" target="_blank">Para não se confundir</a>)<br />
e assim segue&#8230;</p>
<p>Todas essas associações, são feitas através da herança que existe entre os objetos.</p>
<p>Certo, entendi porque É UM, mas e quando é que ele tem um?</p>
<p><strong>TEM UM</strong></p>
<p>Um objeto TEM UM, quando ele utiliza o outro objeto. Ou seja, ocorre quando o objeto que TEM UM, possui uma referência a uma instância de outro objeto.</p>
<p>Continuando o Desing de nosso sitema do Campeonato Brasileiro, vejamos então, o Palmeira É UM Time, mas ele também TEM UM Técnico.</p>
<pre name="code" class="java">

class Tecnico {
String nome;
Date inicioDaCarreira;
int numeroDeCampeonatosGanhos;
// get&#039;s e set&#039;s
}

class Palmeiras extends Time {
Tecnico tecnico;
}
</pre>
<p>O código acima demostra bem, o relacionamento TEM UM. O Palmeiras TEM UM Tecnico. O código acima ainda poderia ser melhorado, colocando-se o Tecnico na superclasse Time, pois todo Time TEM UM Tecnico. Porém, apenas para fins didáticos, foi que fiz como está.</p>
<p>Um mal design seria fazer algo parecido com isso:</p>
<pre name="code" class="java">

class Tecnico extends Time {
String nome;
Date inicioDaCarreira;
int numeroDeCampeonatosGanhos;
// get&#039;s e set&#039;s
}

class Palmeiras extends Tecnico {

}
</pre>
<p>No final das contas o Palmeiras ainda É UM Time, porém o Tecnico <strong>NÃO É UM</strong> Time, por isso ele não deve extender de Time, e muito menos o Palmeiras <strong>NÃO É UM </strong>Tecnico, ele também não deve extender de Tecnico.</p>
<p>Você pode estar imaginando, &#8220;Quem seria louco o bastante para fazer algo parecido com isso?&#8221;. Infelizmente, como dito acima, muitos programadores hoje, que aprendem programação &#8220;por demanda&#8221;, acabam cometendo erros primordiais simplesmente por não conhecerem as formas de design simples de aplicações OO. Ou ainda programadores que veem de outras linguagens estruturais, e tem dificuldade de pensar em sistemas verdadeiramente OO.</p>
<p>É UM e TEM UM são velhos conhecidos dos Desings de Sistemas OO, e fazem uma diferença imensa no momento de pensar a estrutura da aplicação.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.paulojdev.com.br/2008/07/design-oo-simples-com-e-um-e-tem-um/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Iniciando em JSF com Netbeans</title>
		<link>http://www.paulojdev.com.br/2008/06/iniciando-em-jsf-com-netbeans/</link>
		<comments>http://www.paulojdev.com.br/2008/06/iniciando-em-jsf-com-netbeans/#comments</comments>
		<pubDate>Mon, 02 Jun 2008 15:42:18 +0000</pubDate>
		<dc:creator>paulojdev</dc:creator>
		
		<category><![CDATA[Iniciante]]></category>

		<category><![CDATA[desenvolvimento]]></category>

		<category><![CDATA[framework]]></category>

		<category><![CDATA[ide]]></category>

		<category><![CDATA[jsf]]></category>

		<category><![CDATA[netbeans]]></category>

		<category><![CDATA[javaserver faces]]></category>

		<guid isPermaLink="false">http://paulojdev.wordpress.com/?p=20</guid>
		<description><![CDATA[Sentindo a necessidade de tutoriais em português sobre como iniciar uma aplicação básica em jsf, resolvi escrever sobre o assunto de forma rápida e até certo ponto resumida, deixando que você enfrente alguns problemas para aguçar sua curiosidade sobre a tecnologia JSF  
Dependências
Netbeans IDE 6.0 (ou qualquer IDE que você ache melhor, sabendo fazer [...]]]></description>
			<content:encoded><![CDATA[<p>Sentindo a necessidade de tutoriais em português sobre como iniciar uma aplicação básica em jsf, resolvi escrever sobre o assunto de forma rápida e até certo ponto resumida, deixando que você enfrente alguns problemas para aguçar sua curiosidade sobre a tecnologia JSF <img src='http://www.paulojdev.com.br/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p><span style="color: #993300;"><strong>Dependências</strong></span></p>
<p><a title="NetBeans IDE Site" href="http://www.netbeans.com" target="_blank">Netbeans IDE 6.0</a> (ou qualquer IDE que você ache melhor, sabendo fazer as devidas alterações)</p>
<p><a title="Tomcat" href="http://tomcat.apache.org" target="_blank">Tomcat 6.0.14</a> (ou outro container web JEE 5)</p>
<p>&#8220;Basicamente só esses dois resolvem, pois o Netbeans já tras as bibliotecas necessárias ao JSF&#8221;</p>
<p><span style="color: #993300;"><strong>Iniciando</strong></span></p>
<p>Na aba de projetos do netbeans (<em>Projects</em>), clique com o botão direito do mouse e escolha, <em>New Project.</em> Depois em <em>Web </em>-&gt; <em>Web Application</em>. Dê o nome para seu projeto e abaixo selecione o container <em>Tomcat 6.0.14</em>. Clique <em>Next</em>. Na tela de seleção do framework, escolha <em>JavaServer Faces</em> somente. <em>Finish.</em></p>
<p><strong>Implementando</strong></p>
<p>O Netbeans criou para você uma nova tela jsp com um HelloWord em JSF. Vamos modificar as coisas um pouco.</p>
<p>O Netbeans criou seu web.xml e o faces-config.xml já configurados para rodar o JSF. Estou disponibilizando os fontes, para uma idéia real do que está sendo feito por trás. Vamos lá..</p>
<p>Estrutura de diretório:<br />
[Projeto]<br />
-web<br />
-WEB-INF<br />
-<strong>web.xml</strong></p>
<pre name="code" class="xml">

&lt;context-param&gt;
&lt;param-name&gt;com.sun.faces.verifyObjects&lt;/param-name&gt;
&lt;param-value&gt;false&lt;/param-value&gt;
&lt;/context-param&gt;
&lt;context-param&gt;
&lt;param-name&gt;com.sun.faces.validateXml&lt;/param-name&gt;
&lt;param-value&gt;true&lt;/param-value&gt;
&lt;/context-param&gt;
&lt;context-param&gt;
&lt;param-name&gt;javax.faces.STATE_SAVING_METHOD&lt;/param-name&gt;
&lt;param-value&gt;client&lt;/param-value&gt;
&lt;/context-param&gt;
&lt;servlet&gt;
&lt;servlet-name&gt;Faces Servlet&lt;/servlet-name&gt;
&lt;servlet-class&gt;javax.faces.webapp.FacesServlet&lt;/servlet-class&gt;
&lt;load-on-startup&gt;0&lt;/load-on-startup&gt;
&lt;/servlet&gt;
&lt;servlet-mapping&gt;
&lt;servlet-name&gt;Faces Servlet&lt;/servlet-name&gt;
&lt;url-pattern&gt;/faces/*&lt;/url-pattern&gt; &lt;!–- Altere essa linha para [ &lt;url-pattern&gt;*.jsf&lt;/url-pattern&gt; ] -–&gt;
&lt;/servlet-mapping&gt;
&lt;welcome-file-list&gt;
&lt;welcome-file&gt;index.jsp&lt;/welcome-file&gt;
&lt;/welcome-file-list&gt;
</pre>
<p>Estamos declarando um servlet chamado de <strong>Faces Servlet</strong> que está sendo mapeado por <strong>*.jsf</strong>. Isso quer dizer, que todo arquivo chamado com <em>nome_qualquer.<strong>jsf</strong></em>, será carregado pelo servlet do jsf. Esse é o servlet que faz todo controle do JSF em nossas aplicações.</p>
<p>O outro arquivo que o Netbeans já criou e configurou para nós foi o<strong> faces-config.xml</strong>, que contém a estrutura e mappeamento dos nossos BackingBeans. Ele é o arquivo mais importante para uma aplicação JSF, pois também contém as regras de navegação da aplicação e várias outras coisas.</p>
<p>O faces-config.xml fica no mesmo diretório do web.xml, e sua estrutura está como abaixo:</p>
<pre name="code" class="xml">

&lt;?xml version=&#039;1.0&#039; encoding=&#039;UTF-8&#039;?&gt;

&lt;faces-config xmlns=&quot;http://java.sun.com/xml/ns/javaee&quot;
xmlns:xsi=&quot;http://www.w3.org/2001/XMLSchema-instance&quot;
xsi:schemaLocation=&quot;http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-facesconfig_1_2.xsd&quot;
version=&quot;1.2&quot;&gt;

&lt;/faces-config&gt;
</pre>
<p>Perceba que não existe ainda nenhuma configuração especial dentro do arquivo, pois nenhuma regra foi criada ainda.</p>
<p>Um outro arquivo criado foi o welcomeJSF.jsp que contém duas tags JSF. A primeira é a <em>&lt;f:view /&gt; </em>que informa ao JSF onde começa o arquivo para o jsf e onde termina. Ou seja, ele só reconhecerá as tags e atributos JSF que estiverem dentro da view. E a outra tag é a <em>&lt;h:outputText /&gt;</em>, que é apenas uma saída de texto, onde o valor da saída é expresso pelo <em>value=&#8221;"</em>.</p>
<p>Vamos começar a fazer as coisas a nosso modo realmente. Altere o arquivo <strong>welcomeJSF.jsp</strong> para o seguinte (lembrando que a parte que não é apresentada, não sofrerá modificações):</p>
<p><em><strong>welcomeJSF.jsp</strong></em></p>
<pre name="code" class="html">

&lt;f:view&gt;
&lt;h:form id=&quot;formLogin&quot;&gt;
&lt;h:messages /&gt;
&lt;br /&gt;
&lt;h:outputText value=&quot;Login&quot; /&gt;
&lt;h:inputText value=&quot;#{loginBean.login}&quot; /&gt;
&lt;br /&gt;
&lt;h:outputText value=&quot;Senha&quot; /&gt;
&lt;h:inputText value=&quot;#{loginBean.senha}&quot; /&gt;
&lt;br /&gt;
&lt;h:commandButton action=&quot;#{loginBean.logar}&quot; value=&quot;Entrar no Sistema&quot; /&gt;
&lt;/h:form&gt;
&lt;/f:view&gt;
</pre>
<p>No código acima estamos fazendo uma pequeno formulário de login, bem simples. Onde o primeiro dado que é soliciado do usuário é o login, e logo após sua senha. Seria uma tela básica de login em um sistema qualquer.</p>
<p>Usamos dois <em>outputText</em> que nós já conhecemos e dois <em>inputText</em> que são entradas de texto. No final, geram inputs html assim: &lt;input type=&#8221;text&#8221; value=&#8221;Valor que vier do backingBean&#8221; name=&#8221;aleatorio&#8221; /&gt;. E também usamos o <em>h:commandButton</em> que gera um botão html com uma ação definida pelo método chamado no action. Perceba que definimos um, <em>&lt;h:messages /&gt;</em>. Ele é responsável por exibir mensagens jsf, como erros de validação, erros de conversão, mensagens que definimos de alertas, como abaixo será mostrado.<br />
Perceba que também estamos fazendo referência a um backingBean através do value e do action do botão. Porém ainda não criamos esse backingBean. <span style="text-decoration: underline;">Mas o que são backingBeans?</span></p>
<p><strong>BackingBeans</strong>: Como o próprio nome já expressa, são beans, ou classes java (bean), que ficam por trás da view, ou da página jsf. Eles são diretamente ligados com a visão da aplicação jsf, onde são definidos atributos (exemplo o e-mail e a senha) e também são definidos métodos (como o <span style="color: #993366;">logar</span> do botão de entrar no sistema). Eles são a base para uma página jsf.</p>
<p>Vamos então desenvolver nosso backingBean para entendermos como funciona essa comunicação entre a visão jsf e a classe java &#8220;por trás&#8221;.</p>
<p><strong>LoginBean.java</strong></p>
<pre name="code" class="java">

public class LoginBean {

private String login;
private String senha;

// get&#039;s e set&#039;s

public String logar() {
if (login.equals(&quot;paulojr&quot;)) {
if (senha.equals(&quot;123&quot;)) {
return &quot;autorizado&quot;;
}
}
FacesContext.getCurrentInstance()
.addMessage(&quot;erro&quot;, new FacesMessage(&quot;Login não autorizado!&quot;));
return null;
}

}
</pre>
<p>Algumas explicações sobre nosso backingBean.<br />
Nossa visão só consegue ler propriedades que possuam métodos acessores (get&#8217;s e set&#8217;s). É por esses métodos que o JSF procura na propriedade <em>&lt;h:inputText value=&#8221;#{loginBean.login}</em> /&gt;<em>.</em><br />
O método <em>logar()</em> é invocado pelo <em>commandButton</em>, que tem um retorno do tipo String. Esse retorno informa ao JSF para que página ele deve direcionar o usuário. Agora é onde entra nosso mapeamento.</p>
<p>Após criado nosso BackingBean (LoginBean.java), vamos configurar para fazer o JSF conhecer nosso BackingBean.<br />
Abra o arquivo faces-config.xml e adicione as seguintes linhas:</p>
<p><strong>faces-config.xml</strong></p>
<pre name="code" class="xml">

&lt;managed-bean&gt;
&lt;managed-bean-name&gt;loginBean&lt;/managed-bean-name&gt;
&lt;managed-bean-class&gt;exemplo.LoginBean&lt;/managed-bean-class&gt;
&lt;managed-bean-scope&gt;request&lt;/managed-bean-scope&gt;
&lt;/managed-bean&gt;
&lt;navigation-rule&gt;
&lt;from-view-id&gt;/welcomeJSF.jsp&lt;/from-view-id&gt;
&lt;navigation-case&gt;
&lt;from-outcome&gt;autorizado&lt;/from-outcome&gt;
&lt;to-view-id&gt;/autenticado.jsp&lt;/to-view-id&gt;
&lt;redirect/&gt;
&lt;/navigation-case&gt;
&lt;/navigation-rule&gt;
</pre>
<p>A tag <em>&lt;managed-bean&gt;</em> é o mapeamento da nossa classe para a visão, onde usamos algo do tipo <em>&lt;inputText value=&#8221;#{loginBean.login}&#8221; /&gt;</em>. O <em>&lt;managed-bean-name&gt;</em> faz referência ao nome que será usado na visão. O <em>&lt;managed-bean-class&gt;</em> faz referência a classe mapeada com seu respectivo pacote, e o <em>&lt;managed-bean-scope&gt;</em> é o escopo da aplicação, que pode ser &#8220;request&#8221;, &#8220;session&#8221; e &#8220;application&#8221;. (Em outro artigo poderei detalhar mais sobre o escopo).</p>
<p>As regras de navegação, são marcadas pelo <em>&lt;navigation-rule&gt;</em>, que diz: Se eu estiver em /<em>welcomeJSF.jsp</em> e receber a String <strong><em>autorizado</em></strong>, quero ir para <em>/autenticado.jsp</em>.<br />
A ultima tag <em>&lt;redirect /&gt;</em>, informa ao jsf que o usuário deve ser redirecionado para a página <em>autenticado.jsp sem manter o estado.</em></p>
<p>Vamos criar então a tela de mensagem de sucesso para o caso do login esta correto.</p>
<p><strong>autenticado.jsp</strong></p>
<pre name="code" class="html">

&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv=&quot;Content-Type&quot; content=&quot;text/html; charset=UTF-8&quot;&gt;
&lt;title&gt;Autenticado&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;
&lt;h2&gt;Sucesso!&lt;/h2&gt;
&lt;p&gt;
Você foi autenticado com sucesso!
&lt;/p&gt;
&lt;/body&gt;
&lt;/html&gt;
</pre>
<p>Perceba que é apenas uma página jsp normal, que serve só para sabermos se os dados foram validados com sucesso, e se nossa app jsf está obedecendo as regras criadas no <em>faces-config.xml.</em></p>
<p>Agora coloque para rodar o projeto feito, e veja o resultado. Tente logar com o usuário diferente do definido no LoginBean e senha diferente também. Depois tente fazer um login com os usuários definidos e veja se você é direcionado para a página correta.</p>
<p><strong>Conclusão</strong></p>
<p>Tentei exibir um uso simples de jsf, tentando demostrar desde a criação de uma página simples, passando os dados pelo managed bean e validando as configurações do faces-config. Daí em diante dá pra ir abstraindo-se de algumas coisas e melhorar a aplicação de uma forma gigantesca.<br />
Qualquer dúvida podem comentar ou enviar e-mail que ajudarei no que for possível.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.paulojdev.com.br/2008/06/iniciando-em-jsf-com-netbeans/feed/</wfw:commentRss>
		</item>
		<item>
		<title>A Guerra dos Grandes - CCT de Abril</title>
		<link>http://www.paulojdev.com.br/2008/04/a-guerra-dos-grandes-cct-de-abril/</link>
		<comments>http://www.paulojdev.com.br/2008/04/a-guerra-dos-grandes-cct-de-abril/#comments</comments>
		<pubDate>Mon, 14 Apr 2008 13:52:04 +0000</pubDate>
		<dc:creator>paulojdev</dc:creator>
		
		<category><![CDATA[cct]]></category>

		<category><![CDATA[cejug]]></category>

		<category><![CDATA[framework]]></category>

		<category><![CDATA[ejb 3]]></category>

		<category><![CDATA[open social]]></category>

		<category><![CDATA[spring]]></category>

		<guid isPermaLink="false">http://paulojdev.wordpress.com/?p=19</guid>
		<description><![CDATA[O Café com tapioca de Abril foi o máximo, quem perdeu, pode começar a chorar, pois foi um evento espetacular. Um dos melhores até hoje. Só pelos temas dá para se tirar a idéia.
Os temas foram:
Conhecendo o Spring por Igor Coelho
OpenSocial: construa sua rede social por Cristiano Milfont
Os melhores do mundo: comparativo entre Spring e [...]]]></description>
			<content:encoded><![CDATA[<p>O Café com tapioca de Abril foi o máximo, quem perdeu, pode começar a chorar, pois foi um evento espetacular. Um dos melhores até hoje. Só pelos temas dá para se tirar a idéia.</p>
<p>Os temas foram:<br />
<span style="color:#000000;"><strong>Conhecendo o Spring</strong></span> por <a href="http://www.igocoelho.com.br/" target="_blank">Igor Coelho<br />
</a><span style="color:#000000;"><strong>OpenSocial: construa sua rede social</strong> por <a href="http://www.milfont.org/tech" target="_blank">Cristiano Milfont</a></span><br />
<span style="color:#000000;"><strong>Os melhores do mundo: comparativo entre Spring e EJB  3.0 </strong>por <a href="http://www.rafaelcarneiro.org/" target="_blank">Rafael Carneiro</a> e Tarso Bessa</span></p>
<p>Todas as palestras foram incríveis, porém quero dar destaque a dupla Rafale e Tarso que se superaram e mostraram o poder do EJB e do Spring. E uma comparação entre os dois. O poder e as facilidades que os dois trazem ao desenvolvimento JEE.</p>
<p>Assim que sair fotos, vou publica-las, porém você pode acompanhar por <a href="http://www.cejug.org/display/cejug/OpenSocial%2C+Conhecendo+o+Spring+e+Os+melhores+do+mundo%2C+comparativo+entre+Spring+e+EJB+3.0+-+%2812.04.08%29" target="_blank">AQUI</a> as fotos do evento e o material que será diponibilizado. Mas óbvio que não vou esperar e vou publicar em breve também <img src='http://www.paulojdev.com.br/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /><br />
De antemão deixo a ressalva que a mês MAIO terá mais um CCT de peso. Aguardem&#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.paulojdev.com.br/2008/04/a-guerra-dos-grandes-cct-de-abril/feed/</wfw:commentRss>
		</item>
		<item>
		<title>serialVersionUID - Para que ele server realmente?</title>
		<link>http://www.paulojdev.com.br/2008/04/serialversionuid-para-que-ele-server-realmente/</link>
		<comments>http://www.paulojdev.com.br/2008/04/serialversionuid-para-que-ele-server-realmente/#comments</comments>
		<pubDate>Wed, 02 Apr 2008 13:04:40 +0000</pubDate>
		<dc:creator>paulojdev</dc:creator>
		
		<category><![CDATA[news]]></category>

		<guid isPermaLink="false">http://paulojdev.wordpress.com/?p=18</guid>
		<description><![CDATA[Já a algum tempo eu vinha tendo essa curiosidade de saber para que o atributo, geralmente criado por IDE&#8217;s, serilVersionUID realmente serve.
Ao fazer um breve pesquisa na WEB, caí no blog da Caelum, que por sinal é excelente, respondendo a minha questão. Deixo então para vocês a mesma resposta, se isso lhe interessar.
Veja o link [...]]]></description>
			<content:encoded><![CDATA[<p>Já a algum tempo eu vinha tendo essa curiosidade de saber para que o atributo, geralmente criado por IDE&#8217;s, serilVersionUID realmente serve.</p>
<p>Ao fazer um breve pesquisa na WEB, caí no <a href="http://blog.caelum.com.br/" target="_blank">blog da Caelum</a>, que por sinal é excelente, respondendo a minha questão. Deixo então para vocês a mesma resposta, se isso lhe interessar.</p>
<p>Veja o link abaixo:</p>
<p><a href="http://blog.caelum.com.br/2008/04/01/entendendo-o-serialversionuid/" target="_blank">http://blog.caelum.com.br/2008/04/01/entendendo-o-serialversionuid/</a></p>
<p>Abraços e bom proveito.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.paulojdev.com.br/2008/04/serialversionuid-para-que-ele-server-realmente/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Café com Tapioca de Coco - O maior evento do CEJUG</title>
		<link>http://www.paulojdev.com.br/2008/02/cafe-com-tapioca-de-coco-o-maio-evento-do-cejug/</link>
		<comments>http://www.paulojdev.com.br/2008/02/cafe-com-tapioca-de-coco-o-maio-evento-do-cejug/#comments</comments>
		<pubDate>Tue, 19 Feb 2008 14:38:49 +0000</pubDate>
		<dc:creator>paulojdev</dc:creator>
		
		<category><![CDATA[cct]]></category>

		<category><![CDATA[cejug]]></category>

		<category><![CDATA[news]]></category>

		<guid isPermaLink="false">http://paulojdev.wordpress.com/?p=13</guid>
		<description><![CDATA[Aconteceu dia 12/02 o evento anteriormente anunciado, o Café com Tapioca de Coco. Reggie Hutcherson e Simon Ritter da SUN Microsystems, trouxeram excelentes palestras.
O Reggie falando sobre o programa para desenvolvedores recursos, dentre outros. Já o Simon, falou sobre o JavaFX, que foi uma excelente visão e palestra sobre esta nova tecnologia da SUN e [...]]]></description>
			<content:encoded><![CDATA[<p>Aconteceu dia 12/02 o evento anteriormente anunciado, o <a title="Café com Tapioca de Côco" href="http://www.cejug.org/display/cejug/Cafe+com+Tapioca+com+Coco+-+%2812.02.08%29" target="_blank">Café com Tapioca de Coco</a>. <strong>Reggie Hutcherson </strong>e<strong> </strong><strong>Simon Ritter </strong>da <a title="SUN" href="http://sun.com" target="_blank">SUN Microsystems</a>, trouxeram excelentes palestras.</p>
<p>O Reggie falando sobre o programa para desenvolvedores recursos, dentre outros. Já o Simon, falou sobre o JavaFX, que foi uma excelente visão e palestra sobre esta nova tecnologia da SUN e falou também sobre o SUN Spot. Foi realmente incrível.</p>
<p>Já o brasileiro Paulo Silveira da <a title="Caelum" href="http://www.caelum.com.br/caelum/index.jsp" target="_blank">Caelum</a>, deu um show a parte. Falou muito bem e com muita autoridade sobre a arquitetura Java. Um pouco sobre SOA &#8220;Same Old Architecture&#8221;.</p>
<p>Resumindo um pouco, quem não foi só perdeu. E quem foi vamos continuar nos preparando porque os próximos eventos vão ser de imensa qualidade.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.paulojdev.com.br/2008/02/cafe-com-tapioca-de-coco-o-maio-evento-do-cejug/feed/</wfw:commentRss>
		</item>
		<item>
		<title>JavaGrill no CEJUG</title>
		<link>http://www.paulojdev.com.br/2008/02/javagrill-no-cejug/</link>
		<comments>http://www.paulojdev.com.br/2008/02/javagrill-no-cejug/#comments</comments>
		<pubDate>Fri, 08 Feb 2008 18:40:00 +0000</pubDate>
		<dc:creator>paulojdev</dc:creator>
		
		<category><![CDATA[news]]></category>

		<guid isPermaLink="false">http://paulojdev.wordpress.com/2008/02/08/javagrill-no-cejug/</guid>
		<description><![CDATA[Estivemos hoje em um almoço muito bacana para discutir sobre o evento do CEJUG, Café com Tapioca de Coco.
Alguns dos grandes nomes da programação Java Cearense compartilharam de um baião com uma picanhazinha assada de primeira.
Os presentes foram:

Rafael Carneiro
Igor Coelho
Israel Freitas
Handerson Frota
Rafael Tabosa
Rafael Ponte
Alyson Bandeira
Arisson Leal

O Embaixador SUN (Silveira Neto) chegou no final com os [...]]]></description>
			<content:encoded><![CDATA[<p>Estivemos hoje em um almoço muito bacana para discutir sobre o evento do <a href="http://www.cejug.org/">CEJUG</a>, <a href="http://www.cejug.org/display/cejug/Cafe+com+Tapioca+com+Coco">Café com Tapioca de Coco</a>.</p>
<p>Alguns dos grandes nomes da programação Java Cearense compartilharam de um baião com uma picanhazinha assada de primeira.</p>
<p>Os presentes foram:</p>
<ul>
<li><a href="http://www.rafaelcarneiro.org/blog">Rafael Carneiro</a></li>
<li><a href="http://www.igocoelho.com.br/">Igor Coelho</a></li>
<li><a href="http://israelfreitas.blogspot.com/">Israel Freitas</a></li>
<li><a href="http://www.handersonfrota.com.br/">Handerson Frota</a></li>
<li><a href="http://rafatabosa.blogspot.com/">Rafael Tabosa</a></li>
<li><a href="http://www.rponte.com.br/">Rafael Ponte</a></li>
<li>Alyson Bandeira</li>
<li>Arisson Leal</li>
</ul>
<p>O Embaixador SUN (<a href="http://silveiraneto.net/">Silveira Neto</a>) chegou no final com os cartazes do evento.</p>
<p>Ainda tivemos tempo para trocar umas idéias sobre tecnologias Java dentre outras..<br />
Algumas fotos ai:</p>
<p><a href="http://bp0.blogger.com/_IHfM4wob_Zk/R6ynwSQ5RxI/AAAAAAAAAGQ/cWJR79ixI0w/s1600-h/08022008460.jpg"><img src="http://bp0.blogger.com/_IHfM4wob_Zk/R6ynwSQ5RxI/AAAAAAAAAGQ/cWJR79ixI0w/s320/08022008460.jpg" style="display:block;text-align:center;cursor:pointer;margin:0 auto 10px;" border="0" /></a><a href="http://bp3.blogger.com/_IHfM4wob_Zk/R6yn9CQ5RyI/AAAAAAAAAGY/iwA4DoWOi2Y/s1600-h/08022008462.jpg"><img src="http://bp3.blogger.com/_IHfM4wob_Zk/R6yn9CQ5RyI/AAAAAAAAAGY/iwA4DoWOi2Y/s320/08022008462.jpg" style="display:block;text-align:center;cursor:pointer;margin:0 auto 10px;" border="0" /></a><br />
É, as fotos não estão lá essas coisas, mas ainda dá pra ver algo <img src='http://www.paulojdev.com.br/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> Abraços e um ótimo evento a todos</p>
]]></content:encoded>
			<wfw:commentRss>http://www.paulojdev.com.br/2008/02/javagrill-no-cejug/feed/</wfw:commentRss>
		</item>
		<item>
		<title>CEJUG - Café com Tapioca de Coco</title>
		<link>http://www.paulojdev.com.br/2008/02/cejug-cafe-com-tapioca-de-coco/</link>
		<comments>http://www.paulojdev.com.br/2008/02/cejug-cafe-com-tapioca-de-coco/#comments</comments>
		<pubDate>Fri, 08 Feb 2008 17:47:00 +0000</pubDate>
		<dc:creator>paulojdev</dc:creator>
		
		<category><![CDATA[cct]]></category>

		<category><![CDATA[cejug]]></category>

		<category><![CDATA[news]]></category>

		<guid isPermaLink="false">http://paulojdev.wordpress.com/2008/02/08/cejug-cafe-com-tapioca-de-coco/</guid>
		<description><![CDATA[
Mais um evento do CEJUG, agora é o Café com Tapioca de Coco.
Esse evento está prometendo, a comecar pelos palestrantes. São eles:

Simon Ritter (Sun Microsystems);
Reggie Hutcherson (Sun Microsystems);
Paulo Silveira (Caelum);

As palestras são no mínimo interessantíssimas:

JavaFX para desenvolvimento de aplicações Rich Client
Arquitetura Java Enterprise Edition
A Estratégia de Software da SUN para desenvolvedores
Projeto SUN SPOT para Redes [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://bp1.blogger.com/_IHfM4wob_Zk/R6yfGiQ5RwI/AAAAAAAAAGI/Xxb9UvXX_AE/s1600-h/dukewithcoco.jpg"><img style="float:left;cursor:pointer;margin:0 10px 10px 0;" src="http://bp1.blogger.com/_IHfM4wob_Zk/R6yfGiQ5RwI/AAAAAAAAAGI/Xxb9UvXX_AE/s320/dukewithcoco.jpg" border="0" alt="" /></a><br />
Mais um evento do <a href="http://www.cejug.org/">CEJUG</a>, agora é o <a href="http://www.cejug.org/display/cejug/Cafe+com+Tapioca+com+Coco">Café com Tapioca de Coco</a>.</p>
<p>Esse evento está prometendo, a comecar pelos palestrantes. São eles:</p>
<ul>
<li>Simon Ritter (Sun Microsystems);</li>
<li>Reggie Hutcherson (Sun Microsystems);</li>
<li>Paulo Silveira (Caelum);</li>
</ul>
<p>As palestras são no mínimo interessantíssimas:</p>
<ul>
<li>JavaFX para desenvolvimento de aplicações Rich Client</li>
<li>Arquitetura Java Enterprise Edition</li>
<li>A Estratégia de Software da SUN para desenvolvedores</li>
<li>Projeto SUN SPOT para Redes de Sensores sem Fio em Java</li>
</ul>
<p>Para os palestrantes internacionais (SUN Microsystems), haverá tradução simultânea.</p>
<p>O mais importante para os caros internautas é quando e onde. Será:<br />
Dia 12 de Fevereiro de 2008 às 18:00h<br />
No auditório da <a href="http://maps.google.com/maps?f=q&amp;hl=pt-BR&amp;geocode=&amp;q=fa7&amp;sll=-3.718394,-38.543395&amp;sspn=0.602973,0.933838&amp;ie=UTF8&amp;latlng=-3771031,-38483750,17484547831475946873&amp;ei=LqGsR8zlKqiArQKVvsiTCg&amp;cd=1">FA7</a> (<a href="http://www.fa7.edu.br/">Faculdade 7 de Setembro</a>)</p>
]]></content:encoded>
			<wfw:commentRss>http://www.paulojdev.com.br/2008/02/cejug-cafe-com-tapioca-de-coco/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Java e a WEB 2.0</title>
		<link>http://www.paulojdev.com.br/2008/01/java-e-a-web-20/</link>
		<comments>http://www.paulojdev.com.br/2008/01/java-e-a-web-20/#comments</comments>
		<pubDate>Fri, 25 Jan 2008 20:23:00 +0000</pubDate>
		<dc:creator>paulojdev</dc:creator>
		
		<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://paulojdev.wordpress.com/2008/01/25/java-e-a-web-20/</guid>
		<description><![CDATA[Achei essa paradinha AQUI bem interessante, creio que vocês vão gostar.
De certo modo, parece aqueles shows iluministas com um monte de imagem que mexe com você e um som bem interessante que te leva pra lua.
A diferença é que é um pdf, num tem show nem som  , mas os slides estão muito bons. [...]]]></description>
			<content:encoded><![CDATA[<p>Achei essa paradinha <a href="https://javarn.dev.java.net/slides/njd2006/Java_e_a_Web_2.pdf">AQUI</a> bem interessante, creio que vocês vão gostar.</p>
<p>De certo modo, parece aqueles shows iluministas com um monte de imagem que mexe com você e um som bem interessante que te leva pra lua.</p>
<p>A diferença é que é um pdf, num tem show nem som <img src='http://www.paulojdev.com.br/wp-includes/images/smilies/icon_sad.gif' alt=':(' class='wp-smiley' /> , mas os slides estão muito bons. Feito pelo pessoal do <a href="https://javarn.dev.java.net/">JAVA RN</a>.</p>
<p>Vale a pena clicar <img src='http://www.paulojdev.com.br/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /></p>
]]></content:encoded>
			<wfw:commentRss>http://www.paulojdev.com.br/2008/01/java-e-a-web-20/feed/</wfw:commentRss>
		</item>
	</channel>
</rss>
