Quantidade de usuários

5 respostas
V

Pessoal,

Tenho um chat em minha aplicação e gostaria de fazer sempre que um usuário ao entrar no chat, mostrasse a quantidade total de usuários no chat.

Alguém sabe como eu posso pegar essa quantidade, é usando sessão?

Abraço,
Vinicius.

5 Respostas

Y

Isso depende muito de como o projeto está montado.

Usando JSP ou Servlet você pode usar os escopos de “application” e “ServletContext”, respectivamente.

V

Você pode detalhar um pouco mais?

Y

Claro que isso pode ser implementado decentemente, mas vou expressar aqui bem grosseiramente.

Na inicialização do contexto da sua aplicação na Servlet você seta uma variável:

Conforme forem entrando novos usuários, você usa:

E então no restante do processamento você pode usar avariável actualUsersCount.

No JSP você pode usar os mesmos métodos em scriptlets, apenas alterando a variável servletContext por application (que é um objeto implícito da JSP).

Y

Mais informações sobre os objetos entre Servlets e JSP’s:

http://www.guj.com.br/posts/preList/48735/255906.java#255906

V

Estou faznedo um teste e dentro do meu servlet eu fiz isso:

public int counter = 0;

request.setAttribute(usersCount, counter);

int actualUsersCount = Integer.parseInt((String) request.getAttribute(usersCount));

System.out.println("actualUsersCount: "+actualUsersCount);

Ele dá esse erro:

java.lang.ClassCastException: java.lang.Integer

at br.com.cpqd.www.dmd.comm.ChatServlet.processRequest(ChatServlet.java:

318)

at br.com.cpqd.www.dmd.comm.ChatServlet.doGet(ChatServlet.java:2895)

at javax.servlet.http.HttpServlet.service(HttpServlet.java:689)

at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)

at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(Appl

icationFilterChain.java:252)

at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationF

ilterChain.java:173)

at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperV

alve.java:213)

at org.apache.catalina.core.StandardContextValve.invoke(StandardContextV

alve.java:178)

at org.apache.catalina.authenticator.AuthenticatorBase.invoke(Authentica

torBase.java:432)

at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.j

ava:126)

at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.j

ava:105)

at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineVal

ve.java:107)

at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.jav

a:148)

at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java

:869)

at org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.p

rocessConnection(Http11BaseProtocol.java:664)

at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpo

int.java:527)

at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFol

lowerWorkerThread.java:80)

at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadP

ool.java:684)

at java.lang.Thread.run(Thread.java:595)

java.lang.NumberFormatException: null

at java.lang.Integer.parseInt(Integer.java:415)

at java.lang.Integer.parseInt(Integer.java:497)

at br.com.cpqd.www.dmd.comm.ChatServlet.processRequest(ChatServlet.java:

672)

at br.com.cpqd.www.dmd.comm.ChatServlet.doPost(ChatServlet.java:2904)

at javax.servlet.http.HttpServlet.service(HttpServlet.java:709)

at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)

at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(Appl

icationFilterChain.java:252)

at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationF

ilterChain.java:173)

at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperV

alve.java:213)

at org.apache.catalina.core.StandardContextValve.invoke(StandardContextV

alve.java:178)

at org.apache.catalina.authenticator.AuthenticatorBase.invoke(Authentica

torBase.java:432)

at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.j

ava:126)

at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.j

ava:105)

at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineVal

ve.java:107)

at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.jav

a:148)

at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java

:869)

at org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.p

rocessConnection(Http11BaseProtocol.java:664)

at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpo

int.java:527)

at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFol

lowerWorkerThread.java:80)

at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadP

ool.java:684)

at java.lang.Thread.run(Thread.java:595)

Alguém pode me ajudar.

Pois estava pensando no jsp fazer assim:

int actualUsersCount = Integer.parseInt((String) request.getAttribute(“usersCount”));

request.setAttribute(“usersCount”, ++actualUsersCount);

Mas dá erro também, onde estou pecando?

Obriagado.

Criado 26 de março de 2007
Ultima resposta 27 de mar. de 2007
Respostas 5
Participantes 2