import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
public class ContadorServlet extends HttpServlet{
public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException {
response.setContentType("text/html");
Long contadorL = 0L;
RandomAccessFile contador = new RandomAccessFile("contador", "rw");
try {
contadorL = contador.readLong();
}
catch(Exception ex) {} // Se não foi possivel ler, o valor antigo(0L), é mantido.
++contadorL;
response.getWriter().write(Long.toString(contadorL));
contador.seek(0);
contador.writeLong(contadorL);
contador.close();
}
}
Contador de acessos
3 Respostas
Sugiro usar a interface HttpSessionListener ela monitora qd uma sessão é
criada e destruída, e tb vc pode obter outras informações da sessão.
Será necessário colocá-la no web.xml (como listener) aí toda vez que
alguém criar uma sessão será disparado evento correspondete na classe que ao qual vc implementou esta interface, neste momento vc pode gravar numa tabela, e qd ocorrer o evento de destruição de sessão vc deleta o registro, vc pode ter uma log de tempo de permanência na sessão e outras coisas mais.
No web.xml use:
<listener>
<listener-class>com.SuaClasse</listener-class>
</listener>
no web.xml sei que tb tem uma tag que diz quanto tempo de timeout uma
sessão pode ter, o que corresponde ao método getMaxInactiveInterval da HttpSession. Qd der timeout ele dispara o evento da interface HttpSessionListener.
Espero ter ajudado.
Para isso use:
<session-config>
<session-timeout>30</session-timeout>
</session-config>
Em minutos
Vc pode fazer algo como abaixo ou gravando num banco usando o código abaixo:
import javax.servlet.http.*;
public class SessionCount implements HttpSessionListener {
private static int numberOfSessions = 0;
public void sessionCreated (HttpSessionEvent evt) {
numberOfSesssions++; }
public void sessionDestroyed (HttpSessionEvent evt) {
numberOfSesssions–; }
public static int getNumberOfSessions() {
return numberOfSessions; }
}
no seu web.xml vc coloca as tags e o .class em WEB-INF\classes
<listener>
<listener-class>SessionCount</listener-class>
</listener>
Em qq JSP vc pode usar:
<%=SessionCount.getNumberOfSessions()%>
Isto pq o contêiner web já deixou na memória esta classe assim com faz com os servlets.
Espero ter ajudado.
bom, segui os exemplos de vcs.
na hora de testar, eu executei o meu jsp em um navegador, e apareceu que o número de sessões é 0. Abri outro navegador junto e daí o número de sessões que apareceu na pagina foi 1.
Só que no application mannager do tomcat, aparece que o número de sessões é 2!