nao tenho nem nocao de como se utiliza SESSAO para isso alguem poderia me dar 1 light?
Servlet Contador com SESSAO? (Resolvido graças a -> drsmachado)
19 Respostas
Não tem muito segredo procure aki mesmo no forum por HttpSession.
certo obrigado vou dar uma olhada
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
/**
* Servlet implementation class Lab11
*/
public class Lab11 extends HttpServlet {
private static final long serialVersionUID = 1L;
/**
* @see HttpServlet#HttpServlet()
*/
public Lab11() {
super();
// TODO Auto-generated constructor stub
}
/**
* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
*/
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
HttpSession session = request.getSession();
response.setContentType("text/html");
session.setMaxInactiveInterval(10000);
PrintWriter out = response.getWriter();
int count = 0;
session.setAttribute("User", count);
count++;
out.println("Numero de Acesso: "+session.getAttribute("User"));
}
/**
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
*/
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
}
}
so que nao incrementa alguem poderia me ajudar?
Isso acontece por que todas as vezes que o login for realizado, uma nova sessão se inicia.
O ideal é criar um tipo de persistência desta informação (banco de dados, gravar em txt, xml, etc) e, ao identificar que o usuário X efetuou acesso, incrementar o dado referente.
intao… mais nao tem como eu fazer sem nenhum documento externo?
so guardando na sessao?
como se fosse cookie?
Sessão não, pois ao executar o método que foi postado ali você cria uma nova, então o contador será o mesmo.
Não sei o que entende por cookie, mas é um arquivo externo, salvo na máquina do cliente.
Até pode ser feito, mas vai precisar alterar muita coisa ai.
tipo
se eu usar sessao e toda vez eu incrementar
session.setAttribute(“User”, 1);
fechar a pagina e colocar
session.setAttribute(“User”, 2);
ele nao salva o numero da sessao "User"1 ?
se eu quiser criar um contador que conte a qtd de vezes que um usuario acessou o site eu terei obrigatoriamente que usar cookie ou um arquivo?
Sim.
Pense da seguinte forma, uma sessão é algo que existe por um determinado período de tempo. (Não sei por que me veio à cabeça o Congrsso Nacional…). Normalmente ela existe a partir do login do usuário até o momento em que este efetua logoff ou mesmo fecha a página (ou conexão é perdida, etc). Sendo assim, tudo o que ele alterar (ou o sistema) durante aquela sessão, não poderá ser recuperado, exceto se (e somente se) houver um mecanismo de persistência (um atributo no cookie contAcesso = x) ou no banco de dados.
a sessao fica armazenada no servidor… certo?
se eu deichar uma sessao para “morrer” em sei la 30 minutos
e quiser que nesse periodo ela pegue o endereco do usuario e conte quantas vezes ele acessou a pagina
tem como eu fazer isso?
pois estou com um exercicio para fazer so que ta foda ^^
o enunciado é
Criar uma Servlet que conte o número de acessos
de um determinado usuário(exibir na tela o
número). Utilizar sessão para isso(método GET).
agradeco pela ajuda que vc esta me dando =)
A sessão pode durar quanto tempo ela tenha sido configurada para tal.
O problema é, a partir do momento que ela expira, os dados que nela existiam (Objetos, lixos de memória, imagens, etc, etc, etc) se perdem.
Se o usuário tentar entrar, nesse período de validade da sessão, a contagem ocorre normalmente.
Se a sessão for destruída, não há como recuperar.
É como a memória RAM… Desligou o computador, ela não tem mais nada, a não ser que você religue, mas os dados que trafegavam nela, se foram…
certo… intao tem como eu fazer o contador com a session
eu gostaria de saber como eu fazer para “andar” na session
por que pelo que intendi tipo cria uma session (usuario) e nela coloca algumas informacoes; usuario, 1; usuario,2 e tals
como eu faria para descobrir o tamanho desta session para chegar no ultimo numero cadastrado e inserir um novo?
A sessão não é um número.
Você deve manipular (colocar um if/else) e verificar se o usuário está logado. Se o acesso é o primeiro, então cria uma sessão e incrementa o contador e coloca na sessão. Senão, ignora a criação de uma nova sessão e incrementa o contador, não esquecendo que este valor deve ser salvo numa variável de sessão, através do método nomeDaSessao.setAttribute("String_de_nome_da_Variavel", variavel);.
este :“String_de_nome_da_Variavel”
no caso seria o nome do usuario por exemplo?
e a variavel poderia ser o contador de quantas vezes o usuario acessou a pagina?
Se faz sentido pra ti e você não vai perder a informação posteriormente, beleza.
Eu colocaria
nomeDaSessao.setAttribute("contador", cont);
nomeDaSessao.setAttribute("usuario", nomeDoUsuario);
Mais intuitivo
e como eu faco para verificar se o usuario e o mesmo?
request.getRemoteAddr();?
Viu o post anterior?
Viu que coloquei, além do contador, uma variável com o nome do usuário?
Pode colocar assim mesmo, quanto atribui a sessão inicial (primeira visita) ou pode colocar uma variável com id, código, cpf, etc…
fiz este codigo:
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String a = request.getRemoteAddr();
HttpSession session = request.getSession();
HttpSession contador = null;
contador.setAttribute("Contador", 0);
int cont =0;
session.setAttribute("Usuario", request.getRemoteAddr());
if(a == session.getAttribute("Usuario")){
contador.setAttribute("Contador", cont++);
}
response.setContentType("text/html");
PrintWriter out = response.getWriter();
out.println("O Usuario entrou: "+contador.getAttribute("Contador"));
}
so que da null pointer exception
da 1 look ve se ta meio certo sei la ^^
Por que dois objetos HttpSession (session e contador)?
Dê uma olhada aqui http://www.apl.jhu.edu/~hall/java/Servlet-Tutorial/Servlet-Tutorial-Session-Tracking.html e aqui http://www.stardeveloper.com/articles/display.html?article=[telefone removido]&page=2 (este tem um plus, uma classe que faz a contagem de acessos).
hmm muito bom esse exemplo
vou verificar ele para tentar intender oque ele fez
para aprender
muito obrigado pela ajuda