Merhaba bu Yazıda Ajax ve JSP ile DB’den bilgi alıp sayfa yenilemeden DB’deki değişikliği ekrana yansıtacağız.

Sistem Çalışma Mantığımız Şöyle olacak

  • index.jsp (bu sayfa’da bulunan ajax ve JS kodları aracılığı ile DB’den gelen bilgiyi anlık ekrana yansıtacağız)
  • bilgi.jsp ( bu sayfa aracılığı ile ise parametreler ile DB’ye bağlanıp Ajax’a bilgi aktaracağız)
index.jsp Kodları;
<head>
<script type="text/javascript">
function loadXMLDoc() {
var xmlhttp=new XMLHttpRequest();
xmlhttp.onreadystatechange=function()
  {     document.getElementById("myDiv").innerHTML=xmlhttp.responseText; }
xmlhttp.open("GET","http://localhost:8084/middia/bilgi.jsp",true);
xmlhttp.send();
setTimeout ( "loadXMLDoc()", 4000 );
}</script> </head> <body onLoad="loadXMLDoc()"><div id="myDiv">Sepetiniz Okunuyor</div></body>

Açıklama: head tag’leri içine koyduğumuz script tag’larina Ajax’I tanımladık ve ilgili bilgi.jsp adresinden alınan bilgiyi div1’e kaydet dedik (div1 ve ajax çalışması hakkında diğer makalem için Tıklayın) ve en altında setTimeout ile loadXMLDoc() isimli scripti her 4000milisaniye yani 4 saniyede bir çağır dedik, aslında kendini çağırdı böylece recursive bir metod olmuş oldu. her 4 sn’de bir bilgi.jsp’ye gidip kontrol ediyor ve DB’nin son halini getiriyor, isterseniz 2 sn 1 sn de yapabilrisiniz.

bilgi.jsp Kodları;

   <body>
<%
try{
Connection conn = null;
Statement st = null;
ResultSet rs = null;
Class.forName("com.mysql.jdbc.Driver").newInstance();
String dbUrl = "jdbc:mysql://localhost/test";
conn = DriverManager.getConnection(dbUrl, "root", "ahmet");
st = conn.createStatement();
rs = st.executeQuery("Select * FROM iddia");
while(rs.next()) {
%>
<%=rs.getString("text")%> <br>
<%}
if (rs != null) rs.close();
if (st != null) st.close();
if (conn != null) conn.close();
}catch(Exception e ){
e.printStackTrace();
}
%>
    </body>
Açıklama: Body’ler arasında DB ile bağlantı kurup getString ile DB’den bilgi aldık, bu kodun ayrıntılı anlatımı için Tıklayın
Test: Mozilla Firefox – Opera -Chrome ile testlerde başarılı Olmuştur
Sorunlar – Çekinceler
  1. ie bilgi.jsp’yi kendi cache-önbelleğine aldığı için oradan çağırıyor ve sistem hatalı oluyor
  2. Her bilgi güncelleme sırasında çok kısa bilgi gidip geliyor gibi görünüyor
Reklamlar