<?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/"
	>

<channel>
	<title>Debugando.com &#187; JSP</title>
	<atom:link href="http://www.debugando.com/tag/jsp/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.debugando.com</link>
	<description>Noticias, dicas e tutorias do mundo da Tecnologia.</description>
	<lastBuildDate>Thu, 01 Dec 2011 23:44:46 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<xhtml:meta xmlns:xhtml="http://www.w3.org/1999/xhtml" name="robots" content="noindex" />
		<item>
		<title>Recebendo dados de um formulário JSP</title>
		<link>http://www.debugando.com/recebendo-dados-de-um-formulario-jsp/</link>
		<comments>http://www.debugando.com/recebendo-dados-de-um-formulario-jsp/#comments</comments>
		<pubDate>Wed, 21 Jan 2009 23:27:55 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[Programação]]></category>
		<category><![CDATA[JSP]]></category>
		<category><![CDATA[web]]></category>

		<guid isPermaLink="false">http://www.debugando.com/?p=463</guid>
		<description><![CDATA[


Nessa primeira parte, vamos criar uma página JSP. Abra o sua IDE (nosso caso Netbeans) e siga os passos abaixo:

Clique em file -&#62; new file
Na tela que aparece, escolha, em categories WEB e em files types JSP.
Clique em next  e, na próxima tela, no campo  JSP File name, dê um nome ao seu [...]]]></description>
			<content:encoded><![CDATA[<p>Nessa primeira parte, vamos criar uma página JSP. Abra o sua IDE (nosso caso Netbeans) e siga os passos abaixo:</p>
<ol>
<li>Clique em <strong>file -&gt; new file</strong></li>
<li>Na tela que aparece, escolha, em <strong>categories </strong>WEB e em <strong>files types</strong> JSP.</li>
<li>Clique em next  e, na próxima tela, no campo  <strong>JSP File name</strong>, dê um nome ao seu arquivo JSP (eu chamei de paginaform).</li>
</ol>
<p><img src="http://conteudo.imasters.uol.com.br/9582/telajsp.jpg" alt="" /></p>
<ol>
<li>Feito isso, clique em <strong>finish</strong></li>
<li>Feito isso, crie outra página em JSP, chamada contas.</li>
<p>Dentro de &lt;body&gt; &lt;/body&gt; do arquivo <strong>paginaform.jsp</strong>, digite o código abaixo que é o nosso formulário:</ol>
<pre><code><em>&lt;!--quando o cliente clicar em enviar vai para pagina de contas.jsp--&gt;
&lt;form action="contas.jsp" method="POST"&gt;
Usuario:&lt;input type="text" name="usuario"/&gt;&lt;br&gt;/&gt;
Senha:&lt;input type="password" name=senha"/&gt;&lt;br&gt;

&lt;input type="submit" value="logar/&gt;</em>
&lt;/form&gt;

</code>Na página de <strong>contas.jsp</strong>, dentro do &lt;body&gt;, digite o código abaixo:

<code>&lt;%
//recebe o valor digitado no campo usuario
String usuario = request.getParameter("usuario");

//recebe o valor digitado no campo senha
String senha = request.getParameter("senha");

if(usuario.equals("camilo")&amp;&amp; senha.equals("123")){

//Exibi o nome do usuario
    out.println("Seja bem vindo " + usuario);
    }
else{
out.println("Usuario ou senha invalidos");  

}%&gt;

</code></pre>
<h4>Objeto Request</h4>
<p>Esse objeto foi o responsável de pegar o resultado que vinha do formulário.</p>
<p>Salve e teste a página executando no browser a http://localhost/suaaplicacao/<span class="c2">paginaform.jsp</span></p>
<p>Agora  informe os dados no formulário e clique  no botão enviar.</p>
<p>Simples pegar dados de um formulário em JSP não? Lembrando que o objetivo aqui era mostrar como obter dados de um formulário em JSP, que é através do request. Usei como exemplo uma pagina simples de login e senha.</p>
<p>Outra importância desse recurso é para sistema de busca. Imagine que você quer saber tudo que seu cliente digitou no campo de busca do seu site enquanto ele estava navegando? Importante isso não?</p>
<pre></pre>
]]></content:encoded>
			<wfw:commentRss>http://www.debugando.com/recebendo-dados-de-um-formulario-jsp/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Entendendo os Escopos dos Objetos &#8211; Parte 02</title>
		<link>http://www.debugando.com/entendendo-os-escopos-dos-objetos-parte-02/</link>
		<comments>http://www.debugando.com/entendendo-os-escopos-dos-objetos-parte-02/#comments</comments>
		<pubDate>Tue, 09 Dec 2008 12:09:14 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[Programação]]></category>
		<category><![CDATA[JSP]]></category>

		<guid isPermaLink="false">http://www.debugando.com/?p=166</guid>
		<description><![CDATA[Toda vez que um sistema web é acessado pelo browser, o conteiner web cria uma sessão para cada cliente, e nas requisições trocadas entre o browser e o servidor existe um cookie/parâmetro no cabeçalho da requisição HTTP chamado jsessionid que identifica aquele cliente, desta forma o servidor pode reservar uma área para este cliente por [...]]]></description>
			<content:encoded><![CDATA[<p>Toda vez que um sistema web é acessado pelo browser, o conteiner web cria uma sessão para cada cliente, e nas requisições trocadas entre o browser e o servidor existe um cookie/parâmetro no cabeçalho da requisição HTTP chamado jsessionid que identifica aquele cliente, desta forma o servidor pode reservar uma área para este cliente por um certo tempo. Um exemplo de utilização é manter o usuário logado no sistema, onde ele vai estar navegando entre todas páginas sem problemas. Uma forma de invalidar a sessão pelo cliente é limpar o cache do browser, assim o cookie que possuía o identificador da sessão não existe mais e o servidor irá criar uma nova sessão assim que o cliente enviar uma nova requisição.</p>
<p>Vamos começar a implementar nosso carrinho de compras.</p>
<p><strong>Classe Produto</strong></p>
<div class="codigo">
<pre><code>
<em>package vo;
     public class Produto {
	private Integer codigo;
	private String nome;
	private Double vlPreco;
	 // ocultei get/set.
	public int hashCode() {
		final int prime = 31;
		int result = 1;
		result = prime * result +
                         ((codigo == null) ? 0 : codigo.hashCode());
		return result;
	}
	public boolean equals(Object obj) {
		if (this == obj)
			return true;
		if (obj == null)
			return false;
		if (getClass() != obj.getClass())
			return false;
		Produto other = (Produto) obj;
		if (codigo == null) {
			if (other.codigo != null)
				return false;
		} else if (!codigo.equals(other.codigo))
			return false;
		return true;
	}
     }</em>
</code></pre>
</div>
<p>Na classe <em>CarrinhoDeCompras</em>, criei uma Collection de objetos Produto, que armazenará os produtos selecionados pelo o usuário. Estou inicializando-a no construtor da classe, e também perceba que só existe o método de acesso getArrProdutos(). Isso vai garantir que a coleção seja inicializada apenas na criação do objeto.</p>
<div class="codigo">
<pre><code>
<em>package vo;
     import java.util.ArrayList;
     import java.util.Collection;

     public class CarrinhoDeCompras {
	  private Collection&lt;Produto&gt; arrProdutos;

	  public CarrinhoDeCompras() {
		this.arrProdutos = new ArrayList&lt;Produto&gt;();
 	  }
	  public final Collection&lt;Produto&gt; getArrProdutos() {
		return arrProdutos;
 	  }
     }</em>
</code></pre>
</div>
<p>Criei a classe LojaBO para simular estoque de produtos. A lógica desta classe é bem simples: ela possui um java.util.List de objetos Produto para representar os produtos vendidos pela nossa loja e dois voltados aos métodos: um é buscar (código), que busca o produto na coleção pelo código, e o outro é um método de acesso ao nosso List.</p>
<div class="codigo">
<pre><code>
<em>package bo;
	import java.util.ArrayList;
	import java.util.List;

	import vo.Produto;

	public class LojaBO {
	   private List&lt;Produto&gt; arrProdutosDisponiveis;

	   public LojaBO() {
		arrProdutosDisponiveis = new ArrayList&lt;Produto&gt;();
		Produto produto = null;
		for (int i = 0; i &lt; 5; i++) {
			produto = new Produto();
			produto.setCodigo(i);
			produto.setNome("Produto " + i);
			produto.setVlPreco(52.8);
			arrProdutosDisponiveis.add(produto);
		}
	  }

	  public Produto buscar(Integer codigo) {
		Produto produto = new Produto();
		produto.setCodigo(codigo);
		return	arrProdutosDisponiveis.get(arrProdutosDisponiveis.indexOf(produto));
	  }

	  public final List&lt;Produto&gt; getArrProdutosDisponiveis() {
		return arrProdutosDisponiveis;
	 }
    }</em>
</code></pre>
</div>
<p>Já criamos os objetos para representar o carrinho de compras, os produtos disponíveis. Agora criei a página que exibirá a listagem dos produtos para o usuário poder escolher qual item vai adicionar no carrinho (listarProdutos.jsp).</p>
<div class="codigo">
<pre><code>
<em>&lt;%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%&gt;
&lt;!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"&gt;

&lt;%@page import="bo.LojaBO"%&gt;
&lt;%@page import="java.util.Collection"%&gt;
&lt;%@page import="java.util.List"%&gt;
&lt;%@page import="vo.Produto"%&gt;&lt;html&gt;
&lt;head&gt;
&lt;title&gt;Produtos Disponiveis&lt;/title&gt;
&lt;style&gt;
&lt;!--
	body {
	text-align: left;
}
--&gt;
&lt;/style&gt;
&lt;/head&gt;
&lt;body&gt;
	&lt;h2&gt;Produtos Disponiveis:&lt;/h2&gt;
&lt;%
	/* armazena lista de produtos na sessÃ£o do usuario. */
	LojaBO lojaBO = new LojaBO();
	List&lt;Produto&gt; arrProduto = lojaBO.getArrProdutosDisponiveis();
%&gt;	&lt;table&gt;
		&lt;thead&gt;&lt;tr&gt;
				&lt;th&gt;Codigo&lt;/th&gt;
				&lt;th&gt;Nome&lt;/th&gt;
				&lt;th&gt;Preço&lt;/th&gt;
				&lt;th&gt;&lt;/th&gt;
		&lt;/tr&gt;&lt;/thead&gt;
&lt;%		for(Integer i = 0; i &lt; arrProduto.size(); i++){
			Produto produto = arrProduto.get(i);%&gt;
		&lt;tr&gt;
			&lt;td&gt;&lt;%= produto.getCodigo() %&gt;&lt;/td&gt;
			&lt;td style="width: 120px"&gt;&lt;%= produto.getNome() %&gt;&lt;/td&gt;
			&lt;td&gt;&lt;%= produto.getVlPreco() %&gt;&lt;/td&gt;
			&lt;td&gt;&lt;a href="controlCarrinhoDeCompras.jsp?a=adicionar&amp;codigo=
                        &lt;%= produto.getCodigo() %&gt;"&gt;Adicionar&lt;/a&gt;&lt;/td&gt;
		&lt;/tr&gt;
		&lt;% } %&gt;
	&lt;/table&gt;
	&lt;p&gt;&lt;a href="controlCarrinhoDeCompras.jsp"&gt;Meu Carrinho&lt;/a&gt;&lt;/p&gt;
&lt;/body&gt;
&lt;/html&gt;</em>
</code></pre>
</div>
<p>A página abaixo (controlCarrinhoDeCompras.jsp) possui a lógica das ações do carrinho de compras. Tem as seguintes funcionalidades:</p>
<ul> &#8211; Adicionar o produto na listagem do carrinho de compras.</ul>
<ul> &#8211; Excluir todos os itens do carrinho de compras.</ul>
<div class="codigo">
<pre><code>
<em>&lt;%@page import="vo.Produto"%&gt;
&lt;%@page import="bo.LojaBO"%&gt;
&lt;%@page import="vo.CarrinhoDeCompras"%&gt;&lt;%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%&gt;
&lt;%
// caso não exista um objeto CarrinhoDeCompras na session, ele cria.
if(session.getAttribute("carrinhoDeCompras") == null){
	session.setAttribute("carrinhoDeCompras", new CarrinhoDeCompras());
}
/* pega referência ao Objeto CarrinhoDeCompras que está armazenado na session. Necessário fazer um cast,
 pois o metodo "getAttribute" retorna um Object. */
CarrinhoDeCompras carrinhoDeCompras = (CarrinhoDeCompras) session.getAttribute("carrinhoDeCompras");
/* parametro que indica qual acao deve ser executada. */
String acao = request.getParameter("a");
/* indica qual pagina serÃ¡ invocada apos execucao abaixo. Por padrao,
deixei a listagem de produtos do carrinho de compras.*/
String path = "listarProdutosDoCarrinho.jsp";
if(acao != null &amp;&amp; !acao.equals("")){
	if(acao.equals("adicionar")){
		Integer codigo = Integer.parseInt(request.getParameter("codigo"));
		LojaBO lojaBO = new LojaBO();
		Produto  produto = lojaBO.buscar(codigo);
		carrinhoDeCompras.getArrProdutos().add(produto);
	}
	if(acao.equals("limpar")){
		session.setAttribute("carrinhoDeCompras", new CarrinhoDeCompras());
	}
}
RequestDispatcher requestDispacher = request.getRequestDispatcher(path);
requestDispacher.forward(request, response);
%&gt;</em>
</code></pre>
</div>
<p>Após a escolha do produtos, o usuário pode visualizar os produtos selecionados, através da página abaixo (listarProdutosDoCarrinho.jsp):</p>
<div class="codigo">
<pre><code>
<em>&lt;%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%&gt;
&lt;!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"&gt;

&lt;%@page import="bo.LojaBO"%&gt;
&lt;%@page import="java.util.Collection"%&gt;
&lt;%@page import="vo.Produto"%&gt;
&lt;%@page import="vo.CarrinhoDeCompras"%&gt;&lt;html&gt;
&lt;head&gt;
&lt;title&gt;Produtos Adicionados no Carrinho de Compras&lt;/title&gt;
&lt;style&gt;
&lt;!--
	body {
	text-align: left;
}
--&gt;
&lt;/style&gt;
&lt;/head&gt;
&lt;body&gt;
&lt;%
/* É adicionado um objeto CarrinhoDeCompras na sessão, caso ainda não exista.*/
      if(session.getAttribute("carrinhoDeCompras") == null){
		session.setAttribute("carrinhoDeCompras", new CarrinhoDeCompras());
	}
	// referência do objeto CarrinhoDeCompras que esta na sessÃ£o do usuario.
	CarrinhoDeCompras carrinhoDeCompras = (CarrinhoDeCompras) session.getAttribute("carrinhoDeCompras");
	Collection&lt;Produto&gt; arrProduto = carrinhoDeCompras.getArrProdutos();
	if(!arrProduto.isEmpty()){%&gt;
		&lt;h2&gt;Produtos Adicionados:&lt;/h2&gt;
		&lt;table&gt;
			&lt;thead&gt;&lt;tr&gt;
					&lt;th&gt;Codigo&lt;/th&gt;
					&lt;th&gt;Nome&lt;/th&gt;
					&lt;th&gt;Preço&lt;/th&gt;
			&lt;/tr&gt;&lt;/thead&gt;
		&lt;%for(Produto produto : arrProduto){ %&gt;
			&lt;tr&gt;
				&lt;td&gt;&lt;%= produto.getCodigo() %&gt;&lt;/td&gt;
				&lt;td style="width: 120px"&gt;&lt;%= produto.getNome() %&gt;&lt;/td&gt;
				&lt;td&gt;&lt;%= produto.getVlPreco() %&gt;&lt;/td&gt;
			&lt;/tr&gt;
		&lt;% } %&gt;
		&lt;/table&gt;
		&lt;p&gt;&lt;a href="listarProdutos.jsp"&gt;Comprar Mais&lt;/a&gt;&lt;/p&gt;
		&lt;p&gt;&lt;a href="controlCarrinhoDeCompras.jsp?a=limpar"&gt;Limpar Carrinho&lt;/a&gt;&lt;/p&gt;
	&lt;% } else { %&gt;
		&lt;p&gt;Seu carrinho de compras está vazio&lt;/p&gt;
		&lt;p&gt;&lt;a href="listarProdutos.jsp"&gt;Voltar Listagem de Produtos&lt;/a&gt;&lt;/p&gt;
	&lt;% } %&gt;
&lt;/body&gt;
&lt;/html&gt;</em>
</code></pre>
</div>
<p>Meu simples carrinho de compras está pronto, funcionando sem problemas e utilizando o que a seção tem a oferecer. Agora fica com você a implementar uma aplicação mais complexa.</p>
<p>O projeto do Eclipse com os fontes está <a class="ext" href="http://conteudo.imasters.uol.com.br/10899/Orion.zip">disponível para download</a>. Espero que tenham gostado e a informação que escrevi seja útil. Até a próxima.</p>
<h5>Referências</h5>
<p><em><a class="ext" href="http://java.sun.com/javaee/5/docs/api/">http://java.sun.com/javaee/5/docs/api/</a></em></p>
<p><em>Fonte: <a href="http://imasters.uol.com.br/artigo/10899/java/entendendo_os_escopos_dos_objetos_-_parte_02/" target="_blank">Imasters</a><br />
</em></p>
]]></content:encoded>
			<wfw:commentRss>http://www.debugando.com/entendendo-os-escopos-dos-objetos-parte-02/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Criando página de erro em aplicações Java</title>
		<link>http://www.debugando.com/criando-pagina-de-erro-em-aplicacoes-java/</link>
		<comments>http://www.debugando.com/criando-pagina-de-erro-em-aplicacoes-java/#comments</comments>
		<pubDate>Tue, 09 Dec 2008 12:06:04 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[Programação]]></category>
		<category><![CDATA[JSP]]></category>

		<guid isPermaLink="false">http://www.debugando.com/?p=164</guid>
		<description><![CDATA[Durante uma aplicação Web escrita em Java, existe a possibilidade de ocorrer vários erros durante o processamento de um recurso no servidor e, caso haja um erro do próprio servidor, este cuida da sua manipulação (ou não). Mas caso haja um erro da aplicação, o Container fornece meios para que o desenvolvedor possa manipulá-lo.
Os erros [...]]]></description>
			<content:encoded><![CDATA[<p>Durante uma aplicação Web escrita em Java, existe a possibilidade de ocorrer vários erros durante o processamento de um recurso no servidor e, caso haja um erro do próprio servidor, este cuida da sua manipulação (ou não). Mas caso haja um erro da aplicação, o Container fornece meios para que o desenvolvedor possa manipulá-lo.</p>
<p>Os erros de servidor podem ser considerados como exceções Java , e controlá-los é simples em aplicações web escritas em Java, não necessitando impor mudanças nas classes.</p>
<p><strong>Diretiva Page</strong>: definirá as diretivas da página. Essa diretiva permite importação de classes, customização de super classes Servlet, etc.</p>
<p>Alguns  atributos mais usados são:</p>
<p><strong>isErrorPage </strong>= &#8220;True | False&#8221; &#8211; define se é uma página de controle de erro.</p>
<p><strong>Language </strong>= &#8220;java&#8221; &#8211; especifica a linguagem que está sendo usada.</p>
<p><strong>import</strong>=&#8221;pacote.classe.*&#8221; &#8211; pacote que deve ser importado.</p>
<p>Etc&#8230;</p>
<h4>Criando e configurando página de erro</h4>
<p>Veremos abaixo, passo a passo, como configurar páginas de erros personalizadas.</p>
<p><strong>1.</strong> Abra o Netbeans 6</p>
<p><strong>2.</strong> Localize o seu projeto (usado nos outras colunas, ou crie um novo)</p>
<p><strong>3.</strong> Clique em file &gt; new file</p>
<p><strong>4.</strong> Na tela que aparece, escolha em <strong>categories </strong>WEB e, em <strong>files types</strong>, escolha JSP.</p>
<p><img src="http://conteudo.imasters.uol.com.br/9338/img1.jpg" alt="" /></p>
<p><strong>5.</strong> Clique em <strong>next </strong>e, na próxima tela, no campo <strong>JSP File name</strong>, dê um nome ao seu arquivo JSP (se quiser seguir a coluna, o meu chamei de erro).</p>
<p><strong>6.</strong> Feito isso, clique em <strong>finish</strong></p>
<p><strong>7.</strong> Clique no sinal de + de <strong>configuration files</strong> e em seguida dê dois cliques em web.xml. Aqui vamos configurar nossa página de erro.</p>
<p><img src="http://conteudo.imasters.uol.com.br/9338/img2.jpg" alt="" /></p>
<p>Nessa coluna vamos tratar o erro 404, página não encontrada. Isso pode acontecer freqüentemente na sua aplicação. O usuário pode digitar o endereço errado da aplicação e você, como um bom desenvolvedor, vai alertá-lo a respeito de forma personalizada.</p>
<h4>Erro.jsp</h4>
<p>A página de erro.jsp que acabamos de criar será responsável por capturar o erro (nesse caso 404) e exibí-lo ao usuário de forma personalizada.</p>
<p>Na tela de web.xml, clique na <strong>Pages </strong>e expanda o nó <strong>Error Pages</strong></p>
<p>.</p>
<p><img src="http://conteudo.imasters.uol.com.br/9338/img3.jpg" alt="" /></p>
<p><strong>8.</strong>Clique no botão <strong>Add</strong>. Na caixa de diálogo <strong>Add Error Page</strong> que acabou de surgir, clique em <strong>Browse</strong>&#8230; para selecionar a página de erro, no nosso caso, escolha erro.jsp.</p>
<p><strong>9.</strong> No campo <strong>Error Code</strong>, digite 404 e depois clique no <strong>OK</strong>. Não vamos configurar nenhuma exceção para esse tipo de erro, então o último campo deixe em branco.</p>
<p><strong>10.</strong> Abra o arquivo erro.jsp e altere conforme abaixo:</p>
<div class="codigo">
<pre><em><code>&lt;%@page contentType="text/html" pageEncoding="UTF-8"
        isErrorPage="true"%&gt;
&lt;!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
   "http://www.w3.org/TR/html4/loose.dtd"&gt;

&lt;html&gt;
    &lt;head&gt;
        &lt;meta http-equiv="Content-Type" content="text/html; charset=UTF-8"&gt;
        &lt;title&gt;JSP Page&lt;/title&gt;
    &lt;/head&gt;
    &lt;body&gt;
        &lt;h1&gt;Erro 404 &lt;/h1&gt;
        [cor2]Se você está vendo essa mensagem é porque o endereço que você está
        tentado acessar não existe.[/cor2] &lt;br&gt;
        Caso queira receber mais informações a respeito, entre em contato com o administrador do site.
    &lt;/body&gt;
&lt;/html&gt;</code></em></pre>
</div>
<p><strong>11.</strong> Para testar, abra o browser e digite um endereço inválido <span class="c2"><em>http://localhost/seuprojeto/invalido</em></span></p>
<p><span class="c2"><strong> isErrorPage=&#8221;true&#8221;</strong></span></p>
<p>Com essa diretiva <strong>page</strong>, informamos que se trata de uma página de erro conforme mencionei no inicio do artigo.</p>
<p>Bom, espero que tenham gostado do artigo e que a manipulação de erros passa a ser uma atividade frequente em suas aplicações. Uma dica que uso nas mensagens para o usuário é a substituição da palavra &#8220;erro&#8221; por &#8220;aviso&#8221;, e solicito ao usuário para entrar em contato com a equipe de suporte e informar que aconteceu o &#8220;aviso 404&#8243;. A palavra &#8220;erro&#8221;, na minha opinião, é muito pesada e gera desconforto e insegurança ao usuário/cliente.</p>
<p>Fonte: <a href="http://imasters.uol.com.br/artigo/9338/java/criando_pagina_de_erro_em_aplicacoes_java/" target="_blank">Imasters</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.debugando.com/criando-pagina-de-erro-em-aplicacoes-java/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Entendendo os Escopos dos Objetos &#8211; Parte 01</title>
		<link>http://www.debugando.com/entendendo-os-escopos-dos-objetos-parte-01/</link>
		<comments>http://www.debugando.com/entendendo-os-escopos-dos-objetos-parte-01/#comments</comments>
		<pubDate>Tue, 09 Dec 2008 11:59:39 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[Programação]]></category>
		<category><![CDATA[JSP]]></category>

		<guid isPermaLink="false">http://www.debugando.com/?p=160</guid>
		<description><![CDATA[A linguagem Java usa fortemente o conceito de orientação a objetos. Com ela, é possível implementar softwares em diversas áreas, desde controlar aparelhos de microondas, sistemas WEB, até aplicações para celulares.
No desenvolvimento dos sistemas web, você pode criar aplicações dinâmicas e inteligentes, utilizando o máximo das vantagens que a linguagem tem a oferecer. Exemplos como [...]]]></description>
			<content:encoded><![CDATA[<p>A linguagem Java usa fortemente o conceito de orientação a objetos. Com ela, é possível implementar softwares em diversas áreas, desde controlar aparelhos de microondas, sistemas WEB, até aplicações para celulares.</p>
<p>No desenvolvimento dos sistemas web, você pode criar aplicações dinâmicas e inteligentes, utilizando o máximo das vantagens que a linguagem tem a oferecer. Exemplos como exibir o resultado de uma consulta sobre um certo cliente, receber dados de um formulário, armazenar um carrinho de compras do usuário&#8230; Ou seja, existem milhares de situações que podem ser implementadas.</p>
<p>Neste artigo comentarei sobre alguns objetos implícitos nas páginas jsp e descrever em quais escopos os objetos podem estar durante o processamento da página. Este é meu primeiro artigo aqui no iMasters, e espero que gostem e que as informações passadas sejam úteis.</p>
<p>Estes são alguns dos objetos implícitos que você usará com mais freqüência.</p>
<ul>
<li>request</li>
<li>pageContext</li>
<li>session</li>
<li>context</li>
<li>out</li>
<li>response</li>
</ul>
<p>A partir de agora, vou descrever cada objeto e criar uma situação de utilização.</p>
<p>Antes de iniciar, vou comentar sobre <em>scriptlets</em>, pois vou utilizá-los na implementação dos exemplos.</p>
<p>&lt;% %&gt; &#8211; acessar algum escopo.</p>
<p>&lt;%= %&gt; &#8211; escreve algum conteúdo na resposta.</p>
<p>Obs: utilizar <em>scriptlets </em>nas paginas jsp não é uma boa prática de programação, pois mistura código java com html, deixando o código bastante confuso. Para resolver essa questão criaram JSTL, EL (<em>Expression Language</em>). Assunto esse para próximos artigos.</p>
<h4>Request</h4>
<p>O request representa uma solicitação do browser para o servidor, e o ciclo de vida é marcado pelo recebimento da requisição e montagem da resposta para o cliente.</p>
<p>Ele trata todas as informações que o browser passou para o servidor, exemplo: sabe qual o tipo do método HTTP que deu origem à requisição, possui todos os parâmetros da requisição criados via formulário ou passados via url, também tem referência aos cookies do browser.</p>
<p>Esses são alguns métodos disponíveis:</p>
<p><strong>getParameter(java.lang.String name)</strong> &#8211; este método retorna o valor de algum parâmetro que está na requisição do browser. &#8220;name&#8221; é o identificador do parâmetro e caso não encontre o valor retorno é null.</p>
<p><em>Exemplo: um input text de nome &#8220;meuNome&#8221;:</em></p>
<div class="codigo">
<pre><code> <em>&lt;input type="text" name="meuNome"&gt;</em></code></pre>
</div>
<p>Na página que trata a requisição do browser:</p>
<div class="codigo">
<pre><em><code>&lt;%
String nmCliente = request.getParameter("meuNome");
%&gt;</code></em></pre>
</div>
<p><strong>getParameterValues(java.lang.String name)</strong> &#8211; este é semelhante ao metodo anterior, a diferença é que ele retorna um <em>array </em>de String. É utilizado nas páginas que possuem elementos com mesmo nome.</p>
<p>Geralmente é utilizado quando é necessário implementar um lista de <em>inputs </em>do tipo <em>checkbox</em>, <em>hidden</em>,.. na página jsp.</p>
<p>Exemplo:</p>
<div class="codigo">
<pre><em><code>&lt;form action="treatRequest.jsp" method="post"&gt;
&lt;ul&gt;
&lt;li&gt;&lt;input type="checkbox" name="arrCheckBox" value="radio1"&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;ul&gt;
&lt;li&gt;&lt;input type="checkbox" name="arrCheckBox" value="radio2"&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;ul&gt;
&lt;li&gt;&lt;input type="checkbox" name="arrCheckBox" value="radio3"&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;ul&gt;
&lt;li&gt;&lt;input type="checkbox" name="arrCheckBox" value="radio4"&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;input type="submit" value="Salvar"&gt;
&lt;/form&gt;</code></em></pre>
</div>
<p>Código da página que tratará a requisição.</p>
<div class="codigo">
<pre><em><code>&lt;%
String[] arrCheckBox = request.getParameterValues("arrCheckBox");
%&gt;</code></em></pre>
</div>
<p><strong>setAttribute(java.lang.String name, java.lang.Object o)</strong> &#8211; Armazena o objeto &#8220;o&#8221; passado no escopo do request, o parâmetro &#8220;name&#8221; é um identificador do objeto dentro do request.</p>
<p><strong>getAttribute(java.lang.String name)</strong> &#8211; retorna uma referência do objeto que está no request, onde &#8220;name&#8221; é o identificador do objeto.</p>
<p>Os métodos <strong>setAttribute(String)</strong> e <strong>getAttribute(String)</strong> são utilizados quando você precisa trafegar objetos entre as páginas jsp, não os parâmetros da requisição HTTP. Exemplo: salvar um objeto Cliente para outra página utilizá-lo.</p>
<p>Para realizar a navegação entre páginas jsp, utilize a tag &lt;jsp:forward page=&#8221;nomePagina.jsp&#8221;/&gt;. Utilizando esta tag, você passa a requisição para outra página tratar, encaminhando junto todos os parâmetros e objetos salvos no request.</p>
<p>Exemplo:</p>
<p><em>Criar um formulário de cadastros de nomes</em>.</p>
<p><em>Classe Pessoa.</em></p>
<div class="codigo">
<pre><em><code>package vo;

public class Pessoa {
private String nome;

public final String getNome() {
return nome;
}
public final void setNome(String nome) {
this.nome = nome;
}
}</code></em></pre>
</div>
<h4>Fonte do formulário (exRequest.jsp)</h4>
<p>Utilizei o mesmo formulário dos exemplos anteriores, então criei uma função javascript que invoca a página para cadastrar uma pessoa.</p>
<div class="codigo">
<pre><code>
<em>&lt;script type="text/javascript"&gt;
function cadastrarPessoa() {
var meuNome = document.getElementById("meuNome");
window.location = "/Orion/request/cadastrarPessoa.jsp?meuNome=" + meuNome.value;
}
&lt;/script&gt;
&lt;p&gt;
Digite seu nome: &lt;input type="text" id="meuNome" name="meuNome"&gt;
 &lt;a href="javascript:void(0)" onclick="javascript:cadastrarPessoa();"&gt;Cadastrar Pessoa &lt;/a&gt;
&lt;/p&gt;</em>
</code></pre>
</div>
<p>Fonte <em>cadastrarPessoa.jsp</em>: esta página será responsável por pegar o valor do parâmetro &#8220;meuNome&#8221; e criar o objeto Pessoa, logo após o método &#8220;setAttribute(´pessoa´, pessoa)&#8221; salva o objeto pessoa no request. Agora é só encaminhar a requisição para a página &#8220;logicCadastrarPessoa.jsp&#8221; tratar.</p>
<div class="codigo">
<pre><code>
<em>&lt;%@page import="vo.Pessoa"%&gt;
&lt;%
String nome = request.getParameter("meuNome");
Pessoa pessoa = new Pessoa();
pessoa.setNome(nome);
/* aqui salva objeto no request */
request.setAttribute("pessoa", pessoa);
%&gt;
&lt;jsp:forward page="logicCadastrarPessoa.jsp"/&gt;</em>
</code></pre>
</div>
<p>Fonte <em>logicCadastrarPessoa.jsp</em>: esta página é responsável por aplicar algum de tipo de regra de negócio* com o objeto Pessoa que está salvo no request.</p>
<p>Também é necessário adicionar um cast implícito para o objeto que você quer utilizar, pois o método</p>
<p><em>&#8220;getAttribute(String)&#8221; retorna um Object.</em></p>
<div class="codigo">
<pre><code>
<em>&lt;%@page import="vo.Pessoa"%&gt;
&lt;%
Pessoa pessoa = (Pessoa) request.getAttribute("pessoa");
if(pessoa != null){
%&gt;
&lt;p&gt;Ola &lt;%= pessoa.getNome() %&gt; - agora poderia cadastrar você no banco de dados&lt;/p&gt;
&lt;% } %&gt;</em>
</code></pre>
</div>
<h4>PageContext</h4>
<p>Este também possui os métodos <em>setAttribute(java.lang.String name, java.lang.Object o</em>) e <em>getAttribute(java.lang.String name)</em> comentados no assunto anterior. A lógica do funcionamento destes dois métodos é igual ao request.</p>
<p>Uma diferença deste objeto é que ele possui a funcionalidade para adicionar ou pegar uma referência a um objeto em qualquer escopo da aplicação.</p>
<p><em>getAttribute(java.lang.String name, int scope)</em> e setAttribute(java.lang.String name, java.lang.Object o, int scope) &#8211; onde &#8220;name&#8221; é o identificador do objeto, e o int &#8220;scope&#8221; indica qual o escopo que será utilizado, pode ser as seguintes constantes:</p>
<ul>
<li>PageContext.PAGE_SCOPE</li>
<li>PageContext.REQUEST_SCOPE</li>
<li>PageContext.SESSION_SCOPE</li>
<li>PageContext.APPLICATION_SCOPE</li>
</ul>
<p>Agora criei um exemplo onde não é definido implicitamente o escopo dos objetos:</p>
<div class="codigo">
<pre><code>
<em>&lt;%@page import="java.util.ArrayList"%&gt;
&lt;%@page import="java.util.List"%&gt;
&lt;%
List&lt;Integer&gt; arrNumeros = new ArrayList&lt;Integer&gt;(10);
for (Integer i = 0; i &lt; 10; i++) {
arrNumeros.add(i);
}
%&gt;
&lt;p&gt;Lista de Números - total de números: &lt;%=arrNumeros.size()%&gt;&lt;/p&gt;
&lt;%
for (Integer i = 0; i &lt; arrNumeros.size(); i++) {
%&gt;
&lt;ul&gt;
&lt;li&gt;&lt;%=arrNumeros.get(i)%&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;%
}
%&gt;</em>
</code></pre>
</div>
<p>No exemplo acima, criei um coleção de <em>Integer </em>e logo após mostro a listagem completa dos objetos. E você descobriu em qual escopo a variável &#8220;<em>arrNumeros</em>&#8221; está armazenada? Vamos viajar um pouco: durante o ciclo de vida da página alguns métodos são invocados na inicialização <em>(jspInit())</em>, logo após é invocado o método <em>jspService()</em> que é o responsável por escrever todo o conteúdo html para o cliente, e toda a fonte de <em>scriptlets </em>ficam armazenados dentro deste método&#8230; Concluindo, todas as variáveis são locais, existindo apenas durante a execução do método.</p>
<p>Utilizei a diretiva <em>@page</em> para realizar os <em>imports </em>da interface <em>java.util.List</em> e a coleção <em>java.util.ArrayList</em>.</p>
<h4>Referência</h4>
<p><em><a class="ext" href="http://java.sun.com/javaee/5/docs/api/">http://java.sun.com/javaee/5/docs/api/</a></em></p>
]]></content:encoded>
			<wfw:commentRss>http://www.debugando.com/entendendo-os-escopos-dos-objetos-parte-01/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

