Buscar

17 - Sessao

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 17 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 17 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 9, do total de 17 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

Programação Servidor 
Sistemas web
Uso de Sessão (Session)
Sessão
• Conceito de estado para objeto – o estado de um objeto
compreende os dados que ele detém num dado
momento.
• Um objeto guarda informações. Dizemos que um dado
objeto guarda seu estado.
• Num aplicação Web um dado objeto pode não guardar
estado, ou seja recebe informações em seus atributos
repassa e em seguida é destruído.
Sessão
• Um exemplo de objeto servidor sem estado pode ser
um que retorne informações sobre a respeito de um
livro.
• Durante a interação – requisição do usuário até a
apresentação dos dados – o objeto mantém o estado
dos dados do livro consultado.dos dados do livro consultado.
• Uma vez apresentada as informações, o objeto que está
apenas no nível da requisição perde seu estado, ou
seja, não é mais válido.
Sessão
• Uma consulta de outro livro, transcorre o mesmo
processamento. O objeto recebe um estado por algum
tempo de depois este estado é destruído.
• Imagine agora que precise guardar todos os ISBNs
(códigos dos livros) que o usuário consultou e esta
informação fique permanente enquanto o usuário ficarinformação fique permanente enquanto o usuário ficar
consultando outros livros.
• Com isso essa lista precisa persistir entre as várias
requisições do usuário.
Sessão
• O servidor por si só não guarda dados persistentes do
usuário ou seja da sessão do usuário.
• O protocolo HTTP por sua vez também é um protocolo
que não guarda estado.
• O controle do estado de um ou mais objetos precisa ser• O controle do estado de um ou mais objetos precisa ser
controlado dentro do contexto de um objeto session, na
aplicação Web.
Sessão
• Os itens no carrinho de compra de um site de compras
na Internet, precisa estar no estado da sessão do
usuário.
• O estado da sessão de um usuário significa que está
separado do estado da sessão de outro usuário.
• Para armazenar o estado da sessão você pode ter três
escolhas.
Sessão
• O estado da sessão pode ser armazenado no cliente,
usando cookies que são registros de informações que
ficam gravados na estação do usuário, ou em campo
HTML do tipo hide (escondido).
• No servidor há mecanismo para armazenar o estado da
sessão – uso do objeto da classe HttpSession.sessão – uso do objeto da classe HttpSession.
• No banco de dados – os dados da sessão do usuário
são guardados no banco de dados enquanto durar a
sessão do usuário.
Sessão
• A primeira opção – armazenar no cliente tem impacto
na largura de banda (conexão) do cliente, pois os dados
são transferidos pela rede a cada solicitação.
• No banco de dados exige um trabalho maior para
armazenar e recuperar os dados da sessão sempre que
os dados da sessão precisem ser apresentados aoos dados da sessão precisem ser apresentados ao
usuário.
• Em caso de manuseio de vários dados a guarda da
sessão no servidor pode dar um desempenho melhor.
Sessão
• Nos slides seguintes teremos a apresentação código que
lida com objeto de sessão dentro da lógica de um
carrinho de compras.
• O usuário solicita uma lista de produtos.
• Dessa lista, seleciona alguns produtos. Os produtos• Dessa lista, seleciona alguns produtos. Os produtos
selecionados precisam ser guardados dentro da
estrutura de uma sessão, pois se forem guardados
apenas no contexto de um request, a lista selecionada
pelo cliente não será acessível.
ProdutoDAO
• Na classe DAO foi utilizado um objeto da classe
HashMap que permite estruturar os dados dos objetos
da classe produto obtidos do banco de dados numa
estrutura de matriz.
• Um HashMap é uma matriz de objetos, contendo uma
coluna tendo um objeto que é índice para os dados do
objeto armazenado, na outra colunaobjeto armazenado, na outra coluna
produto
codigo=45
descricao=“placa de video”
valorunit=259.80
Integer 
45
produto
codigo=67
Descricao=”mouse ps2”
valorunit=18.50
Integer 
67
ProdutoDAO
public HashMap<Integer, ProdutoBean> consultarProdutosDAO () 
throws Exception {
Connection conexao = FabricaConexao.abreConexaoMySQL();
ProdutoBean produto = null;
HashMap<Integer, ProdutoBean> matrizProdutos = new
HashMap<Integer, ProdutoBean>();
try {
String sql = "SELECT * FROM TBProdutos";
Statement comandoSQL = conexao.createStatement();
ResultSet resultado = comandoSQL.executeQuery(sql);ResultSet resultado = comandoSQL.executeQuery(sql);
while (resultado.next()) {
int cod = resultado.getInt("codigo");
String desc = resultado.getString("descricao");
float vlrunit = resultado.getFloat("valorunit");
produto = new ProdutoBean(cod, desc, vlrunit);
matrizProdutos.put(new Integer(cod), produto);
}
if (matrizProdutos.isEmpty())
throw new Exception("Não há produto cadastrado");
ProdutoServlet
• A classe ProdutoServlet ao receber uma requisição para a
lista de produtos, irá solicitar à classe DAO uma matriz de
objetos do tipo ProdutoBean, agora dentro da estrutura
de HashMap.
• A matriz de objetos precisa ser guardada e acessível em
outro objeto que visível por todas as Servlets e JSP nas
requisições do usuário.requisições do usuário.
• A matriz de objetos não é armazenada dentro da
estrutura do objeto Request, pois na requisição de
“Adicionar ao Carrinho”, a matriz não será mais visivel.
ProdutoServlet
private void listarProdutos(HttpServletRequest 
request,HttpServletResponse response) throws Exception {
try {
ProdutoDAO dao = new ProdutoDAO();
HashMap<Integer, ProdutoBean> matrizProdutos = 
dao.consultarProdutosDAO();
getServletContext().setAttribute("matrizProdutos", 
matrizProdutos);
RequestDispatcher rd = 
request.getRequestDispatcher("listaProduto.jsp");
rd.forward(request, response);
} catch (Exception objEx) {
throw objEx;
}
}
listaProduto.jsp
• A página listaProduto.jsp envia a ação AdicionarCarrinho à
ServletProduto.
<input type=submit name="btn_acao" value="AdicionarCarrinho">
ProdutoServlet
if (acao.equals("AdicionarCarrinho")){
//recupera os codigos dos produtos selecionados
String[] codigosProds = request.getParameterValues("chkCodProdutos");
System.out.println(codigosProds[0]);
//recupera os produtos selecionados e adiciona os selecionados nas sessao
HashMap<Integer, ProdutoBean> mapProdutos = (HashMap<Integer, 
ProdutoBean>) getServletContext().getAttribute("matrizProdutos");
List<ProdutoBean> prodsSelecionados = new ArrayList<ProdutoBean>();List<ProdutoBean> prodsSelecionados = new ArrayList<ProdutoBean>();
for (String codigo : codigosProds) {
ProdutoBean produto = mapProdutos.get(Integer.parseInt(codigo)); 
prodsSelecionados.add(produto);
}
HttpSession sessao = request.getSession();
sessao.setAttribute("produtosSelecionados", prodsSelecionados);
RequestDispatcher rd = 
request.getRequestDispatcher("confirmaCompra.jsp");
rd.forward(request, response)
confirmaCompra.jsp
• A página listaProduto.jsp lista apenas os produtos
selecionados pelo cliente e oferece a ação de fechar a
compra.
• O post será direcionado à ClienteServlet, que por sua vez
irá solicitar o login.
<form name="frmListaProdutos" method="post" action="clientes" >
<input type=submit name="btn_acao" value="FecharCompra"><input type=submit name="btn_acao" value="FecharCompra">
login.jsp
• Para fechar a compra, é apresentada a tela de login na
qual o usuário irá se identificar para fechar o
procedimento de compra.

Continue navegando