Cache X JSP

3 respostas
T

Oi Pessoal, td bem??
Estou com um probleminha na minha pagina JSP.
Ela faz um acesso ao Banco. E, dependendo da situação, ela traz alguns registros.
Mas quando eu acesso a mesma pagina varias vezes, ela começa a repetir os registros. Mesmo depois de eu ter mudado o registro no BANCO DE DADOS! Se eu nao altero o registro no SGBD ele começa a duplicar, triplicar…cada acesso que eu faço na pagina ele coloca mais um registro…e eu ja coloquei um monte de linhas para nao guardar cache. Alguém tem alguma luz???
Segue o trecho do meu codigo

<html>
<head>
	<title>Aniversariantes do Dia</title>
<%@page import="java.util.*"%>
<%@page import="java.sql.*"%>
<%@page import="java.text.*"%>
<META HTTP-EQUIV="Pragma" CONTENT="no-cache">
<META HTTP-EQUIV="Expires" CONTENT="-1">
<META HTTP-EQUIV="REFRESH" CONTENT="5">


<%
       response.setDateHeader("Expires", -1);
       response.setHeader("Cache-Control","no-cache"); //HTTP 1.1
       response.setHeader("Pragma", "no-cache");
       if (request.getProtocol().equals("HTTP/1.1"))
       {
        response.setHeader("Cache-Control", "no-store");
       }
       else
       {
         response.setHeader("Cache-Control","no-store"); //HTTP 1.1

       }
%>

</head>

Desde já eu agradeço

[]´s

3 Respostas

G

“teteorp”:
Oi Pessoal, td bem??
Estou com um probleminha na minha pagina JSP.
Ela faz um acesso ao Banco. E, dependendo da situação, ela traz alguns registros.
Mas quando eu acesso a mesma pagina varias vezes, ela começa a repetir os registros. Mesmo depois de eu ter mudado o registro no BANCO DE DADOS! Se eu nao altero o registro no SGBD ele começa a duplicar, triplicar…cada acesso que eu faço na pagina ele coloca mais um registro…e eu ja coloquei um monte de linhas para nao guardar cache. Alguém tem alguma luz???
Segue o trecho do meu codigo

<html>
<head>
	<title>Aniversariantes do Dia</title>
<%@page import="java.util.*"%>
<%@page import="java.sql.*"%>
<%@page import="java.text.*"%>
<META HTTP-EQUIV="Pragma" CONTENT="no-cache">
<META HTTP-EQUIV="Expires" CONTENT="-1">
<META HTTP-EQUIV="REFRESH" CONTENT="5">


<%
       response.setDateHeader("Expires", -1);
       response.setHeader("Cache-Control","no-cache"); //HTTP 1.1
       response.setHeader("Pragma", "no-cache");
       if (request.getProtocol().equals("HTTP/1.1"))
       {
        response.setHeader("Cache-Control", "no-store");
       }
       else
       {
         response.setHeader("Cache-Control","no-store"); //HTTP 1.1

       }
%>

</head>

Desde já eu agradeço

[]´s

Ok, posta o código que você lista os dados do DB pra galera dá uma olhada!

:wink:

T

Segue o Codigo:

...
...
<%! private ArrayList relacao = new ArrayList(); %>

<%

        Connection con = null;
        Statement stmt = null;

        try
	    {
         	Calendar hoje = Calendar.getInstance();
         	String filtro = "";
         	if (hoje.get(hoje.DAY_OF_WEEK) != 2 )
         	{
             filtro = "WHERE C03 = TO_CHAR(SYSDATE,'DD/MM') ";
         	}
            else
            {
             filtro = "WHERE C03 IN (TO_CHAR(SYSDATE,'DD/MM'),TO_CHAR((SYSDATE-1),'DD/MM'),TO_CHAR((SYSDATE-2),'DD/MM')) ";
    		}
            Class.forName ("oracle.jdbc.driver.OracleDriver");
    		String url = "jdbc:oracle:thin:@192.168.1.150:1521:PRD";
    		con = DriverManager.getConnection(url, "USR", "PSW" );
    	    stmt = con.createStatement();
    	    String query = " SELECT C01,";
    	   	       query = query + " C02, ";
    	   		   query = query + " C03";
    			   query = query + " FROM TABLE_C ";
    			   query = query + filtro ;
    			   query = query + " ORDER BY C03, C01";

             System.out.println(query);

    	     ResultSet rs = stmt.executeQuery(query);
             while (rs.next())
             {  ArrayList item = new ArrayList(1);
                item.add(rs.getString(1));
                item.add(rs.getString(2));
                item.add(rs.getString(3));
                relacao.add(item);
                item = null;
             }
             con.close();
             con = null;
             stmt.close();
             stmt = null;
        }

       catch(Exception e)
       {
           con.close();
           con = null;
           stmt.close();
           stmt = null;
           System.out.println("Problemas - Verificar");
           e.printStackTrace();
           return;
       }

%>


         <table width="100%" cellpadding="8" >

<%
          int i=1;
          int tam = relacao.size();
          String figura1,figura2,figura3,figura4;
          for (i=0; i<tam; ++i)
          {   if (i%2!=0)
      		  {
      		    figura1 = "anniv-24.gif";
      		    figura2 = "anniv-28.gif";
      		    figura3 = "ballons-20.gif";
      		    figura4 = "cotillons-03.gif";
      		  }
          	  else
      	      {
      	        figura1 = "cotillons-03.gif";
      		    figura2 = "ballons-20.gif";
      		    figura3 = "anniv-28.gif";
      		    figura4 = "anniv-24.gif";
      	      }

%>
            <tr>
				<td width="10%" rowspan = "3"><img src="Fotos/<%= (String) (((ArrayList) (relacao.get(i))).get(1)) %>" border="0" align="left" width="150" height="200">
				</td>
				<td> <img src="Fotos/<%=figura1%>" border="0" align="center"> </td>
				<td> <img src="Fotos/<%=figura2%>" border="0" align="center"> </td>
		    </tr>

            <tr>
          		<td width="10%" COLSPAN=2 >
   				   <font size="4">
   				   <b>
   				      <%= (String) (((ArrayList) (relacao.get(i))).get(0)) %>, faz aniversário no dia <%= (String) (((ArrayList) (relacao.get(i))).get(2)) %>
   				   </b>
   				   </font>
          		</td>
			</tr>

           <tr>
        		<td width="50%"> <img src="Fotos/<%=figura3%>" border="0" align="center"> </td>
           		<td width="50%"> <img src="Fotos/<%=figura4%>" border="0" align="center"> </td>
	       </tr>

<%
          }
          //relacao = null;

%>


        </table>


</body>


</html>

O engraçado é quando eu coloquei a linha relacao = null;
Quando eu coloquei esta linha, a pagina aparentemente funcionou. Mas depois de 3 acessos seguidos deu exceção de NullPointer. Quando eu comento começa o lance de duplicação…

Valeu

[]´s

T

Ae galera.
Já resolvi meu problema. :cool:

O problema era a seguinte linha:

<%! private ArrayList relacao = new ArrayList(); %>

Valeu pela atenção :okok:

Criado 19 de julho de 2005
Ultima resposta 20 de jul. de 2005
Respostas 3
Participantes 2