Ola a todos
Estou tendo um problema com um aplicação WEB que utiliza jakarta-tomcat-5.0.25 Java 5.0 e Mysql.
Essa aplicação acessa o bando de dados e carrega uma Lista com dados oriundos do Banco.
Quando acesso a pagina jsp pela primeira vez os dados aparecem certinho na Lista. Mas se eu apertar o F5 ou fechar a pagina e abrir novamente, as listas duplicam de tamanho, dando a impressão que os dados estão sendo acumulados. O que estou achando mais estranho é que mesmo fechando o Browser a Lista aparece com as informações que eu tinha acessado da ultima vez, ai tenho que derrubar o Tomcat. e quando acesso a primeira vez a pagina após ter reiniciado o Tomcat, ela aparece corretamente.
Não sei se é um erro de lógica ou se é algum parametro na conf do Tomcat.
Alguém poderia me ajudar ?
Segue minhas classes e jsp
Bean:
package br.com.supportnet;
public class Ocorrencia {
private int Idprod;
private String Tipocontato;
private String Tipochamado;
private String Formacontato;
private String Produto;
private String Descricaoclasse;
private String Descricao;
private int Qtd;
private String Uf;
public void setIdprod(int id) {
Idprod = id;
}
public void setTipocontato(String tipocontato) {
Tipocontato = tipocontato;
}
public void setTipochamado(String tipochamado) {
Tipochamado = tipochamado;
}
public void setFormacontato(String formacontato) {
Formacontato = formacontato;
}
public void setProduto(String produto) {
Produto = produto;
}
public void setDescricaoclasse(String dsc) {
Descricaoclasse = dsc;
}
public void setDescricao(String descricao) {
Descricao = descricao;
}
public void setQtd(int qtd) {
Qtd = qtd;
}
public void setUf(String uf) {
Uf = uf;
}
public int getIdProd() {
return Idprod;
}
public String getTipocontato() {
return Tipocontato;
}
public String getTipochamado() {
return Tipochamado;
}
public String getFormacontato() {
return Formacontato;
}
public String getProduto() {
return Produto;
}
public String getDc() {
return Descricaoclasse;
}
public String getD() {
return Descricao;
}
public int getQtd() {
return Qtd;
}
public String getUf() {
return Uf;
}
}
Acessa banco e carrega Lista:
package br.com.supportnet;
import java.util.<em>;
import java.sql.</em>;
/**
*
-
@author wleal
*/
public class TO
{public static List getChamados() { ArrayList chamados = new ArrayList();
String JDBC_DRIVER = “com.mysql.jdbc.Driver”;
String DATABASE_URL = “jdbc:mysql://localhost:3306/support”;Connection connection = null; Statement statement = null; //conecta-se ao banco support e consulta tabela
try { Class.forName(JDBC_DRIVER); //carrega classe de driver de banco de dados //estabelece conexão com o banco connection = DriverManager.getConnection(DATABASE_URL, "root", ""); //cria instrução para conectar banco statement = connection.createStatement(); //consulta o banco ResultSet resultSet = statement.executeQuery("select tc.tipo_contato as tipo_contato, co.uf, a.forma_contato, p.codigo, p.descricao as Produto, c.nome as Motivo, " + "b.nome as Descricao_motivo, p.descricao_classe, count(a.id_chamado) Qtd " + "from CHAMADO a, TIPO_CHAMADO b, TIPO_CHAMADO c, CONTATO co, TIPO_CONTATO tc, CHAMADO_PRODUTO cp, PRODUTO p " + "where b.id_tipo_chamado = a.id_tipo_chamado and " + "c.id_tipo_chamado = b.id_tipo_pai and " + "a.id_contato = co.id_contato and " + "co.id_tipo_contato = tc.id_tipo_contato and " + "a.id_chamado = cp.id_chamado and " + "cp.codigo = p.codigo and " + "a.data_inc between 20080101 and 20080202 " + "group by b.nome, c.nome, p.descricao, p.descricao_classe, tc.tipo_contato, co.uf"); ResultSetMetaData metaData = resultSet.getMetaData(); while (resultSet.next()) { Ocorrencia Contatos = new Ocorrencia(); Contatos.setTipocontato(resultSet.getString("tipo_contato")); Contatos.setUf(resultSet.getString("uf")); Contatos.setTipochamado(resultSet.getString("Motivo")); Contatos.setFormacontato(resultSet.getString("forma_contato")); Contatos.setProduto(resultSet.getString("Produto")); Contatos.setIdprod(resultSet.getInt("codigo")); Contatos.setDescricaoclasse(resultSet.getString("descricao_classe")); Contatos.setDescricao(resultSet.getString("Descricao_motivo")); Contatos.setQtd(resultSet.getInt("Qtd")); chamados.add(Contatos); }//fim do while }//fim do try catch (SQLException sqlException) { sqlException.printStackTrace(); System.exit(1); }//fim do catch catch (ClassNotFoundException classNotFound) { classNotFound.printStackTrace(); System.exit(1); }//fim do cacth finally //assegura que conexao com o banco são fechada corretamente { try { statement.close(); connection.close(); } //fim do try catch (Exception exception) { exception.printStackTrace(); System.exit(1); }//fim do catch }//fim do finall
return chamados;
}//fim do metodo
}//fim da classe
trata dados oriundos da classe acima:
package br.com.supportnet;
import java.util.List;
import java.util.ArrayList;
import javax.swing.JOptionPane;
public class OcorrenciaData
{
public static final ArrayList chamados = new ArrayList();
public static ArrayList CasList = new ArrayList();
public static ArrayList AlergiaList = new ArrayList();
public static ArrayList CoreList = new ArrayList();
public static ArrayList ModuloList = new ArrayList();
public static ArrayList PediatricoList = new ArrayList();
public static ArrayList EspecificaList = new ArrayList();
public static ArrayList OralList = new ArrayList();
public static ArrayList MetabolicoList = new ArrayList();
public static ArrayList InstiList = new ArrayList();
//nome do driver jdbc e URL do banco
//carrega aplicativo
public List getMetabolico(List <Ocorrencia> chamados)
{
int metabolico[] = {309071, 9545, 10183, 9520, 1201, 10026, 10029, 10295, 10028, 110971, 110972, 110973, 10161, 10159, 937, 877, 1205, 10282, 10279, 875, 1203, 18687};
for (Ocorrencia metabolicos : chamados)
{
for (int i = 0; i < metabolico.length; i++)
{
if (metabolicos.getIdProd() == metabolico[i])
{
MetabolicoList.add(metabolicos);
}//fim do if
}//fim do for interno
}//fim do for externos
return MetabolicoList;
}//fim do metodo getOcorrenciaData.chamados
public List getCas(List chamados)
{
int Cas[] = {7502650, 35651, 35650, 35150, 35151, 35147, 35242, 35244, 35246};
for (Ocorrencia cas : chamados)
{
for (int i = 0; i < Cas.length; i++)
{
if (cas.getIdProd() == Cas[i])
{
CasList.add(cas);
}//fim do if
}
}//fim do for externo
return CasList;
}//fim do metodo getCas
public List getAlergia(List chamados)
{
int Alergia[] = {659290, 659288};
for (Ocorrencia alergia : chamados)
{
for(int i = 0; i < Alergia.length; i++)
{
if (alergia.getIdProd() == Alergia[i])
{
AlergiaList.add(alergia);
}//fim do if
}//fim do for interno
}//fim do for externo
return AlergiaList;
}//fim do metodo
public List getCore(List chamados)
{
int Core[] = {16525, 16524, 16527, 16562, 16421, 16428, 16396, 65074, 65075, 65076, 1213, 1231, 1232, 1211};
for (Ocorrencia core : chamados)
{
for(int i = 0; i < Core.length; i++)
{
if (core.getIdProd() == Core[i])
{
CoreList.add(core);
}//fim do if
}//fim do for interno
}//fim do for externo
return CoreList;
}//fim do metodo
public List getModulo(List chamados)
{
int Modulo[] = {6239, 1219, 112159, 6241, 1220, 1221, 668073, 6243};
for (Ocorrencia modulo : chamados)
{
for(int i = 0; i < Modulo.length; i++)
{
if (modulo.getIdProd() == Modulo[i])
{
ModuloList.add(modulo);
}//fim do if
}//fim do for interno
}//fim do for externo
return ModuloList;
}//fim do metodo
public List getPediatrico(List <Ocorrencia> chamados)
{
int Pediatrico[] = {18938, 18943, 18929, 16859, 16803, 16846, 16442, 16440, 16820, 16898};
for (Ocorrencia pediatrico : chamados)
{
for(int i = 0; i < Pediatrico.length; i++)
{
if (pediatrico.getIdProd() == Pediatrico[i])
{
PediatricoList.add(pediatrico);
}//fim do if
}//fim do for interno
}//fim do for externo
return PediatricoList;
}//fim do metodo
public List getEspecifica(List <Ocorrencia> chamados)
{
int Especifica[] = {16787, 16493, 16972, 16953, 6235, 6251, 6246, 6232, 6253, 6252, 16516, 16433, 6248};
for (Ocorrencia especifica : chamados)
{
for(int i = 0; i < Especifica.length; i++)
{
if (especifica.getIdProd() == Especifica[i])
{
EspecificaList.add(especifica);
}//fim do if
}//fim do for interno
}//fim do for externo
return EspecificaList;
}//fim do metodo
public List getOral(List <Ocorrencia> chamados)
{
int Oral[] = {18836, 18848, 18842, 18819, 18812, 18103, 18107, 18111, 18415, 18417, 18416, 18438, 18510, 18498, 18474, 18627, 18667, 18628 };
for (Ocorrencia oral : chamados)
{
for(int i = 0; i < Oral.length; i++)
{
if (oral.getIdProd() == Oral[i])
{
OralList.add(oral);
}//fim do if
}//fim do for interno
}//fim do for externo
return OralList;
}//fim do metodo
public List getinstitucional(List <Ocorrencia> chamados)
{
int Inst[] = {1212};
for (Ocorrencia inst : chamados)
{
for(int i = 0; i < Inst.length; i++)
{
if (inst.getIdProd() == Inst[i])
{
InstiList.add(inst);
}//fim do if
}//fim do for interno
}//fim do for externo
return InstiList;
}//fim do metodo
public List classificaReclamacoes(List<Ocorrencia> classificados)
{
ArrayList<Ocorrencia> Reclamacoes = new ArrayList<Ocorrencia>();
for (Ocorrencia data : classificados)
{
if(data.getTipochamado().equals("Reclamação"))
{
Reclamacoes.add(data);
}//fim do if
}// fim do for interno
return Reclamacoes;
}//fim do metodo Classifica
public ArrayList classificaCritica(List<Ocorrencia> classificados)
{
ArrayList<Ocorrencia> Criticas = new ArrayList<Ocorrencia>();
for (Ocorrencia data : classificados)
{
if(data.getTipochamado().equals("Crítica"))
{
Criticas.add(data);
}//fim do if
}
return Criticas;
}//fim das criticas classificadas
public List classificaElogios(List<Ocorrencia> classificados)
{
ArrayList<Ocorrencia> Elogios = new ArrayList<Ocorrencia>();
for (Ocorrencia data : classificados)
{
if(data.getTipochamado().equals("Elogio / Agradecimento"))
{
Elogios.add(data);
}//fim do if
}
return Elogios;
}//fim das criticas classificadas
public List classificaInformacoes(List<Ocorrencia> classificados)
{
ArrayList<Ocorrencia> Informacoes = new ArrayList<Ocorrencia>();
for (Ocorrencia data : classificados)
{
if(data.getTipochamado().equals("Informação"))
{
Informacoes.add(data);
}//fim do if
}
return Informacoes;
}//fim das criticas classificadas
public List classificaSugestoes(List<Ocorrencia> classificados)
{
ArrayList<Ocorrencia> Sugestoes = new ArrayList<Ocorrencia>();
for (Ocorrencia data : classificados)
{
if(data.getTipochamado().equals("Sugestão"))
{
Sugestoes.add(data);
}//fim do if
}
return Sugestoes;
}//fim das criticas classificadas
public List classificaSolicitacoes(List<Ocorrencia> classificados)
{
ArrayList<Ocorrencia> Solicitacoes = new ArrayList<Ocorrencia>();
for (Ocorrencia data : classificados)
{
if(data.getTipochamado().equals("Solicitação"))
{
Solicitacoes.add(data);
}//fim do if
}
return Solicitacoes;
}//fim das criticas classificadas
//Metodo que executa toda soma de Ocorrencia
public int sum(List< Ocorrencia > list)
{
int total = 0;
for (Ocorrencia Contatos : list)
{
total += Contatos.getQtd();
}
return total;
}//fim do metodo
//metodo que conta ocorrencia via carta
public int contaCarta(List< Ocorrencia > list)
{
int countcarta = 0;
for (Ocorrencia Contatos : list)
{
if (Contatos.getFormacontato().equals("Carta"))
{
countcarta += Contatos.getQtd();
}
}//fim do for
return countcarta;
}//fim do metodo
//metodo que conta ocorrencia via email
public int contaEmail(List<Ocorrencia> list)
{
int countemail = 0;
for (Ocorrencia Contatos : list)
{
if (Contatos.getFormacontato().equals("E-mail"))
{
countemail += Contatos.getQtd();
}
}//fim do for
return countemail;
}//fim do metodo
//metodo que conta ocorrencia via fone
public int contaFone(List<Ocorrencia> list)
{
int countfone = 0;
for (Ocorrencia Contatos : list)
{
if (Contatos.getFormacontato().equals("Fone"))
{
countfone += Contatos.getQtd();
}
}//fim do for
return countfone;
}//fim do metodo
public List clear(List lista)
{
lista.clear();
return lista;
}//fim do metodo clear
}
Pagina jsp:
<%<a class="mention" href="/u/page">@page</a> contentType=“text/html”%>
<%<a class="mention" href="/u/page">@page</a> pageEncoding=“UTF-8”%>
<%<a class="mention" href="/u/page">@page</a> import = “br.com.supportnet.<em>"%>
<%<a class="mention" href="/u/page">@page</a> import = "java.util.</em>”%>
| Metabolicos : <%=ocorrenciadata.sum(metabolicos)%> | |||||
| Criticas : <%=ocorrenciadata.sum(metacritica)%> | |||||
| Tipo contato | Uf | Produto | Classificação | Descrição | Quantidade |
| <%=critica.getTipocontato()%> | <%=critica.getUf()%> | <%=critica.getProduto()%> | <%=critica.getTipochamado()%> | <%=critica.getD()%> | <%=critica.getQtd()%> |
| Elogios : <%=ocorrenciadata.sum(metaelogios)%> | |||||
| Tipo contato | Uf | Produto | Classificação | Descrição | Quantidade |
| <%=elogios.getTipocontato()%> | <%=elogios.getUf()%> | <%=elogios.getProduto()%> | <%=elogios.getTipochamado()%> | <%=elogios.getD()%> | <%=elogios.getQtd()%> |
| Informações : <%=ocorrenciadata.sum(metainformacoes)%> | |||||
| Tipo contato | Uf | Produto | Classificação | Descrição | Quantidade |
| <%=informacoes.getTipocontato()%> | <%=informacoes.getUf()%> | <%=informacoes.getProduto()%> | <%=informacoes.getTipochamado()%> | <%=informacoes.getD()%> | <%=informacoes.getQtd()%> |
| Solicitações : <%=ocorrenciadata.sum(metasolicitacoes)%> | |||||
| Tipo contato | Uf | Produto | Classificação | Descrição | Quantidade |
| <%=solicitacoes.getTipocontato()%> | <%=solicitacoes.getUf()%> | <%=solicitacoes.getProduto()%> | <%=solicitacoes.getTipochamado()%> | <%=solicitacoes.getD()%> | <%=solicitacoes.getQtd()%> |
| Sugestões : <%=ocorrenciadata.sum(metasugestoes)%> | |||||
| Tipo contato | Uf | Produto | Classificação | Descrição | Quantidade |
| <%=sugestoes.getTipocontato()%> | <%=sugestoes.getUf()%> | <%=sugestoes.getProduto()%> | <%=sugestoes.getTipochamado()%> | <%=sugestoes.getD()%> | <%=sugestoes.getQtd()%> |
| Reclamações : <%=ocorrenciadata.sum(metareclama)%> | |||||
| Tipo contato | Uf | Produto | Classificação | Descrição | Quantidade |
| <%=reclamacoes.getTipocontato()%> | <%=reclamacoes.getUf()%> | <%=reclamacoes.getProduto()%> | <%=reclamacoes.getTipochamado()%> | <%=reclamacoes.getD()%> | <%=reclamacoes.getQtd()%> |
| Fone | <%=ocorrenciadata.contaFone(metabolicos)%> | ||||
| <%=ocorrenciadata.contaEmail(metabolicos)%> | Carta | <%=ocorrenciadata.contaCarta(metabolicos)%> | |||
Gostaria da ajuda de vcs se possivel