JSP – Cookie e Session Attribute – Java

Publicado: 25 de novembro de 2014 em Java

Em ciência da computação, uma sessão é um intercâmbio semipermanente de informações interativas, também conhecido como um diálogo, uma conversa ou uma reunião, entre dois ou mais dispositivos de comunicação, ou entre um computador e usuário. Uma sessão HTTP é uma sequência de transações de rede de requisição-resposta e se dá da seguinte forma, um cliente HTTP inicia uma requisição estabelecendo uma conexão Transmission Control Protocol (TCP) para uma porta particular de um servidor. Um servidor HTTP ouvindo naquela porta espera por uma mensagem de requisição de cliente. Recebendo a requisição, o servidor retorna uma linha de estado, como “HTTP/1.1 200 OK“, e uma mensagem particular própria. O corpo desta mensagem normalmente é o recurso solicitado, apesar de uma mensagem de erro ou outra informação também poder ser retornada.

Um identificador de sessão, ID da sessão ou token de sessão é um pedaço de dados que é usado em comunicações de rede  para identificar uma sessão, uma série de trocas de mensagens relacionadas. As sessões são identificadas por único identificador (ID) no qual é associado aos dados criados no servidor, este identificador é gerado aleatoriamente e de difícil falsificação. O rastreamento de sessões é efetuado por padrão através de cookies.

HTTP Session: https://docs.oracle.com/javaee/7/api/javax/servlet/http/HttpSession.html

Utilizando Cookies e Sessions

1 – Crie um novo projeto web dinâmico e crie um novo Servlet chamado MeuCookie e MinhaSessao, utilize o código abaixo e rode sua aplicação, enquanto a aplicação está rodando na instancia do Tomcat do Eclipse, abra o seu navegador padrão e cole a url do navegador interno do Eclipse em seu browser, neste exemplo utilizamos o Firefox e logo após a pagina ser exibida digite seu nome no campo de texto e clique no botão da pagina:

Cria Cookie

Cookie

2 – Assim que o método do botão for executado, um cookie e um atributo para a sessão serão criados, a pagina seguinte não lerá o nome guardado no cookie e sim no atributo da sessão criada no servidor através de seu identificador, você pode abrir outras instancias do navegador e copiar e colar a url para que você brinque com a sessão.

Sessão

Sessão

3 – Para ver o cookie e a sessão criada no seu navegador, abra Opções no menu do Firefox e escolha a aba privacidade:

Firefox - Opções -  Privacidade

Firefox – Opções – Privacidade

4 – Clique no link excluir cookies em particular e digite no campo de busca, localhost. Selecione o cookie pelo seu nome e você pode ver os dados gravados no mesmo.

Firefox - Cookie

Firefox – Cookie

5 – Selecione a opção JSESSIONID e você verá o ID da sessão em você está conectado, assim que você fechar o browser o cookie e a sessão serão excluídos.

Session ID

Session ID

Exemplo:

Neste exemplo criamos um cookie e definimos um atributo para a sessão com o valor do cookie e logo recuperamos o atributo da sessão para que possamos exibir o valor gravado no cookie.

Java

Servlet – MeuCookie

package org.desenvolvimento.aberto;

import java.io.IOException;
import java.io.PrintWriter;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

@WebServlet("/MeuCookie")
public class MeuCookie extends HttpServlet {
	private static final long serialVersionUID = 1L;

	public MeuCookie() {
		super();
	}

	protected void doGet(HttpServletRequest request,
			HttpServletResponse response) throws ServletException, IOException {

		// Mostra pagina HTML
		response.setContentType("text/html");

		PrintWriter html = response.getWriter();

		html.println("<html>");
		html.println("<body>");
		html.println("<h1>Desenvolvimento Aberto</h1>");
		html.println("<h2>Cookies - Memoriza Dados</h2>");

		// Formulário processa este mesmo Servlet e o método DoPost
		html.println("<form action='MeuCookie' method='post'>");

		// Manipula cookie
		String nome = getDaCookieNome(request);
		if (nome != null)
			html.println("Nome: " + nome + " <br> ");
		else {
			html.println("Nome: <input type='text' name='nome' size ='55' /> ");
			html.println("<input type='submit' name='adiciona' value='Adicionar'/> <br>");
		}

		html.println("<a href='MinhaSessao'>testar Sessão</a>");
		html.println("</form>");
		html.println("</body>");
		html.println("</html>");
	}

	private String getDaCookieNome(HttpServletRequest request) {

		// Recupera cookie
		for (Cookie cookie : request.getCookies())
			if (cookie.getName().equals("DAname3"))
				return cookie.getValue();

		return null;
	}

	protected void doPost(HttpServletRequest request,
			HttpServletResponse response) throws ServletException, IOException {

		// Recupera cookie
		String nome = getDaCookieNome(request);

		if (nome == null) {

			// Recupera parâmetro
			nome = request.getParameter("nome");

			// Define sessão
			request.getSession().setAttribute("DAname3", nome);

			// Cria Cookie
			Cookie cookie = new Cookie("DAname3", nome);

			// Redireciona página
			response.addCookie(cookie);

			// Redireciona página
			response.sendRedirect("MinhaSessao");
		}
	}
}

 

Servlet – MinhaSessao

package org.desenvolvimento.aberto;

import java.io.IOException;
import java.io.PrintWriter;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

@WebServlet("/MinhaSessao")
public class MinhaSessao extends HttpServlet {
	private static final long serialVersionUID = 1L;

	public MinhaSessao() {
		super();
	}

	protected void doGet(HttpServletRequest request,
			HttpServletResponse response) throws ServletException, IOException {

		// Mostra pagina HTML
		response.setContentType("text/html");

		PrintWriter html = response.getWriter();

		html.println("<html>");
		html.println("<body>");
		html.println("<h1>Desenvolvimento Aberto</h1>");
		html.println("<h2>Cookies Sessão- Memoriza Dados Por Sessão</h2>");

		// Recupera sessão
		String nome = (String) request.getSession().getAttribute("DAname3");

		if (nome != null)
			html.println("Nome: " + nome + " <br> ");
		else {
			html.println("Nome: Não identificado  <br> ");
		}

		html.println("</form>");
		html.println("</body>");
		html.println("</html>");
	}

	protected void doPost(HttpServletRequest request,
			HttpServletResponse response) throws ServletException, IOException {
	}

}
Anúncios

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair /  Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair /  Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair /  Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair /  Alterar )

Conectando a %s