<?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"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	xmlns:media="http://search.yahoo.com/mrss/"
	>

<channel>
	<title>YRoss</title>
	<atom:link href="http://yross.wordpress.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://yross.wordpress.com</link>
	<description>Um novo pensamento, gera uma nova idéia! No que você esta pensando?</description>
	<lastBuildDate>Tue, 03 Nov 2009 19:20:38 +0000</lastBuildDate>
	<generator>http://wordpress.com/</generator>
	<language>pt-br</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<cloud domain='yross.wordpress.com' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>http://www.gravatar.com/blavatar/b2d5984057afc5bab2637b623f43ad37?s=96&#038;d=http://s.wordpress.com/i/buttonw-com.png</url>
		<title>YRoss</title>
		<link>http://yross.wordpress.com</link>
	</image>
			<item>
		<title>Convertendo e validando String em UTF-8</title>
		<link>http://yross.wordpress.com/2009/11/03/convertendo-e-validando-string-em-utf-8/</link>
		<comments>http://yross.wordpress.com/2009/11/03/convertendo-e-validando-string-em-utf-8/#comments</comments>
		<pubDate>Tue, 03 Nov 2009 18:53:28 +0000</pubDate>
		<dc:creator>Ythalo Rossy</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[utf-8]]></category>
		<category><![CDATA[utf8]]></category>

		<guid isPermaLink="false">http://yross.wordpress.com/?p=173</guid>
		<description><![CDATA[Informacoes rapidas.
Passei por alguns problemas relacionados a codificacao de texto, String para os intimos, entao resolvi comentar sobre o assunto.
Deixarei a teoria para quem realmente entende, por exemplo: http://pt.wikipedia.org/wiki/UTF-8
Criando String UTF-8
Uma simples String codificada em formato UTF-8 é facilmente criada desta forma:
String txt = &#8220;Texto não verificado a codificacao&#8221;;
String txtUTF8 = new String(txt.getBytes(&#8220;UTF-8&#8243;));
Validando  String UTF-8
Um [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=yross.wordpress.com&blog=975461&post=173&subd=yross&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>Informacoes rapidas.</p>
<p>Passei por alguns problemas relacionados a codificacao de texto, String para os intimos, entao resolvi comentar sobre o assunto.</p>
<p>Deixarei a teoria para quem realmente entende, por exemplo: <a href="http://pt.wikipedia.org/wiki/UTF-8">http://pt.wikipedia.org/wiki/UTF-8</a></p>
<h2>Criando String UTF-8</h2>
<p>Uma simples String codificada em formato UTF-8 é facilmente criada desta forma:</p>
<p>String txt = &#8220;Texto não verificado a codificacao&#8221;;</p>
<p>String txtUTF8 = new String(txt.getBytes(&#8220;UTF-8&#8243;));</p>
<h2>Validando  String UTF-8</h2>
<p>Um forma muito simples de verificar se um texto esta realmente com todos os seus caracteres em formato UTF-8 é converter o texto para UTF-8 e compara o texto resultante ao texto original.</p>
<blockquote><p>String txt = &#8220;Texto não verificado a codificação&#8221;;</p>
<p>String txtUTF8 = new String(txt.getBytes(&#8220;UTF-8&#8243;));</p>
<p>if (!txt.equals(txtUTF8)) {</p>
<p style="padding-left:30px;">System.out.println(&#8220;Texto original nao esta em UTF-8&#8243;);</p>
<p>}</p></blockquote>
<h2>Validando XML UTF-8</h2>
<div id="_mcePaste">No exemplo abaixo mostrarei de forma simples como validar uma String que contem um XML.</div>
<div>
<blockquote>
<div>try {</div>
<div style="padding-left:30px;">String XML = &#8220;&lt;?xml version=&#8217;1.0&#8242; encoding=&#8217;UTF-8&#8242;?&gt;&lt;root&gt;&lt;filho atributo=&#8217;valorAtributo&#8217;&gt;Ythalo Rossy&lt;/filho&gt;&lt;/root&gt;&#8221;;</div>
<div><span style="white-space:pre;"> </span></div>
<div style="padding-left:30px;">DocumentBuilderFactory builderFactory = DocumentBuilderFactory.newInstance();</div>
<div style="padding-left:30px;">DocumentBuilder builder = builderFactory.newDocumentBuilder();</div>
<div style="padding-left:30px;">Document document = builder.parse(new ByteArrayInputStream(XML.getBytes()));</div>
<div><span style="white-space:pre;"> </span></div>
<div style="padding-left:30px;">if (document != null) {</div>
<div><span style="white-space:pre;"> </span></div>
<div style="padding-left:60px;">String encoding = document.getXmlEncoding();</div>
<div><span style="white-space:pre;"> </span></div>
<div style="padding-left:60px;">if (encoding == null || encoding.equalsIgnoreCase(&#8220;&#8221;) || (!encoding.equalsIgnoreCase(&#8220;UTF-8&#8243;))) {</div>
<div style="padding-left:90px;">System.out.println(&#8220;XML nao codificado em UTF-8&#8243;);</div>
<div style="padding-left:60px;">} else {</div>
<div style="padding-left:90px;">System.out.println(&#8220;XML codificado em UTF-8&#8243;);</div>
<div style="padding-left:60px;">}</div>
<div style="padding-left:30px;">}</div>
<div>} catch (ParserConfigurationException e) {</div>
<div>} catch (SAXException e) {</div>
<div>} catch (IOException e) {</div>
<div>}</div>
</blockquote>
<div>Como viram foi apenas um resumo, dicas, sobre o assunto, assim que formular mais alguma dica volto a complementar.</div>
</div>
 Tagged: utf-8, utf8 <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/yross.wordpress.com/173/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/yross.wordpress.com/173/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/yross.wordpress.com/173/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/yross.wordpress.com/173/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/yross.wordpress.com/173/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/yross.wordpress.com/173/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/yross.wordpress.com/173/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/yross.wordpress.com/173/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/yross.wordpress.com/173/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/yross.wordpress.com/173/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=yross.wordpress.com&blog=975461&post=173&subd=yross&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://yross.wordpress.com/2009/11/03/convertendo-e-validando-string-em-utf-8/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/685b3f23c754195149b8fe2f4337fd45?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">yross</media:title>
		</media:content>
	</item>
		<item>
		<title>Certificações Java &#8211; Treinamentos gratuitos</title>
		<link>http://yross.wordpress.com/2009/10/30/certificacoes-java-treinamentos-gratuitos/</link>
		<comments>http://yross.wordpress.com/2009/10/30/certificacoes-java-treinamentos-gratuitos/#comments</comments>
		<pubDate>Fri, 30 Oct 2009 19:36:09 +0000</pubDate>
		<dc:creator>Ythalo Rossy</dc:creator>
				<category><![CDATA[Certificações]]></category>
		<category><![CDATA[JEE]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[certificacao]]></category>

		<guid isPermaLink="false">http://yross.wordpress.com/?p=167</guid>
		<description><![CDATA[Segue abaixo alguns endereços que podem ser utilizados para estudar para certificações Java.
SCJP
http://java.sun.com/docs/books/tutorial/extra/certification/index.html
Teste de proficiência - Java Platform

Sun Certified Programmer for the Java 2 Platform, Standard Edition 5.0 (CX-310-055)
Sun Certified Business Component Developer for the Java Platform, Enterprise Edition 5 (CX-310-091)
Sun Certified Mobile Application Developer for the Java 2 Platform, Micro Edition, Version 1.0 (CX-310-110)
Sun Certified Developer [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=yross.wordpress.com&blog=975461&post=167&subd=yross&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>Segue abaixo alguns endereços que podem ser utilizados para estudar para certificações Java.</p>
<p><strong>SCJP</strong></p>
<p><a href="http://java.sun.com/docs/books/tutorial/extra/certification/index.html">http://java.sun.com/docs/books/tutorial/extra/certification/index.html</a></p>
<p><strong>Teste de proficiência - Java Platform</strong></p>
<ul>
<li><a href="https://www.suntrainingcatalogue.com/eduserv/starlight/055-Jintro.jsp">Sun Certified Programmer for the Java 2 Platform, Standard Edition 5.0 (CX-310-055)</a></li>
<li><a href="https://www.suntrainingcatalogue.com/eduserv/starlight/091-Jintro.jsp">Sun Certified Business Component Developer for the Java Platform, Enterprise Edition 5 (CX-310-091)</a></li>
<li><a href="https://www.suntrainingcatalogue.com/eduserv/starlight/110-Jintro.jsp">Sun Certified Mobile Application Developer for the Java 2 Platform, Micro Edition, Version 1.0 (CX-310-110)</a></li>
<li><a href="https://www.suntrainingcatalogue.com/eduserv/starlight/220-Jintro.jsp">Sun Certified Developer for Java Web Services (CX-310-220)</a></li>
</ul>
<p><strong>Tutoriais Java</strong></p>
<p><a href="http://java.sun.com/docs/books/tutorial/">http://java.sun.com/docs/books/tutorial/</a></p>
<p>Quem tiver mais alguma dica pode comentar que adiciono.</p>
 Tagged: certificacao, Java <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/yross.wordpress.com/167/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/yross.wordpress.com/167/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/yross.wordpress.com/167/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/yross.wordpress.com/167/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/yross.wordpress.com/167/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/yross.wordpress.com/167/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/yross.wordpress.com/167/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/yross.wordpress.com/167/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/yross.wordpress.com/167/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/yross.wordpress.com/167/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=yross.wordpress.com&blog=975461&post=167&subd=yross&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://yross.wordpress.com/2009/10/30/certificacoes-java-treinamentos-gratuitos/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/685b3f23c754195149b8fe2f4337fd45?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">yross</media:title>
		</media:content>
	</item>
		<item>
		<title>Ciclo de vida de um JSP</title>
		<link>http://yross.wordpress.com/2009/09/11/ciclo-de-vida-de-um-jsp/</link>
		<comments>http://yross.wordpress.com/2009/09/11/ciclo-de-vida-de-um-jsp/#comments</comments>
		<pubDate>Fri, 11 Sep 2009 01:56:42 +0000</pubDate>
		<dc:creator>Ythalo Rossy</dc:creator>
				<category><![CDATA[Certificações]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[SCWCD]]></category>
		<category><![CDATA[JEE]]></category>
		<category><![CDATA[JSP]]></category>

		<guid isPermaLink="false">http://yross.wordpress.com/?p=160</guid>
		<description><![CDATA[Como qualquer outra linguagem, o &#8220;scripting&#8221; JSP tem uma gramática bem definida que inclui elementos de sintaxe para desenvolver diversos processos. Uma linguagem de alto nível, que também é chamada de &#8220;TAGS JSP&#8221;, classificadas em seis categorias.
Comentarei um pouco sobre cada uma dessas categorias.
Forma resumida das categorias

Directive: Especifica o momento de tradução do JSP
Declaration: Declara [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=yross.wordpress.com&blog=975461&post=160&subd=yross&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>Como qualquer outra linguagem, o &#8220;scripting&#8221; JSP tem uma gramática bem definida que inclui elementos de sintaxe para desenvolver diversos processos. Uma linguagem de alto nível, que também é chamada de &#8220;TAGS JSP&#8221;, classificadas em seis categorias.<br />
Comentarei um pouco sobre cada uma dessas categorias.</p>
<p><strong>Forma resumida das categorias</strong></p>
<ul>
<li><strong>Directive</strong>: Especifica o momento de tradução do JSP</li>
<li><strong>Declaration</strong>: Declara e define métodos e variáveis</li>
<li><strong>Scriplet</strong>: Permite ao desenvolvedor escrever de forma livre dentro de página JSP</li>
<li><strong>Expression</strong>: Usado para imprimir (escrever) valores no HTML de saída em uma página JSP</li>
<li><strong>Action</strong>: Prové instruções em tempo de execução para o motor JSP</li>
<li><strong>Comment</strong>: Usado para documentação e comentário do código JSP</li>
</ul>
<p><strong><span id="more-160"></span>Forma detalhada das categorias</strong></p>
<h3>DIRECTIVE (Diretivas)</h3>
<p style="text-align:justify;">As &#8220;directives&#8221; (diretivas) prevêem informações gerais sobre a página JSP para o motor JSP. Existem três tipos de diretivas: page, include e taglib.</p>
<ul>
<li>page: Informa ao motor JSP sobre as propriedades da página JSP.</li>
</ul>
<blockquote>
<p style="text-align:justify;">Exemplo: Informar que a página JSP usará Java como linguagem de script.<br />
&lt;%@ page language=&#8221;java&#8221; %&gt;</p></blockquote>
<ul>
<li>include: Informa ao motor JSP para incluir o conteúdo de outro arquivo (HTML, JSP, etc) na página atual.</li>
</ul>
<blockquote>
<p style="text-align:justify;">Exemplo: Informar que o conteúdo da página paginaLogin.html seja incluído dentro da página atual.<br />
&lt;%@ include file=&#8221;paginaLigin.html&#8221; %&gt;</p></blockquote>
<ul>
<li> taglib: Associa o prefixo com um tag library (biblioteca de tags).</li>
</ul>
<blockquote>
<p style="text-align:justify;">Exemplo: Associar a biblioteca “yrosslib.tld” a página JSP<br />
&lt;%@ taglib prefix=&#8221;yrosstag&#8221; uri=&#8221;yrosslib.tld&#8221; %&gt;</p></blockquote>
<p style="text-align:justify;"><strong>Observação</strong>: As diretivas SEMPRE começam com <strong>&lt;%@</strong> e terminam em <strong>%&gt;</strong><br />
&lt;%@ page        attribute-list %&gt;<br />
&lt;%@ include     attribute-list %&gt;<br />
&lt;%@ taglib      attribute-list %&gt;</p>
<p style="text-align:justify;"><strong><br />
Pontos importantes sobre a sintaxe das diretivas</strong></p>
<ul>
<li>Os nomes de tag, os atributos, os valores são &#8220;case sensitive&#8221; (Sensíveis a escrita)</li>
<li>O valor deve ser envolvido por um par de aspas simples ou duplas</li>
<li>Um par de aspas únicas é equivalente a um par de aspas simples</li>
<li>Não deve existir espaço entre o sinal de (=) e o valor.</li>
</ul>
<p style="text-align:justify;">
<h3>DECLARATIONS (Declarações)</h3>
<p style="text-align:justify;">Declaram e definem métodos e variáveis que podem ser utilizados dentro da página JSP.</p>
<p><strong>Exemplo</strong>:</p>
<p style="text-align:justify;">Declarar uma variável chamada contador do tipo inteira com valor inicial igual a zero.</p>
<blockquote>
<p style="text-align:justify;">&lt;%! int contador = 0; %&gt;</p>
</blockquote>
<p style="text-align:justify;">Esta variável será iniciada APENAS quando a página for carregada a primeira vez pelo motor JSP, o valor será mantido nas requisições subseqüentes.</p>
<p style="text-align:justify;">Uma declaração sempre inicia com <strong>&lt;%! </strong>e termina com <strong>%&gt;</strong>. Ela pode conter muitas declarações java validas.</p>
<p style="text-align:justify;"><strong>Exemplo</strong>:</p>
<blockquote><p>&lt;%! String nomes[] = {&#8220;Ythalo Rossy&#8221;, &#8220;Haylander&#8221;, &#8220;He-man&#8221;, &#8220;G.I. Joe&#8221;} %&gt;</p>
<p>&lt;%!</p>
<p style="padding-left:30px;">String getNome(int i) {</p>
<p style="padding-left:30px;">try {</p>
<p style="padding-left:60px;">return nomes[i];</p>
<p style="padding-left:30px;">} catch (Exception e) {</p>
<p style="padding-left:60px;">return null;</p>
<p style="padding-left:30px;">}</p>
<p>}</p>
<p>%&gt;</p></blockquote>
<p style="text-align:justify;">No exemplo anterior a presença das duas declarações é apenas ilustrativa, para mostrar que é possível utilizar diversas declarações.</p>
<h3>SCRIPTLETS</h3>
<p style="text-align:justify;">Scriptlets são fragmentos de código Java inserido em página JSP que são executados cada vez que são requisitadas.<br />
Permite a inserção de regras de negocio (lógica computacional) dentro das paginas JSP.</p>
<p>Uma scriptlet sempre inicia com <strong>&lt;%</strong> e termina com <strong>%&gt;</strong>. Ela pode conter muitas linha de código Java valida.</p>
<p><strong>Exemplo</strong>:</p>
<p>Página JSP que contabiliza a quantidade de acessos</p>
<blockquote><p>&lt;%@ page language=&#8221;java&#8221; %&gt;</p>
<p>&lt;%! int contador = 0;       %&gt;</p>
<p>&lt;%</p>
<p style="padding-left:30px;">out.print(&#8220;&lt;html&gt;&lt;body&gt;&#8221;);</p>
<p style="padding-left:30px;">contador++;</p>
<p style="padding-left:30px;">out.print(&#8220;Bem vindo! Você é nosso visitante numero &#8221; + contador);</p>
<p style="padding-left:30px;">out.print(&#8220;&lt;/body&gt;&lt;/html&gt;&#8221;);</p>
<p>%&gt;</p></blockquote>
<p style="text-align:justify;"><strong>Onde</strong>:</p>
<p><strong>&lt;%@ page language=&#8221;java&#8221; %&gt;: </strong>Diretiva page que diz que usaremos Java como linguagem.</p>
<p><strong>&lt;%! int contador = 0; %&gt;: </strong>Declaração de variável. Lembre que as declarações acontecem apenas uma vez ao carregar.</p>
<p><strong>&lt;%</strong></p>
<p><strong>out.print(&#8220;&lt;html&gt;&lt;body&gt;&#8221;);</strong></p>
<p style="text-align:justify;"><strong>%&gt;:</strong><strong> </strong> A referência out, que por padrão representa um objeto do tipo javax.servlet.jsp.JspWriter, é utilizada para escreve diretamente no fluxo de dados da resposta.</p>
<p style="text-align:justify;">Observe que é necessário seguir a sintaxe correta de declarações do Java. Utilizar o out.println(&#8220;TESTE&#8221;) sem colocar o (;) ponto e virgula no final gera um erro de compilação.</p>
<h3>EXPRESSIONS (Expressões)</h3>
<p style="text-align:justify;">Expressions atuam como espaços reservados para expressões da linguagem Java, que são avaliadas cada vez que a página é acessada.</p>
<p style="text-align:justify;">Tem a capacidade de escrever diretamente no HTML de saída valores primitivos, de um objeto, retorno de um método, expressões aritméticas ou booleanas.</p>
<p>Uma expressão sempre inicia com <strong>&lt;%=</strong> e termina com <strong>%&gt;</strong>.</p>
<p><strong>Observações</strong>:</p>
<ul>
<li>Só pode existir uma expressão</li>
<li>A expressão não deve ser finalizada com (;) ponto e vírgula</li>
</ul>
<p style="text-align:justify;"><strong>Exemplo</strong>:</p>
<p><strong>Validas </strong></p>
<blockquote><p>&lt;%= 500  %&gt;</p>
<p>&lt;%= anInt*3.5/100-500 %&gt;</p>
<p>&lt;%= aBool %&gt;</p>
<p>&lt;%= false %&gt;</p>
<p>&lt;%= !false %&gt;</p>
<p>&lt;%= getChar() %&gt;</p>
<p>&lt;%= Math.random() %&gt;</p>
<p>&lt;%= aVector %&gt;</p>
<p>&lt;%= aFloatObj %&gt;</p>
<p>&lt;%= aFloatObj.floatValue() %&gt;</p>
<p>&lt;%= aFloatObj.toString() %&gt;</p></blockquote>
<p>Invalidas</p>
<blockquote><p>&lt;%= aBool; %&gt;</p>
<p>&lt;%= int i = 20 %&gt;</p>
<p>&lt;%= sBuff.setLength(12); %&gt;</p></blockquote>
<p style="text-align:justify;">
<h3>ACTIONS (Ações)</h3>
<p>Actions são comandos executados diretamente pelo motor JSP durante a execução da página JSP.</p>
<p>Os actions JSP são divididos em seis padrões, conforme segue abaixo:</p>
<ul>
<li> jsp:include</li>
<li> jsp: forward</li>
<li>jsp:useBean</li>
<li>jsp:setProperty</li>
<li>jsp:getProperty</li>
<li>jsp:plugin</li>
</ul>
<p>Resumindo, jsp:include e jsp:forward permitem a página JSP utilizar outro componente web, os próximos três, jsp:useBean, jsp:setproperty e jsp:getProperty, são utilizados para o uso de javaBeans dentro das página JSP. A ultima ação, jsp:plugin, instrui ao motor JSP gerar código HTML apropriado para incorporar componentes do lado do cliente, como Applets.</p>
<p>O desenvolvedor pode customizar suas próprias ações, conhecidas como tags customizadas. A sintaxe das ações JSP segue o seguinte padrão:</p>
<blockquote>
<p style="text-align:justify;">&lt;jsp:actionName attribute-list /&gt;</p>
</blockquote>
<p><strong>Onde</strong>:</p>
<p><strong>actionName</strong>: O nome de uma das seis ações padrões mencionadas (podendos ser uma tag customizada).</p>
<p><strong>attribute-list:</strong> Representa uma lista de atributos pares chave=valor especificos para a ação.</p>
<p style="text-align:justify;"><strong>Observações</strong>:</p>
<ul>
<li>O nome da ação, seus atributos e seus valores são sensíveis a escrita (case sensitive)</li>
<li>O valor deve esta entre um par de aspas simples ou duplas</li>
<li>Não pode existir espaço em branco entre o sinal de (=) e o valor.</li>
</ul>
<h3>COMMENTS (Comentários)</h3>
<p style="text-align:justify;">São utilizados para o propósito de documentação entre os desenvolvedores e não afetam a saída da página JSP. A sintaxe de um comentário JSP é a seguinte:</p>
<blockquote><p>&lt;%&#8211; Alguma coisa a ser comentado &#8211;%&gt;</p></blockquote>
<p>O comentários em JSP sempre iniciam com &lt;%&#8211; e terminam com &#8211;%&gt;</p>
 Tagged: JEE, JSP <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/yross.wordpress.com/160/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/yross.wordpress.com/160/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/yross.wordpress.com/160/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/yross.wordpress.com/160/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/yross.wordpress.com/160/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/yross.wordpress.com/160/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/yross.wordpress.com/160/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/yross.wordpress.com/160/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/yross.wordpress.com/160/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/yross.wordpress.com/160/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=yross.wordpress.com&blog=975461&post=160&subd=yross&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://yross.wordpress.com/2009/09/11/ciclo-de-vida-de-um-jsp/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/685b3f23c754195149b8fe2f4337fd45?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">yross</media:title>
		</media:content>
	</item>
		<item>
		<title>Aniversário CEJUG</title>
		<link>http://yross.wordpress.com/2009/09/10/aniversario-cejug/</link>
		<comments>http://yross.wordpress.com/2009/09/10/aniversario-cejug/#comments</comments>
		<pubDate>Thu, 10 Sep 2009 23:11:21 +0000</pubDate>
		<dc:creator>Ythalo Rossy</dc:creator>
				<category><![CDATA[Java]]></category>

		<guid isPermaLink="false">http://yross.wordpress.com/?p=149</guid>
		<description><![CDATA[O Cejug chega aos seus sete anos de existência e entre seus diversos programas o Café com Tapioca já é um dos mais tradicionais eventos de Java e TI no Nordeste. Trazendo palestrantes nacionais e internacionais, o evento reúne e agrega a comunidade Cerense dos aficionados por Java mostrando as novidades, tendências e trabalhos de [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=yross.wordpress.com&blog=975461&post=149&subd=yross&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><div id="attachment_148" class="wp-caption aligncenter" style="width: 492px"><img class="size-full wp-image-148 " style="border:0 none;margin:1px;" title="AniversarioCEJUG2009" src="http://yross.files.wordpress.com/2009/09/aniversariocejug2009.png?w=482&#038;h=680" alt="7º Aniversário do CEJUG" width="482" height="680" /><p class="wp-caption-text">7º Aniversário do CEJUG</p></div>
<p style="text-align:justify;">O Cejug chega aos seus sete anos de existência e entre seus diversos programas o Café com Tapioca já é um dos mais tradicionais eventos de Java e TI no Nordeste. Trazendo palestrantes nacionais e internacionais, o evento reúne e agrega a comunidade Cerense dos aficionados por Java mostrando as novidades, tendências e trabalhos de desenvolvimento do estado e do mundo.</p>
<p>Venha prestigiar o evento, participar, conhecer pessoas incríveis, ganhar brindes e fazer parte dessa história.</p>
<p><a href="http://cafecomtapioca.com/blog/cafe-com-tapioca-blog/categoria/sem-categoria/ola-mundo" target="_blank"></a><span style="font-size:medium;"><strong>Programação</strong></span></p>
<p><em>- 8h10: Credenciamento</em></p>
<p><em>- 8h40:<strong> </strong> Abertura</em></p>
<p>- 9h10: <strong>“<a href="http://www.cafecomtapioca.com/palestras/19092009-9h10-%e2%80%9co-caminho-da-produtividade-para-desenvolvedores-web%e2%80%9d-com-bruno-pereira" target="_blank">O caminho da produtividade para desenvolvedores web</a>”</strong> com Bruno Pereira</p>
<p>- 10h:   <strong>“<a href="http://www.cafecomtapioca.com/palestras/19092009-10h-%e2%80%9ccomo-fazer-uma-aplicacao-jeejme-para-rodar-nos-4-cantos-do-mundo%e2%80%9d-com-regis-melo" target="_blank">Como fazer uma aplicação JEE/JME para rodar nos 4 cantos do mundo</a>”</strong> com Régis Melo</p>
<p>- 11h:   <strong>“<a href="http://www.cafecomtapioca.com/palestras/19092009-11h-%e2%80%9co-mito-dos-times-ageis%e2%80%9d-com-victor-oliveira" target="_blank">O mito dos times ágeis</a>”</strong> com Victor Oliveira</p>
<p><em>- 12h – Intervalo para Almoço. Opções próximas: <strong>Pão de Açúcar</strong>, <strong>McDonald&#8217;s</strong> ou <strong>Subway</strong> ou um pouco mais longe: <strong>Spettus</strong> (Shopping Salinas &#8211; <a title="Mapa da Spettus Churrascaria" href="http://maps.google.com.br/maps?f=q&amp;source=s_q&amp;hl=pt-BR&amp;q=Shopping+Iguatemi&amp;vps=1&amp;jsv=173b&amp;sll=-3.768851,-38.481481&amp;sspn=0.011862,0.022724&amp;ie=UTF8&amp;ei=Bp-YSvPNL5zA8QSLrJXqCQ&amp;sig2=k9sEC0wLB6DZTdrliRsTPw&amp;cd=1&amp;usq=Shopping+Iguatemi&amp;geocode=FcCrxv8dJq60_Q&amp;cid=11767842235902281774&amp;li=lmd" target="_blank">mapa</a>); <strong>Ferreiro Café</strong> (Shopping Iguatemi &#8211; <a title="Mapa do Shopping Iguatemi" href="http://maps.google.com.br/maps?f=q&amp;source=s_q&amp;hl=pt-BR&amp;q=Shopping+Iguatemi&amp;vps=1&amp;jsv=173b&amp;sll=-3.768851,-38.481481&amp;sspn=0.011862,0.022724&amp;ie=UTF8&amp;ei=Bp-YSvPNL5zA8QSLrJXqCQ&amp;sig2=k9sEC0wLB6DZTdrliRsTPw&amp;cd=1&amp;usq=Shopping+Iguatemi&amp;geocode=FcCrxv8dJq60_Q&amp;cid=11767842235902281774&amp;li=lmd" target="_blank">mapa</a>).</em></p>
<p>- 13h30: <strong>“<a href="http://www.cafecomtapioca.com/palestras/19092009-13h30-%e2%80%9cos-10-maus-habitos-dos-desenvolvedores-jsf%e2%80%9d-com-tarso-bessa-e-rafael-ponte" target="_blank">Os 10 maus hábitos dos desenvolvedores JSF</a>”</strong> com Tarso Bessa e Rafael Ponte</p>
<p>- 14h20: <strong>“<a href="http://www.cafecomtapioca.com/palestras/19092009-14h20-%e2%80%9cturbinando-sua-aplicacao-com-lucene-conheca-solr-e-hibernate-search%e2%80%9d-com-jeveaux" target="_blank">Turbinando sua aplicação com Lucene: conheça Solr e Hibernate Search</a>”</strong> com Jeveaux</p>
<p><em>- 15h10: Lanche</em></p>
<p>- 15h20: <strong>“<a href="http://www.cafecomtapioca.com/palestras/rodrigo-yoshima-presenca-confirmada" target="_blank">O que matou o RUP também pode matar o Agile</a>”</strong> com Rodrigo Yoshima</p>
<p>- 16h30: <strong>&#8220;</strong><a title="Sinópse da Palestra Desmistificando o TDD na prática" href="http://www.cafecomtapioca.com/palestras/paulo-silveira-presenca-confirmada" target="_blank"><strong>Desmistificando o TDD na prática</strong></a><strong>&#8220;</strong> com  Paulo Silveira</p>
<p><em>- 17h40 &#8211; Sorteios</em></p>
  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/yross.wordpress.com/149/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/yross.wordpress.com/149/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/yross.wordpress.com/149/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/yross.wordpress.com/149/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/yross.wordpress.com/149/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/yross.wordpress.com/149/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/yross.wordpress.com/149/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/yross.wordpress.com/149/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/yross.wordpress.com/149/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/yross.wordpress.com/149/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=yross.wordpress.com&blog=975461&post=149&subd=yross&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://yross.wordpress.com/2009/09/10/aniversario-cejug/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/685b3f23c754195149b8fe2f4337fd45?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">yross</media:title>
		</media:content>

		<media:content url="http://yross.files.wordpress.com/2009/09/aniversariocejug2009.png" medium="image">
			<media:title type="html">AniversarioCEJUG2009</media:title>
		</media:content>
	</item>
		<item>
		<title>Autenticação Servlet &#8211; Parte 02</title>
		<link>http://yross.wordpress.com/2009/08/20/autenticacao-servlet-parte-02/</link>
		<comments>http://yross.wordpress.com/2009/08/20/autenticacao-servlet-parte-02/#comments</comments>
		<pubDate>Thu, 20 Aug 2009 22:08:23 +0000</pubDate>
		<dc:creator>Ythalo Rossy</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[Authentication]]></category>
		<category><![CDATA[HTTP Basic authentication]]></category>
		<category><![CDATA[HTTP Digest authentication]]></category>
		<category><![CDATA[HTTP FORM-based authentication]]></category>
		<category><![CDATA[HTTPS Client authentication]]></category>
		<category><![CDATA[Servlet]]></category>

		<guid isPermaLink="false">http://yross.wordpress.com/?p=144</guid>
		<description><![CDATA[Dentro da especificação Servlet existe uma parcela que compreende a segurança dos recursos acessados por cliente. Dentre estes recursos esta autenticação através de formulário, certificados digitais e ate mesmo por tela autenticação gerada pelo próprio browser.
Dividirei o conteúdo em algumas partes e logo que for terminando de compor estarei disponibilizando. Segue abaixo em negrito o [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=yross.wordpress.com&blog=975461&post=144&subd=yross&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>Dentro da especificação Servlet existe uma parcela que compreende a segurança dos recursos acessados por cliente. Dentre estes recursos esta autenticação através de formulário, certificados digitais e ate mesmo por tela autenticação gerada pelo próprio browser.</p>
<p>Dividirei o conteúdo em algumas partes e logo que for terminando de compor estarei disponibilizando. Segue abaixo em negrito o conteúdo que terminei:</p>
<p><a href="http://yross.wordpress.com/2009/08/10/autenticacao-servlet"><strong>Parte 01: Os quatro mecanismo de autenticação</strong></a></p>
<p><span style="color:#000000;"><a href="http://yross.wordpress.com/2009/08/20/autenticacao-servlet-parte-02/" target="_self"><strong>Parte 02: Implantando</strong></a></span></p>
<p><span style="color:#000000;"><strong><span id="more-144"></span></strong></span></p>
<h3>Implantando mecanismos de autenticação para aplicações web</h3>
<p>Todas as configuração de autenticação são feitas no descritor de implantação (web.xml) e são conhecidas como segurança declarativa. Por padrão todos os recursos de uma aplicação web são acessíveis por todos. Para restringir acesso aos recursos, precisamos identificar três coisas:</p>
<ul>
<li>Coleção de recursos web (Web resource collection): São os recursos que realmente precisam de restrições, tais como arquivos HTML, Servlets, entre outros.</li>
<li>Restrição de autorização (Authorization constraint): São as regras que um usuário/cliente do recurso precisa ter para acessar.</li>
<li>Restrição de dados do usuário (User data constraint): Especifica o caminho que os dados devem seguir para serem transmitidos do emissor ate o receptor. Em outras palavras, específica a camada de transporte que mantém a política de integridade dos dados e confidencialidade.</li>
</ul>
<p style="text-align:justify;">A configuração destes itens acontece no descritor de implantação (web.xml) através do elemento  &lt;security-constraint&gt;, que fica diretamente abaixo do elemento &lt;web-app&gt;.</p>
<blockquote><p>&lt;web-app&gt;</p>
<p style="padding-left:30px;">&#8230;</p>
<p>&lt;security-constraint&gt;</p>
<p style="padding-left:30px;">&lt;web-resource-collection&gt;</p>
<p style="padding-left:60px;">&lt;web-resource-name&gt;relatorios&lt;/web-resource-name&gt;</p>
<p style="padding-left:60px;">&lt;url-pattern&gt;/servlet/YRossRelatoriosServlet/*&lt;/url-pattern&gt;</p>
<p style="padding-left:60px;">&lt;url-pattern&gt;/servlet/YRossFinanceirosServlet/*&lt;/url-pattern&gt;</p>
<p style="padding-left:60px;">&lt;http-method&gt;GET&lt;/http-method&gt;</p>
<p style="padding-left:60px;">&lt;http-method&gt;POST&lt;/http-method&gt;</p>
<p style="padding-left:30px;">&lt;/web-resource-collection&gt;</p>
<p style="padding-left:30px;">&lt;user-data-constraint&gt;</p>
<p style="padding-left:60px;">&lt;transport-guarantee&gt;CONFIDENCIAL&lt;/transport-guarantee&gt;</p>
<p style="padding-left:30px;">&lt;/user-data-constraint&gt;</p>
<p>&lt;/security-constraint&gt;</p>
<p>&lt;login-config&gt;</p>
<p style="padding-left:30px;">&lt;auth-method&gt;CLIENT-CERT&lt;/auth-method&gt;</p>
<p>&lt;/login-config&gt;</p>
<p>&#8230;</p>
<p>&lt;/web-app&gt;</p></blockquote>
<p>Onde:</p>
<p>&lt;web-resource-collection&gt;: Especifica uma coleção de recursos que devem ser aplicadas restrições de segurança.</p>
<p>&lt;web-resource-name&gt;: Nome do recurso</p>
<p style="text-align:justify;">&lt;url-pattern&gt;: Específica o padrão URL em que o recurso será acessado. Semelhante ao &lt;url-pattern&gt; do elemento &lt;servlet-mapping&gt; do mapeamento de URL para um servlet.</p>
<p>&lt;http-method&gt;: Provém um controle sobre requisições HTTP. Específica o método HTTP que as regras de segurança serão aplicadas.</p>
<p style="text-align:justify;">No exemplo anterior serão aplicadas regras de segurança para todas as requisições aos servlets YRossRelatoriosServlet e YRossFinanceirosServlet, sejam elas GET ou POST.</p>
<p style="text-align:justify;">Observação: A ausência do elemento &lt;http-method&gt;, fará com que todas as requisições, independente do método HTTP, sejam restringidas por regras de segurança, caso exista.</p>
<p style="text-align:justify;">É possível observar que dentro do elemento &lt;security-constraint&gt; no exemplo anterior o elemento &lt;security-constraint&gt; é declarado informando o tipo de canal de comunição entre o cliente e servidor.</p>
<blockquote><p>&lt;user-data-constraint&gt;</p>
<p style="padding-left:30px;">&lt;transport-guarantee&gt;CONFIDENCIAL&lt;/transport-guarantee&gt;</p>
<p>&lt;/user-data-constraint&gt;</p></blockquote>
<p>Onde:</p>
<p>&lt;transport-guarantee&gt;: Especifica a comunicação entre o cliente e o servidor. Pode assumir os seguintes valores:</p>
<p>- NONE: A aplicação não requer um transporte garantido.</p>
<p style="text-align:justify;">- INTEGRAL: A aplicação requer que os dados enviados do cliente ao servidor estejam em um caminho em que as informações não podem ser alteradas em  trânsito. Princípio da Integridade.</p>
<p style="text-align:justify;">- CONFIDENTIAL: A aplicação requer que os dados sejam transmitidos em uma forma que impede que outras entidades observem o conteúdo da transmissão. Geralmente utilizado sobre SSL.</p>
<p>O trecho abaixo, ainda do exemplo anterior, informa que tipo de autenticação será realizada entre o cliente e o servidor.</p>
<blockquote><p>&lt;login-config&gt;</p>
<p style="padding-left:30px;">&lt;auth-method&gt;CLIENT-CERT&lt;/auth-method&gt;</p>
<p>&lt;/login-config&gt;</p></blockquote>
<p>Onde:</p>
<p>&lt;auth-method&gt;: Indica qual o método de autenticação. Assume como valor: BASIC, CLIENT-CERT e FORM.</p>
 Tagged: Authentication, HTTP Basic authentication, HTTP Digest authentication, HTTP FORM-based authentication, HTTPS Client authentication, Servlet <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/yross.wordpress.com/144/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/yross.wordpress.com/144/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/yross.wordpress.com/144/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/yross.wordpress.com/144/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/yross.wordpress.com/144/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/yross.wordpress.com/144/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/yross.wordpress.com/144/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/yross.wordpress.com/144/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/yross.wordpress.com/144/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/yross.wordpress.com/144/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=yross.wordpress.com&blog=975461&post=144&subd=yross&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://yross.wordpress.com/2009/08/20/autenticacao-servlet-parte-02/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/685b3f23c754195149b8fe2f4337fd45?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">yross</media:title>
		</media:content>
	</item>
		<item>
		<title>Autenticação Servlet &#8211; Parte 01</title>
		<link>http://yross.wordpress.com/2009/08/10/autenticacao-servlet/</link>
		<comments>http://yross.wordpress.com/2009/08/10/autenticacao-servlet/#comments</comments>
		<pubDate>Mon, 10 Aug 2009 22:02:53 +0000</pubDate>
		<dc:creator>Ythalo Rossy</dc:creator>
				<category><![CDATA[Certificações]]></category>
		<category><![CDATA[JEE]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[SCWCD]]></category>
		<category><![CDATA[Authentication]]></category>
		<category><![CDATA[HTTP Basic authentication]]></category>
		<category><![CDATA[HTTP Digest authentication]]></category>
		<category><![CDATA[HTTP FORM-based authentication]]></category>
		<category><![CDATA[HTTPS Client authentication]]></category>
		<category><![CDATA[Servlet]]></category>

		<guid isPermaLink="false">http://yross.wordpress.com/?p=129</guid>
		<description><![CDATA[Dentro da especificação Servlet existe uma parcela que compreende a segurança dos recursos acessados por cliente. Dentre estes recursos esta autenticação através de formulário, certificados digitais e ate mesmo por tela autenticação gerada pelo próprio browser.
Dividirei o conteúdo em algumas partes e logo que for terminando de compor estarei disponibilizando. Segue abaixo em negrito o [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=yross.wordpress.com&blog=975461&post=129&subd=yross&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>Dentro da especificação Servlet existe uma parcela que compreende a segurança dos recursos acessados por cliente. Dentre estes recursos esta autenticação através de formulário, certificados digitais e ate mesmo por tela autenticação gerada pelo próprio browser.</p>
<p>Dividirei o conteúdo em algumas partes e logo que for terminando de compor estarei disponibilizando. Segue abaixo em negrito o conteúdo que terminei:</p>
<p><a href="http://yross.wordpress.com/2009/08/10/autenticacao-servlet"><strong>Parte 01: Os quatro mecanismo de autenticação</strong></a></p>
<p><span style="color:#000000;"><a href="http://yross.wordpress.com/2009/08/20/autenticacao-servlet-parte-02/" target="_self"><strong>Parte 02: Implantando</strong></a></span></p>
<p><span id="more-129"></span></p>
<h3>Parte 01: Os quatro mecanismo de autenticação</h3>
<p>A especificação Servlet define quatro mecanismos de autenticação de usuários.</p>
<ul>
<li>HTTP Basic authentication</li>
<li>HTTP Digest authentication</li>
<li>HTTPS Client authentication</li>
<li>HTTP FORM-based authentication</li>
</ul>
<h3>HTTP Basic Authentication</h3>
<p style="text-align:justify;">Definido na especificação HTTP 1.1 é o mais simples e mais comum mecanismo usado para proteger recursos. Onde cada vez que um recurso protegido é solicitado é o browser retorna com uma tela solicitando nome de usuário e senha.</p>
<p>Em resumo os seguintes passos acontecem:</p>
<ul>
<li style="text-align:justify;">O browser/navegador envia uma requisição para um recurso protegido. Mas o browser não sabe que este recurso é protegido, ele apenas envia uma requisição normal HTTP e aguarda a resposta.</li>
</ul>
<blockquote>
<p style="text-align:justify;">Exemplo: GET /servlet/YRossServlet HTTP/1.1</p>
</blockquote>
<ul>
<li style="text-align:justify;">O servidor ao receber a solicitação observa que o recurso é protegido, e ao invés de enviar o recurso, uma mensagem contendo o &#8220;code de status&#8221; igual a 401 Unauthorized é retornada de volta para o cliente (browser). Nesta mensagem, uma linha de cabeçalho é adicionada para informar ao browser que uma autenticação básica é necessária para acessar o recurso. Este cabeçalho especifica o contexto em que a autenticação será valida. Este contexto é conhecido como &#8220;realm&#8221;. Ele ajuda a organizar a lista de acesso dentro do servidor em diferentes categorias.</li>
</ul>
<p style="padding-left:30px;text-align:justify;">Exemplo:</p>
<blockquote><p>HTTP/1.1 401 Unauthorized<br />
Server: Tomcat/5.0.25<br />
WWW-Authenticate: Basic realm=&#8221;administracao&#8221;<br />
Content-Length=500<br />
Content-Type=text/html</p>
<p>&lt;html&gt;<br />
&#8230; dados&#8230;<br />
&lt;/html&gt;</p></blockquote>
<p style="padding-left:30px;">Onde:</p>
<blockquote><p>WWW-Authenticate: Basic: especifica o tipo de autenticação como Basic</p>
<p>realm=&#8221;administracao&#8221;: especifica o contexto (realm)</p></blockquote>
<ul>
<li style="text-align:justify;">O browser recebe esta resposta, abre uma caixa de diálogo perguntando pelo nome de usuário e senha.</li>
<li style="text-align:justify;">Uma vez que usuário entrou com nome de usuário e senha, o browser reenvia a requisição e passa no cabeçalho o valor &#8220;Authorization&#8221; com as informações digitadas pelo cliente.</li>
</ul>
<p style="padding-left:30px;">Exemplo:</p>
<blockquote><p>GET /servlet/SalesServlet HTTP/1.1<br />
Authorization: Basic am9objpqamo=</p></blockquote>
<p style="padding-left:30px;">Onde:</p>
<blockquote>
<p style="text-align:justify;">O Authorization especifica o realm como Basic e o valor &#8220;am9objpqamo=&#8221; é composição do nome de usuário e senha no seguinte formato: nomeusuario:senha, encodado na base 64 (Base64 encoded).</p>
</blockquote>
<ul>
<li style="text-align:justify;">Quando o servidor recebe a requisição, ela valida o nome de usuário e senha. Se eles são validos, ele envia o recurso, por outro lado, se as informações estão invalidas, o servidor envia a mesma mensagem 401 Unauthorized.</li>
<li>O browser mostra o recurso (ou a caixa de dialogo novamente, solicitando nome de usuário e senha).</li>
</ul>
<p><strong>Vantagens</strong></p>
<ol>
<li>É muito fácil de usar.</li>
<li>Todos os browsers suportam, por ser uma especificação do HTTP 1.1</li>
</ol>
<p><strong>Desvantagens</strong></p>
<ol>
<li>Não é seguro porque o nome de usuário e senha não são encriptados.</li>
<li>Não é possível customizar, modificar, o visual da caixa de diálogo que solicita nome de usuário e senha.</li>
</ol>
<h3>HTTP Digest Authentication</h3>
<p style="text-align:justify;">Segue os mesmos passos do HTTP Basic authentication, mas neste caso a senha (password) é enviada em formato encriptado. Este método torna mais seguro a autenticação.</p>
<p><strong>Vantagens</strong></p>
<ol>
<li>Um pouco mais seguro que HTTP Basic authentication, por ter a senha (password) encriptado.</li>
</ol>
<p><strong>Desvantagens</strong></p>
<ol>
<li>É suportado apenas em alguns browsers, como em versões superiores do Internet Explore 5.</li>
<li>Muitos &#8220;servlet container&#8221; não suportam, pois a especificação não obriga.</li>
</ol>
<h3>HTTPS Client Authentication</h3>
<p>HTTPS é o HTTP sobre SSL (Secure Socket Layer).</p>
<p style="text-align:justify;">SSL foi desenvolvido pela Netscape para assegurar a privacidade da transmissão de dados sensíveis sobre a internet. Neste mecanismo, a autenticação é feita quando uma conexão SSL e estabelecida entre o browser e o servidor. Todos os dados são transmitidos em formato encriptado utilizando criptografia de chave publica(public-key) entre o browser e o &#8220;servlet container&#8221;, fincando assim transparente para o desenvolvedor.</p>
<p><strong>Vantagens</strong></p>
<ol>
<li>É o sistema de autenticação mais seguro, entre os quatro tipos especificados.</li>
<li>Todos os browsers comumente usados têm suporte.</li>
</ol>
<p><strong>Desvantagens</strong></p>
<ol>
<li>É necessário um certificado de uma autoridade certificadora, como VeriSign, ou ICP-Brasil.</li>
<li>É custosa a implementação e manutenção.</li>
</ol>
<h3>FORM-based Authentication</h3>
<p style="text-align:justify;">Este mecanismo é similar a autenticação básica (Basic Authentication). Entretanto, neste é utilizado um formulário  HTML para captura o nome usuário e senha (username/password). O desenvolvedor deve criar uma página HTML contendo o formulário, que permite a customização do visual.</p>
<p>O unico requerimento é que a ação do formulário seja j_security_check e que deve ter dois campos: j_username e i_password.</p>
<p><strong>Vantagens</strong></p>
<ol>
<li>É muito fácil de implementar</li>
<li>Todos os browsers suportam</li>
<li>É possível a customização da tela de autenticação.</li>
</ol>
<p><strong>Desvantagens</strong></p>
<ol>
<li>Não é seguro, o nome de usuário e senha não são encriptados.</li>
<li>Deve ser usado apenas quando uma sessão é mantida usando cookies ou HTTPS</li>
</ol>
<h3>Implantando</h3>
<p><span style="color:#888888;"><em>Em Breve&#8230;</em></span></p>
 Tagged: Authentication, HTTP Basic authentication, HTTP Digest authentication, HTTP FORM-based authentication, HTTPS Client authentication, Servlet <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/yross.wordpress.com/129/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/yross.wordpress.com/129/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/yross.wordpress.com/129/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/yross.wordpress.com/129/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/yross.wordpress.com/129/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/yross.wordpress.com/129/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/yross.wordpress.com/129/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/yross.wordpress.com/129/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/yross.wordpress.com/129/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/yross.wordpress.com/129/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=yross.wordpress.com&blog=975461&post=129&subd=yross&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://yross.wordpress.com/2009/08/10/autenticacao-servlet/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/685b3f23c754195149b8fe2f4337fd45?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">yross</media:title>
		</media:content>
	</item>
		<item>
		<title>Filtro de Servlets (Servlets Filters)</title>
		<link>http://yross.wordpress.com/2009/07/28/filtro-de-servlets-servlets-filters/</link>
		<comments>http://yross.wordpress.com/2009/07/28/filtro-de-servlets-servlets-filters/#comments</comments>
		<pubDate>Tue, 28 Jul 2009 02:29:23 +0000</pubDate>
		<dc:creator>Ythalo Rossy</dc:creator>
				<category><![CDATA[Certificações]]></category>
		<category><![CDATA[JEE]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[SCWCD]]></category>
		<category><![CDATA[ERROR]]></category>
		<category><![CDATA[filter]]></category>
		<category><![CDATA[filter-name]]></category>
		<category><![CDATA[FORWARD]]></category>
		<category><![CDATA[javax.servlet.Filter]]></category>
		<category><![CDATA[Request]]></category>
		<category><![CDATA[REQUIRED]]></category>
		<category><![CDATA[response]]></category>
		<category><![CDATA[Servlet]]></category>
		<category><![CDATA[url-pattern]]></category>

		<guid isPermaLink="false">http://yross.wordpress.com/?p=118</guid>
		<description><![CDATA[Tecnicamente falando, filtro é um objeto que intercepta uma mensagem de requisição entre a origem/cliente e destino/recurso.
Como funciona?
Associando a origem ao browser/navegador, o destino a um servlet e uma implementação de HttpServletRequest a mensagem de requisiçao é possível interceptar estas requisições através de um filtro.
A mensagem antes de chegar ao servlet é recepcionada/interceptada por um [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=yross.wordpress.com&blog=975461&post=118&subd=yross&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p style="text-align:justify;">Tecnicamente falando, filtro é um objeto que intercepta uma mensagem de requisição entre a origem/cliente e destino/recurso.</p>
<h3>Como funciona?</h3>
<p style="text-align:justify;">Associando a origem ao browser/navegador, o destino a um servlet e uma implementação de HttpServletRequest a mensagem de requisiçao é possível interceptar estas requisições através de um filtro.</p>
<p style="text-align:justify;">A mensagem antes de chegar ao servlet é recepcionada/interceptada por um filtro que aplica alguma regra de negocio da aplicação e permite ou não o acesso ao servlet. Caso o acesso seja concebido a mensagem chegará ate o servlet e será processada, ao terminar o processo o servlet responde (HttpServletResponse), a resposta passará novamente pelo filtro antes de chegar ao cliente/origem.</p>
<p style="text-align:justify;"><span id="more-118"></span></p>
<div id="attachment_122" class="wp-caption aligncenter" style="width: 460px"><img class="size-full wp-image-122 " title="Exemplo de Filtro Simples" src="http://yross.files.wordpress.com/2009/07/filtersimples.jpg?w=450&#038;h=204" alt="Exemplo de Filtro Simples" width="450" height="204" /><p class="wp-caption-text">Exemplo de Filtro Simples</p></div>
<h3>Encadeando</h3>
<p style="text-align:justify;">É possível encadear vários filtros, por exemplo, supondo que é necessário verificar se um cliente esta autenticado (AutenticadoFiltro) e se tem permissão (PermissãoFiltro) para acessar determinado recurso. Desta forma ao acessar o recurso o filtro AutenticadoFiltro é executado, logo em seguida o PermisãoFiltro é executado, caso o acesso seja concebido o recurso é acessado e processado, quando uma resposta estiver voltando para o cliente, os filtros serão acessados de forma contraria, desta vez o PermisãoFiltro será executado primeiro e logo em seguinda o AunteticadoFiltro.</p>
<p style="text-align:justify;">
<div id="attachment_123" class="wp-caption aligncenter" style="width: 460px"><img class="size-full wp-image-123" title="Exemplo de Filtro Encadeado" src="http://yross.files.wordpress.com/2009/07/filterencadeado.jpg?w=450&#038;h=157" alt="Exemplo de Filtro Encadeado" width="450" height="157" /><p class="wp-caption-text">Exemplo de Filtro Encadeado</p></div>
<p style="text-align:justify;">Filtros podem ser utilizados para diversas funcionalidades, tais como: Autenticação, Log, conversão de imagens, compressão de dados, criptografia, dentre outros.</p>
<h3>Filtro em ação</h3>
<blockquote><p>import java.io.*;<br />
import javax.servlet.*;</p>
<p>public class YRossFilter implements Filter {</p>
<p style="padding-left:30px;">private FilterConfig filterConfig;</p>
<p style="padding-left:30px;">public void init(FilterConfig filterConfig){</p>
<p style="padding-left:60px;">this.filterConfig = filterConfig;</p>
<p style="padding-left:30px;">}</p>
<p style="padding-left:30px;">public void doFilter(ServletRequest request, ServletResponse response, FilterChain filterChain)</p>
<p style="padding-left:60px;">throws ServletException, IOException {</p>
<p style="padding-left:60px;">PrintWriter pw = response.getWriter();</p>
<p style="padding-left:60px;">pw.println(&#8220;&lt;html&gt;&#8221;);</p>
<p style="padding-left:60px;">pw.println(&#8220;&lt;head&gt;&#8221;);</p>
<p style="padding-left:60px;">pw.println(&#8220;&lt;/head&gt;&#8221;);</p>
<p style="padding-left:60px;">pw.println(&#8220;&lt;body&gt;&#8221;);</p>
<p style="padding-left:60px;">pw.println(&#8220;&lt;h3&gt;YRoss Filter!&lt;/h3&gt;&#8221;);</p>
<p style="padding-left:60px;">pw.println(&#8220;&lt;/body&gt;&#8221;);</p>
<p style="padding-left:60px;">pw.println(&#8220;&lt;/html&gt;&#8221;);</p>
<p style="padding-left:60px;">pw.flush();</p>
<p style="padding-left:30px;">}</p>
<p style="padding-left:30px;">public void destroy() { }</p>
<p>}</p></blockquote>
<p style="text-align:justify;">No exemplo anterior o filtro apenas retorna uma mensagem para o browser/origem utilizando o ServletResponse. É importante resaltar</p>
<p><span style="font-size:15px;font-weight:800;">Implantando o Filtro</span></p>
<p style="text-align:justify;">É necessário algumas tags no descritor de implantação (web.xml) para que os filtros possam interagir com as requisições e respostas. Segue como deve ficar as tags:</p>
<blockquote>
<p style="padding-left:30px;">&lt;web-app&gt;</p>
<p style="padding-left:60px;">…</p>
<p style="padding-left:60px;">&lt;filter&gt;</p>
<p style="padding-left:30px;">&lt;filter-name&gt;YRossFilter&lt;/filter-name&gt;</p>
<p style="padding-left:30px;">&lt;filter-class&gt;br.com.yross.filters.YRossFilter&lt;/filter-class&gt;</p>
<p style="padding-left:60px;">&lt;/filter&gt;</p>
<p style="padding-left:60px;">&lt;filter-mapping&gt;</p>
<p style="padding-left:30px;">&lt;filter-name&gt;YRossFilter&lt;/filter-name&gt;</p>
<p style="padding-left:30px;">&lt;url-pattern&gt;/*&lt;/url-pattern&gt;</p>
<p style="padding-left:60px;">&lt;/filter-mapping&gt;</p>
<p style="padding-left:60px;">…</p>
<p style="padding-left:30px;">&lt;/web-app&gt;</p>
</blockquote>
<p>Onde:</p>
<blockquote><p>&lt;filter&gt;: Tag que define o filtro.</p>
<p>&lt;filter-name&gt;: Nome representativo para o filtro.</p>
<p>&lt;filter-class&gt;: Classe que implementa a interface javax.servlet.Filter.</p>
<p>&lt;filter-mapping&gt;: Tag que define os mapeamentos para as requisições que devem passar pelo filtro.</p>
<p>&lt;filter-name&gt;: Nome representativo do filtro que deve interceptar a requisição.</p>
<p>&lt;url-pattern&gt;: URI que será filtrada.</p></blockquote>
<p style="text-align:justify;">Uma observação deve ser feita aqui, o &lt;filter-mapping&gt; pode ser utilizado para mapear todas as requisições para um determinado servlet, para isso é necessário a utilização da tag &lt;servlet-name&gt;. Se usado em conjunto com &lt;url-pattern&gt;, a tag &lt;url-mapping&gt; terá prioridade sobre a &lt;servlet-name&gt;.</p>
<h3>Algumas observações</h3>
<p>- Existe apenas um filtro para cada tag &lt;filter&gt; no descritor de implantação (web.xml), por maquina virtual.</p>
<p>- É possível encaminhar e incluir recursos utilizando RequestDispatcher.forward() e RequestDispatcher.include(), respectivamente.</p>
<p>- Retorna páginas de erro.</p>
<p>- Pontos de execução são controlados dentro do mapeamento de filtros dentro do web.xml, como segue abaixo:</p>
<blockquote>
<p style="padding-left:30px;">&lt;filter-mapping&gt;</p>
<p style="padding-left:30px;">&lt;filter-name&gt;YRossFilter&lt;/filter-name&gt;</p>
<p style="padding-left:30px;">&lt;url-pattern&gt;/*&lt;/url-pattern&gt;</p>
<p style="padding-left:30px;">&lt;dispatcher&gt;REQUEST&lt;/dispatcher&gt;</p>
<p style="padding-left:30px;">&lt;dispatcher&gt;FORWARD&lt;/dispatcher&gt;</p>
<p style="padding-left:30px;">&lt;dispatcher&gt;INCLUDE&lt;/dispatcher&gt;</p>
<p style="padding-left:30px;">&lt;dispatcher&gt;ERROR&lt;/dispatcher&gt;</p>
<p style="padding-left:30px;">&lt;/filter-mapping&gt;</p>
</blockquote>
<p style="text-align:justify;">Neste exemplo os pontos de ação dos filtros serão as requisições (REQUEST), encaminhamentos (FORWARD), includes (INCLUDE) ou páginas de erro (ERROR). Se nenhum ponto de ação for especificado o REQUEST será o padrão.</p>
<p style="text-align:justify;"> </p>
 Tagged: ERROR, filter, filter-name, FORWARD, javax.servlet.Filter, Request, REQUIRED, response, Servlet, url-pattern <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/yross.wordpress.com/118/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/yross.wordpress.com/118/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/yross.wordpress.com/118/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/yross.wordpress.com/118/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/yross.wordpress.com/118/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/yross.wordpress.com/118/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/yross.wordpress.com/118/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/yross.wordpress.com/118/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/yross.wordpress.com/118/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/yross.wordpress.com/118/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=yross.wordpress.com&blog=975461&post=118&subd=yross&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://yross.wordpress.com/2009/07/28/filtro-de-servlets-servlets-filters/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/685b3f23c754195149b8fe2f4337fd45?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">yross</media:title>
		</media:content>

		<media:content url="http://yross.files.wordpress.com/2009/07/filtersimples.jpg" medium="image">
			<media:title type="html">Exemplo de Filtro Simples</media:title>
		</media:content>

		<media:content url="http://yross.files.wordpress.com/2009/07/filterencadeado.jpg" medium="image">
			<media:title type="html">Exemplo de Filtro Encadeado</media:title>
		</media:content>
	</item>
		<item>
		<title>Eventos e seus ouvintes (Listeners) em Servlets</title>
		<link>http://yross.wordpress.com/2009/07/22/eventos-e-seus-ouvintes-listeners-em-servlets/</link>
		<comments>http://yross.wordpress.com/2009/07/22/eventos-e-seus-ouvintes-listeners-em-servlets/#comments</comments>
		<pubDate>Wed, 22 Jul 2009 20:01:22 +0000</pubDate>
		<dc:creator>Ythalo Rossy</dc:creator>
				<category><![CDATA[Certificações]]></category>
		<category><![CDATA[JEE]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[SCWCD]]></category>
		<category><![CDATA[event]]></category>
		<category><![CDATA[HttpSessionAttributeListener]]></category>
		<category><![CDATA[Servlet]]></category>
		<category><![CDATA[ServletContextAttributeListener]]></category>
		<category><![CDATA[ServletContextListener]]></category>
		<category><![CDATA[ServletRequestAttributeListener]]></category>

		<guid isPermaLink="false">http://yross.wordpress.com/?p=111</guid>
		<description><![CDATA[Eventos e seus ouvintes (Listeners) em Servlets
Conhecemos formas de adicionar atributos em uma javax.servlet.http.HttpSession, em um
javax.servlet.ServletContext e ate mesmo em javax.servlet.HttpServletRequest, também sabemos que
javax.servlet.ServletContext e javax.servlet.http.HttpSession são inicializados e destruidos para dar
suporte ao compatilhamento de dados. Mas como interagir com esses eventos?
Bem, a resposta é simples, dentro da propria API Servlet é possível encontrar algumas [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=yross.wordpress.com&blog=975461&post=111&subd=yross&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><div id="_mcePaste" style="position:absolute;left:-10000px;top:0;width:1px;height:1px;">Eventos e seus ouvintes (Listeners) em Servlets</div>
<div id="_mcePaste" style="position:absolute;left:-10000px;top:0;width:1px;height:1px;">Conhecemos formas de adicionar atributos em uma javax.servlet.http.HttpSession, em um</div>
<div id="_mcePaste" style="position:absolute;left:-10000px;top:0;width:1px;height:1px;">javax.servlet.ServletContext e ate mesmo em javax.servlet.HttpServletRequest, também sabemos que</div>
<div id="_mcePaste" style="position:absolute;left:-10000px;top:0;width:1px;height:1px;">javax.servlet.ServletContext e javax.servlet.http.HttpSession são inicializados e destruidos para dar</div>
<div id="_mcePaste" style="position:absolute;left:-10000px;top:0;width:1px;height:1px;">suporte ao compatilhamento de dados. Mas como interagir com esses eventos?</div>
<div id="_mcePaste" style="position:absolute;left:-10000px;top:0;width:1px;height:1px;">Bem, a resposta é simples, dentro da propria API Servlet é possível encontrar algumas interfaces que</div>
<div id="_mcePaste" style="position:absolute;left:-10000px;top:0;width:1px;height:1px;">quando implementadas são capazes de responderem a esta pergunta.</div>
<div id="_mcePaste" style="position:absolute;left:-10000px;top:0;width:1px;height:1px;">&lt;n&gt; Eventos relacionados manipulaçao de atributos</div>
<div id="_mcePaste" style="position:absolute;left:-10000px;top:0;width:1px;height:1px;">A manipulação de eventos relacionados a atributos são ouvidos pelas seguintes interfaces:</div>
<div id="_mcePaste" style="position:absolute;left:-10000px;top:0;width:1px;height:1px;">- HttpSessionAttributeListener: Eventos relacionados a HttpSession</div>
<div id="_mcePaste" style="position:absolute;left:-10000px;top:0;width:1px;height:1px;">- ServletContextAttributeListener: Eventos relacionados ao ServletContext</div>
<div id="_mcePaste" style="position:absolute;left:-10000px;top:0;width:1px;height:1px;">- ServletRequestAttributeListener: Eventos relacionados ao ServletRequest</div>
<div id="_mcePaste" style="position:absolute;left:-10000px;top:0;width:1px;height:1px;">Para cada interface é necessário implementar três métodos, com uma assinatura padrão, mudando apenas o</div>
<div id="_mcePaste" style="position:absolute;left:-10000px;top:0;width:1px;height:1px;">parametro recebido no método, que deve ser filho de javax.servlet.http.HttpSessionEvent.</div>
<div id="_mcePaste" style="position:absolute;left:-10000px;top:0;width:1px;height:1px;">HttpSessionAttributeListener:</div>
<div id="_mcePaste" style="position:absolute;left:-10000px;top:0;width:1px;height:1px;">public void attributeRemoved(HttpSessionBindingEvent bindingEvent);</div>
<div id="_mcePaste" style="position:absolute;left:-10000px;top:0;width:1px;height:1px;">public void attributeReplaced(HttpSessionBindingEvent bindingEvent);</div>
<div id="_mcePaste" style="position:absolute;left:-10000px;top:0;width:1px;height:1px;">public void attributeAdded(HttpSessionBindingEvent bindingEvent);</div>
<div id="_mcePaste" style="position:absolute;left:-10000px;top:0;width:1px;height:1px;">ServletRequestAttributeListener:</div>
<div id="_mcePaste" style="position:absolute;left:-10000px;top:0;width:1px;height:1px;">public void attributeAdded(ServletRequestAttributeEvent attributeEvent);</div>
<div id="_mcePaste" style="position:absolute;left:-10000px;top:0;width:1px;height:1px;">public void attributeRemoved(ServletRequestAttributeEvent attributeEvent);</div>
<div id="_mcePaste" style="position:absolute;left:-10000px;top:0;width:1px;height:1px;">public void attributeReplaced(ServletRequestAttributeEvent attributeEvent);</div>
<div id="_mcePaste" style="position:absolute;left:-10000px;top:0;width:1px;height:1px;">ServletContextAttributeListener:</div>
<div id="_mcePaste" style="position:absolute;left:-10000px;top:0;width:1px;height:1px;">public void attributeAdded(ServletContextAttributeEvent attributeEvent);</div>
<div id="_mcePaste" style="position:absolute;left:-10000px;top:0;width:1px;height:1px;">public void attributeReplaced(ServletContextAttributeEvent attributeEvent);</div>
<div id="_mcePaste" style="position:absolute;left:-10000px;top:0;width:1px;height:1px;">public void attributeRemoved(ServletContextAttributeEvent attributeEvent);</div>
<div id="_mcePaste" style="position:absolute;left:-10000px;top:0;width:1px;height:1px;">&lt;n&gt; Eventos relacionados a criação e destruição</div>
<div id="_mcePaste" style="position:absolute;left:-10000px;top:0;width:1px;height:1px;">&lt;n&gt; ServletContext</div>
<div id="_mcePaste" style="position:absolute;left:-10000px;top:0;width:1px;height:1px;">Permite ao desenvolvedor saber quando o contexto foi inicializado ou destruido. A interface</div>
<div id="_mcePaste" style="position:absolute;left:-10000px;top:0;width:1px;height:1px;">javax.servlet.ServletContextListener deve ser implementada. Esta interface define dois métodos:</div>
<div id="_mcePaste" style="position:absolute;left:-10000px;top:0;width:1px;height:1px;">public void contextInitialized(ServletContextEvent contextEvent): Sempre que o contexto foi inicializado.</div>
<div id="_mcePaste" style="position:absolute;left:-10000px;top:0;width:1px;height:1px;">public void contextDestroyed(ServletContextEvent contextEvent): Sempre que o contexto for destruido.</div>
<div id="_mcePaste" style="position:absolute;left:-10000px;top:0;width:1px;height:1px;">Um utilização comum para o uso desta interface é a criação ou instanciação de recursos, como conexões a</div>
<div id="_mcePaste" style="position:absolute;left:-10000px;top:0;width:1px;height:1px;">banco de dados, que devem ser destruida, desalocadas quando o contexto for destruido, descarregado.</div>
<div id="_mcePaste" style="position:absolute;left:-10000px;top:0;width:1px;height:1px;">&lt;n&gt; HttpSession</div>
<div id="_mcePaste" style="position:absolute;left:-10000px;top:0;width:1px;height:1px;">Permite ao desenvolver saber quando uma sessão foi inicializada ou destruida. A interface</div>
<div id="_mcePaste" style="position:absolute;left:-10000px;top:0;width:1px;height:1px;">javax.servlet.Http.HttpSessionListener deve ser implementada. Esta interface define dois método:</div>
<div id="_mcePaste" style="position:absolute;left:-10000px;top:0;width:1px;height:1px;">public void sessionCreated(HttpSessionEvent sessionEvent): Sempre que uma sessão é criada.</div>
<div id="_mcePaste" style="position:absolute;left:-10000px;top:0;width:1px;height:1px;">public viod sessionDestroyed(HttpSessionEvent sessionEvent): Sempre que uma sessão é destruida.</div>
<div id="_mcePaste" style="position:absolute;left:-10000px;top:0;width:1px;height:1px;">&lt;n&gt; HttpServletRequest</div>
<div id="_mcePaste" style="position:absolute;left:-10000px;top:0;width:1px;height:1px;">Permite ao desenvolvedor saber quando uma requisição é efetuada do cliente ao escopo do servlet. A</div>
<div id="_mcePaste" style="position:absolute;left:-10000px;top:0;width:1px;height:1px;">interface javax.servlet.Http.HttpServletRequestListener deve ser implementada. Esta interface define dois</div>
<div id="_mcePaste" style="position:absolute;left:-10000px;top:0;width:1px;height:1px;">métodos:</div>
<div id="_mcePaste" style="position:absolute;left:-10000px;top:0;width:1px;height:1px;">public void requestInitialized(ServletRequestEvent requestEvent): Sempre que uma requisição é feita.</div>
<div id="_mcePaste" style="position:absolute;left:-10000px;top:0;width:1px;height:1px;">public void requestDestroyed(ServletRequestEvent requestEvent): Sempre que uma requisição é atendida.</div>
<div id="_mcePaste" style="position:absolute;left:-10000px;top:0;width:1px;height:1px;">Definindo o uso de listener(Ouvintes)</div>
<div id="_mcePaste" style="position:absolute;left:-10000px;top:0;width:1px;height:1px;">Em alguns passos definirei o que é necessário para criar um listerner(ouvinte) dos eventos.</div>
<div id="_mcePaste" style="position:absolute;left:-10000px;top:0;width:1px;height:1px;">Passo 1: Criar uma classe que implemente um ou mais interfaces</div>
<div id="_mcePaste" style="position:absolute;left:-10000px;top:0;width:1px;height:1px;">public class YRossAttibuteListener</div>
<div id="_mcePaste" style="position:absolute;left:-10000px;top:0;width:1px;height:1px;"><span style="white-space:pre;"> </span>implements HttpSessionAttributeListener {</div>
<div id="_mcePaste" style="position:absolute;left:-10000px;top:0;width:1px;height:1px;">&#8230;</div>
<div id="_mcePaste" style="position:absolute;left:-10000px;top:0;width:1px;height:1px;">}</div>
<div id="_mcePaste" style="position:absolute;left:-10000px;top:0;width:1px;height:1px;">Passo 2: Implementar os métodos das interfaces.</div>
<div id="_mcePaste" style="position:absolute;left:-10000px;top:0;width:1px;height:1px;">public class YRossAttibuteListener</div>
<div id="_mcePaste" style="position:absolute;left:-10000px;top:0;width:1px;height:1px;"><span style="white-space:pre;"> </span>implements HttpSessionAttributeListener {</div>
<div id="_mcePaste" style="position:absolute;left:-10000px;top:0;width:1px;height:1px;"><span style="white-space:pre;"> </span>public void attributeAdded(HttpSessionBindingEvent bindingEvent) {</div>
<div id="_mcePaste" style="position:absolute;left:-10000px;top:0;width:1px;height:1px;"><span style="white-space:pre;"> </span>println(&#8220;Adicionado Atributo Session&#8221;);</div>
<div id="_mcePaste" style="position:absolute;left:-10000px;top:0;width:1px;height:1px;"><span style="white-space:pre;"> </span>}</div>
<div id="_mcePaste" style="position:absolute;left:-10000px;top:0;width:1px;height:1px;"><span style="white-space:pre;"> </span>public void attributeRemoved(HttpSessionBindingEvent bindingEvent) {</div>
<div id="_mcePaste" style="position:absolute;left:-10000px;top:0;width:1px;height:1px;"><span style="white-space:pre;"> </span>println(&#8220;Removido Atributo Session&#8221;);</div>
<div id="_mcePaste" style="position:absolute;left:-10000px;top:0;width:1px;height:1px;"><span style="white-space:pre;"> </span>}</div>
<div id="_mcePaste" style="position:absolute;left:-10000px;top:0;width:1px;height:1px;"><span style="white-space:pre;"> </span>public void attributeReplaced(HttpSessionBindingEvent bindingEvent) {</div>
<div id="_mcePaste" style="position:absolute;left:-10000px;top:0;width:1px;height:1px;"><span style="white-space:pre;"> </span>println(&#8220;Modificado Atributo Session&#8221;);</div>
<div id="_mcePaste" style="position:absolute;left:-10000px;top:0;width:1px;height:1px;"><span style="white-space:pre;"> </span>}</div>
<div id="_mcePaste" style="position:absolute;left:-10000px;top:0;width:1px;height:1px;">}</div>
<div id="_mcePaste" style="position:absolute;left:-10000px;top:0;width:1px;height:1px;">Passo 3: Definir que esta classe é um listener no descritor de implantação (web.xml), como segue abaixo:</div>
<div id="_mcePaste" style="position:absolute;left:-10000px;top:0;width:1px;height:1px;">&lt;listener&gt;</div>
<div id="_mcePaste" style="position:absolute;left:-10000px;top:0;width:1px;height:1px;">&lt;listener-class&gt;br.com.yross.listeners.YRossAttibuteListener&lt;/listener-class&gt;</div>
<div id="_mcePaste" style="position:absolute;left:-10000px;top:0;width:1px;height:1px;">&lt;/listener&gt;</div>
<div id="_mcePaste" style="position:absolute;left:-10000px;top:0;width:1px;height:1px;">&lt;listener&gt;</div>
<div id="_mcePaste" style="position:absolute;left:-10000px;top:0;width:1px;height:1px;">&lt;listener-class&gt;br.com.yross.listeners.YRossServletContextListener&lt;/listener-class&gt;</div>
<div id="_mcePaste" style="position:absolute;left:-10000px;top:0;width:1px;height:1px;">&lt;/listener&gt;</div>
<div id="_mcePaste" style="position:absolute;left:-10000px;top:0;width:1px;height:1px;">Ufa, terminou, mas existem diversas interfaces que podem ser utilizadas para ouvir os eventos. Vale a pena pesquisa um pouco mais.</div>
<p class="MsoNormal" style="text-align:justify;">Conhecemos formas de adicionar atributos em uma javax.servlet.http.HttpSession, em um javax.servlet.ServletContext e ate mesmo em javax.servlet.HttpServletRequest, também sabemos que javax.servlet.ServletContext e javax.servlet.http.HttpSession são inicializados e destruidos para dar suporte ao compartilhamento de dados. Mas como interagir com esses eventos?</p>
<p class="MsoNormal" style="text-align:justify;">Bem, a resposta é simples, dentro da própria API Servlet é possível encontrar algumas interfaces que quando implementadas são capazes de responderem a esta pergunta.</p>
<p class="MsoNormal" style="text-align:justify;"><span id="more-111"></span></p>
<h3><strong>Eventos relacionados manipulação de atributos</strong></h3>
<p class="MsoNormal">A manipulação de eventos relacionados a atributos são ouvidos pelas seguintes interfaces:</p>
<ul>
<li>HttpSessionAttributeListener: Eventos relacionados a HttpSession</li>
<li>ServletContextAttributeListener: Eventos relacionados ao ServletContext</li>
<li>ServletRequestAttributeListener: Eventos relacionados ao ServletRequest</li>
</ul>
<p class="MsoNormal" style="text-align:justify;">Para cada interface é necessário implementar três métodos, com uma assinatura padrão, mudando apenas o parametro recebido no método, que deve ser filho de javax.servlet.http.HttpSessionEvent.</p>
<h4><span lang="EN-US">HttpSessionAttributeListener</span></h4>
<ul>
<li>public void attributeRemoved(HttpSessionBindingEvent bindingEvent)</li>
<li>public void attributeReplaced(HttpSessionBindingEvent bindingEvent)</li>
<li><span> </span>public void attributeAdded(HttpSessionBindingEvent bindingEvent)</li>
</ul>
<h4>ServletRequestAttributeListener</h4>
<ul>
<li>public void attributeAdded(ServletRequestAttributeEvent attributeEvent)</li>
<li>public void attributeRemoved(ServletRequestAttributeEvent attributeEvent)</li>
<li>public void attributeReplaced(ServletRequestAttributeEvent attributeEvent);</li>
</ul>
<h4><span lang="EN-US">ServletContextAttributeListener</span></h4>
<ul>
<li>public void attributeAdded(ServletContextAttributeEvent attributeEvent)</li>
<li>public void attributeReplaced(ServletContextAttributeEvent attributeEvent)</li>
<li>public void attributeRemoved(ServletContextAttributeEvent attributeEvent);</li>
</ul>
<h3><strong>Eventos relacionados a criação e destruição</strong></h3>
<h4>ServletContext</h4>
<p class="MsoNormal" style="text-align:justify;">Permite ao desenvolvedor saber quando o contexto foi inicializado ou destruido. A interface javax.servlet.ServletContextListener deve ser implementada. Esta interface define dois métodos:</p>
<ul>
<li>public void contextInitialized(ServletContextEvent contextEvent):  Sempre que o contexto foi inicializado.</li>
<li>public void contextDestroyed(ServletContextEvent contextEvent): Sempre que o contexto for destruído.</li>
</ul>
<p class="MsoNormal" style="text-align:justify;">Uma utilização comum para o uso desta interface é a criação ou instanciação de recursos, como conexões a banco de dados, que devem ser destruída, quando o contexto for destruído.</p>
<h4>HttpSession</h4>
<p class="MsoNormal" style="text-align:justify;">Permite ao desenvolver saber quando uma sessão foi inicializada ou destruida. A interface javax.servlet.Http.HttpSessionListener deve ser implementada. Esta interface define dois método:</p>
<ul>
<li>public void sessionCreated(HttpSessionEvent sessionEvent): Sempre que uma sessão é criada.</li>
<li>public viod sessionDestroyed(HttpSessionEvent sessionEvent): Sempre que uma sessão é destruida.</li>
</ul>
<h4>HttpServletRequest</h4>
<p class="MsoNormal" style="text-align:justify;">Permite ao desenvolvedor saber quando uma requisição é efetuada do cliente ao escopo do servlet. A interface javax.servlet.Http.HttpServletRequestListener deve ser implementada. Esta interface define dois métodos:</p>
<ul>
<li>public void requestInitialized(ServletRequestEvent requestEvent): Sempre que uma requisição é feita</li>
<li>public void requestDestroyed(ServletRequestEvent requestEvent): Sempre que uma requisição é atendida</li>
</ul>
<h3>Definindo o uso de listener(Ouvintes)</h3>
<p class="MsoNormal">Em alguns passos definirei o que é necessário para criar um listerner(ouvinte) dos eventos.</p>
<h4>Passo 1:  Criar uma classe que implemente um ou mais interfaces</h4>
<blockquote><p><span style="font-weight:normal;">public class YRossAttibuteListener <span> </span>implements HttpSessionAttributeListener {</span></p>
<p class="MsoNormal"><span lang="EN-US"><span> </span></span>&#8230;</p>
<p class="MsoNormal">}</p>
</blockquote>
<h4>Passo 2: Implementar os métodos das interfaces.</h4>
<blockquote>
<p class="MsoNormal"><span lang="EN-US">public class YRossAttibuteListener implements HttpSessionAttributeListener {</span></p>
<p class="MsoNormal"><span lang="EN-US"><span> </span>public void attributeAdded(HttpSessionBindingEvent bindingEvent) {</span></p>
<p class="MsoNormal"><span lang="EN-US"><span> </span>println(&#8220;Adicionado Atributo Session&#8221;);</span></p>
<p class="MsoNormal"><span lang="EN-US"><span> </span>}</span></p>
<p class="MsoNormal"><span lang="EN-US"><span> </span>public void attributeRemoved(HttpSessionBindingEvent bindingEvent) {</span></p>
<p class="MsoNormal"><span lang="EN-US"><span> </span>println(&#8220;Removido Atributo Session&#8221;);</span></p>
<p class="MsoNormal"><span lang="EN-US"><span> </span>}</span></p>
<p class="MsoNormal"><span lang="EN-US"><span> </span>public void attributeReplaced(HttpSessionBindingEvent bindingEvent) {</span></p>
<p class="MsoNormal"><span lang="EN-US"><span> </span></span>println(&#8220;Modificado Atributo Session&#8221;);</p>
<p class="MsoNormal"><span> </span>}</p>
<p class="MsoNormal">}</p>
</blockquote>
<h4>Passo 3: Definir que esta classe é um listener no descritor de implantação (web.xml), como segue abaixo:</h4>
<blockquote>
<p class="MsoNormal">&lt;web-app&gt;</p>
<p class="MsoNormal"><span lang="EN-US">&lt;listener&gt;</span></p>
<p class="MsoNormal" style="padding-left:30px;"><span lang="EN-US">&lt;listener-class&gt;br.com.yross.listeners.YRossAttibuteListener&lt;/listener-class&gt;</span></p>
<p class="MsoNormal"><span lang="EN-US">&lt;/listener&gt;</span></p>
<p class="MsoNormal"><span lang="EN-US">&lt;listener&gt;</span></p>
<p class="MsoNormal" style="padding-left:30px;"><span lang="EN-US">&lt;listener-class&gt;br.com.yross.listeners.YRossServletContextListener&lt;/listener-class&gt;</span></p>
<p class="MsoNormal">&lt;/listener&gt;</p>
<p class="MsoNormal">&lt;/web-app&gt;</p>
</blockquote>
<p class="MsoNormal">Ufa, terminou, mas existem diversas interfaces que podem ser utilizadas para ouvir os eventos. Vale a pena pesquisa um pouco mais.</p>
<p class="MsoNormal">
 Tagged: event, HttpSessionAttributeListener, JEE, Servlet, ServletContextAttributeListener, ServletContextListener, ServletRequestAttributeListener <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/yross.wordpress.com/111/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/yross.wordpress.com/111/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/yross.wordpress.com/111/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/yross.wordpress.com/111/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/yross.wordpress.com/111/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/yross.wordpress.com/111/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/yross.wordpress.com/111/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/yross.wordpress.com/111/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/yross.wordpress.com/111/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/yross.wordpress.com/111/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=yross.wordpress.com&blog=975461&post=111&subd=yross&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://yross.wordpress.com/2009/07/22/eventos-e-seus-ouvintes-listeners-em-servlets/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/685b3f23c754195149b8fe2f4337fd45?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">yross</media:title>
		</media:content>
	</item>
		<item>
		<title>ServletConfig X ServletContext</title>
		<link>http://yross.wordpress.com/2009/07/22/servletconfig-x-servletcontext/</link>
		<comments>http://yross.wordpress.com/2009/07/22/servletconfig-x-servletcontext/#comments</comments>
		<pubDate>Wed, 22 Jul 2009 14:29:01 +0000</pubDate>
		<dc:creator>Ythalo Rossy</dc:creator>
				<category><![CDATA[Certificações]]></category>
		<category><![CDATA[JEE]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[SCWCD]]></category>
		<category><![CDATA[java entrerprise edition]]></category>
		<category><![CDATA[Servlet]]></category>
		<category><![CDATA[servletConfig]]></category>
		<category><![CDATA[servletContext]]></category>

		<guid isPermaLink="false">http://yross.wordpress.com/?p=107</guid>
		<description><![CDATA[Pretendo discutir um pouco sobre o uso de ServletConfig e ServletCOntext, existem pequenas diferenças entre os dois, mas especificamente no contexto de acesso as informaçoes contidas nos dois.

ServletConfig
A interface javax.servlet.ServletConfig prove diversas informações sobre o servlet atual, tais como parâmetros de inicialização e nome do servlet, esta diretamente ligada ao servlet e não tem informações [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=yross.wordpress.com&blog=975461&post=107&subd=yross&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>Pretendo discutir um pouco sobre o uso de ServletConfig e ServletCOntext, existem pequenas diferenças entre os dois, mas especificamente no contexto de acesso as informaçoes contidas nos dois.</p>
<p><span id="more-107"></span></p>
<p><strong>ServletConfig</strong></p>
<p style="text-align:justify;">A interface javax.servlet.ServletConfig prove diversas informações sobre o servlet atual, tais como parâmetros de inicialização e nome do servlet, esta diretamente ligada ao servlet e não tem informações de outros servlets.</p>
<p style="text-align:justify;">Um exemplo de utilização desta interface seria a busca de parâmetros de inicialização dentro do método init() do servlet.</p>
<p>Defino um parâmetro de inicialização para o servlet:</p>
<blockquote><p>&lt;servlet&gt;</p>
<p style="padding-left:30px;">&lt;servlet-name&gt;TestServlet&lt;/servlet-name&gt;</p>
<p style="padding-left:30px;">&lt;servlet-class&gt;br.com.yross.servlets.TestServlet&lt;/servlet-class&gt;</p>
<p style="padding-left:30px;">&lt;init-param&gt;</p>
<p style="padding-left:60px;">&lt;param-name&gt;nameParamInitServlet&lt;/param-name&gt;</p>
<p style="padding-left:60px;">&lt;param-value&gt;valueParamInitServlet&lt;/param-value&gt;</p>
<p style="padding-left:30px;">&lt;/init-param&gt;</p>
<p style="padding-left:30px;">&lt;load-on-startup&gt;1&lt;/load-on-startup&gt;</p>
<p>&lt;/servlet&gt;</p></blockquote>
<p>Busco esta informações na inicialização do servlet, para isso reescrevo o método init():</p>
<blockquote><p>public class YRossServlet extends HttpServlet {</p>
<p style="padding-left:30px;">public void init() throws ServletException {</p>
<p style="padding-left:60px;">String valueParamInitServlet = getServletConfig().getInitParameter(&#8220;nameParamInitServlet&#8221;);</p>
<p style="padding-left:60px;">System.out.println(&#8220;ServletConfig &#8211; valueParamInitServlet: &#8221; + valueParamInitServlet);</p>
<p style="padding-left:30px;">}</p>
<p>}</p></blockquote>
<p style="text-align:justify;">Observe o uso do método getServletConfig() implementado na classe abstrata javax.servlet.GenericServlet, ele retorna um objeto javax.servlet.ServletConfig com todas as configurações necessárias para a existência do servlet atual. Em resumo a o ServletConfig contém apenas informações do servlet que esta atendendo a requisição, diferente do ServletContext que contém informações compartilhadas no contexto dos servlets.</p>
<p><strong>ServletContext</strong></p>
<p style="text-align:justify;">Um pouco diferente do ServletConfig, a interface javax.servlet.ServletContext tem a capacidade de armazenar informações que podem ser compartilhadas entre todos os servlet no contêiner servlet, tais como informações de conexão com um determinado banco de dados, estas informações podem ser compartilhadas com diversos servlet que precisam de acesso ao banco de dados, exemplo:</p>
<blockquote><p>&lt;web-app&gt;</p>
<p style="padding-left:30px;">&#8230;</p>
<p style="padding-left:30px;">&lt;context-param&gt;</p>
<p style="padding-left:60px;">&lt;description&gt;&lt;/description&gt;</p>
<p style="padding-left:60px;">&lt;param-name&gt;dburl&lt;/param-name&gt;</p>
<p style="padding-left:60px;">&lt;param-value&gt;jdbc:databaseurl&lt;/param-value&gt;</p>
<p style="padding-left:30px;">&lt;/context-param&gt;</p>
<p style="padding-left:30px;">&#8230;</p>
<p>&lt;/web-app&gt;</p></blockquote>
<p style="text-align:justify;">Observe que o parâmetro não é informado para um servlet específico, mas para o contexto dos servlet dentro do contêiner.</p>
<p>Reutilizando o exemplo anterior, recupero as informações de a maneira a seguir:</p>
<blockquote><p>public class YRossServlet extends HttpServlet {</p>
<p style="padding-left:30px;">public void init() throws ServletException {</p>
<p style="padding-left:60px;">ServletContext context = getServletContext();</p>
<p style="padding-left:60px;">String dburl = context.getInitParameter(&#8220;dburl&#8221;);</p>
<p style="padding-left:60px;">System.out.println(&#8220;ServletContext &#8211; Url para base de dados: &#8221; + dburl);</p>
<p style="padding-left:30px;">}</p>
<p>}</p></blockquote>
<p style="text-align:justify;">Observe o uso do método getServletContext() implementado na classe abstrata javax.servlet.GenericServlet, ele retorna um objeto javax.servlet.ServletContext com todas as informações de contexto dos servlets.</p>
<p>É possível conseguir uma instancia de ServletContext atraves do ServletConfig, exemplo:</p>
<blockquote><p>ServletContext context = getServletConfig().getServletContext();</p></blockquote>
<a name="pd_a_1802856"></a><div class="PDS_Poll" id="PDI_container1802856" style="display:inline-block;"></div><script type="text/javascript" language="javascript" charset="utf-8" src="http://static.polldaddy.com/p/1802856.js"></script>
		<noscript>
		<a href="http://answers.polldaddy.com/poll/1802856/">View This Poll</a><br/><span style="font-size:10px;"><a href="http://www.polldaddy.com">online surveys</a></span>
		</noscript>
 Tagged: Java, java entrerprise edition, JEE, Servlet, servletConfig, servletContext <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/yross.wordpress.com/107/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/yross.wordpress.com/107/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/yross.wordpress.com/107/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/yross.wordpress.com/107/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/yross.wordpress.com/107/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/yross.wordpress.com/107/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/yross.wordpress.com/107/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/yross.wordpress.com/107/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/yross.wordpress.com/107/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/yross.wordpress.com/107/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=yross.wordpress.com&blog=975461&post=107&subd=yross&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://yross.wordpress.com/2009/07/22/servletconfig-x-servletcontext/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/685b3f23c754195149b8fe2f4337fd45?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">yross</media:title>
		</media:content>
	</item>
		<item>
		<title>RequestDispatcher</title>
		<link>http://yross.wordpress.com/2009/07/21/requestdispatcher/</link>
		<comments>http://yross.wordpress.com/2009/07/21/requestdispatcher/#comments</comments>
		<pubDate>Tue, 21 Jul 2009 17:06:43 +0000</pubDate>
		<dc:creator>Ythalo Rossy</dc:creator>
				<category><![CDATA[Certificações]]></category>
		<category><![CDATA[JEE]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[SCWCD]]></category>
		<category><![CDATA[RequestDispatcher]]></category>
		<category><![CDATA[resquest]]></category>
		<category><![CDATA[Servlet]]></category>

		<guid isPermaLink="false">http://yross.wordpress.com/?p=103</guid>
		<description><![CDATA[A API Servlet inclui a interface javax.servlet.RequestDispatcher com a finalidade de encaminhar a requisição atual para outro recurso, como um outro servlet.

Exemplo:
Um usuário solicita o histórico das compras do mês, ao receber a requisição o Servlet (HistoricoServlet)  verifica que o usuário não esta logado no sistema, o HistoricoServlet então encaminhar a requisição para outro servlet, [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=yross.wordpress.com&blog=975461&post=103&subd=yross&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p style="text-align:justify;">A API Servlet inclui a interface javax.servlet.RequestDispatcher com a finalidade de encaminhar a requisição atual para outro recurso, como um outro servlet.</p>
<p><span id="more-103"></span></p>
<p>Exemplo:</p>
<p>Um usuário solicita o histórico das compras do mês, ao receber a requisição o Servlet (HistoricoServlet)  verifica que o usuário não esta logado no sistema, o HistoricoServlet então encaminhar a requisição para outro servlet, chamado LoginServlet, que tem a finalidade de gerar o formulário de autenticação.</p>
<p>A interface javax.servlet.RequestDispatcher possui dois métodos que permitem esta interação, são:</p>
<ul>
<li><strong>void forward (ServletRequest request, ServletResponse response)</strong>: Permite o servlet processar a requisição parcialmente e encaminhar a requisição para outro servlet para gerar a resposta final. Também pode ser usado para encaminhar a requisição para recursos como JSP ou HTML. Se for chamado depois que a resposta estiver sido comitada será lançada uma IllegalStateException.</li>
<li><strong>void include (ServletRequest request, ServletResponse response)</strong>: Permite que o conteudo de outro recurso processe temporariamente a requisição atual. O recurso incluido não pode setar headers (cabeçalhos) ou status code (código de estatus) para a resposta, tentativas de setar serão ignoradas.</li>
</ul>
<p style="text-align:justify;">Parece uma boa solução, mas como conseguir um RequestDispatcher? Simples: Ambos javax.servlet.ServletContext e javax.servlet.ServletRequest possuem o método <em>public RequestDispatcher getRequestDispatcher(String path)</em> que pode ser utilizado para recuperá-lo.</p>
<p style="text-align:justify;">Existe uma pequena diferença em usar o getRequestDispatcher no ServletContext e no ServletRequest. No ServletContext não é possível utilizar o caminho relativo para um recurso, o caminho deve iniciar com &#8220;/&#8221;. No ServletRequest é possível utilizar caminhos relativos, por exemplo ServletRequest.getRequestDispatcher(../paginas/index.html).</p>
<p style="text-align:justify;">
 Tagged: JEE, RequestDispatcher, resquest, Servlet <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/yross.wordpress.com/103/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/yross.wordpress.com/103/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/yross.wordpress.com/103/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/yross.wordpress.com/103/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/yross.wordpress.com/103/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/yross.wordpress.com/103/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/yross.wordpress.com/103/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/yross.wordpress.com/103/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/yross.wordpress.com/103/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/yross.wordpress.com/103/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=yross.wordpress.com&blog=975461&post=103&subd=yross&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://yross.wordpress.com/2009/07/21/requestdispatcher/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/685b3f23c754195149b8fe2f4337fd45?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">yross</media:title>
		</media:content>
	</item>
	</channel>
</rss>