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.
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.
Isso depende muito de como o projeto está montado.
Usando JSP ou Servlet você pode usar os escopos de “application” e “ServletContext”, respectivamente.
Você pode detalhar um pouco mais?
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).
Mais informações sobre os objetos entre Servlets e JSP’s:
http://www.guj.com.br/posts/preList/48735/255906.java#255906
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.