Archive for the ‘ JSF JSP JavaScript Ajax jQuery CSS ’ Category

JSF Managed Bean ile Ajax() kullanmasına örnek vermeye çalıştım. İnput alanına bir deger girip button tıklandığında ajax ile diğer sayfayı çağırıyor ve o sayfada ekrana yazıyor. Bu şöyle oluyor. Button tıklandığında girilen deger KulBean’e kayedilir ve ajax ile çağrılan sayfada KulBean’den kayedilen değer alınıp ekrana yazılır.
JSF Hibernate örneğine bakmak için tıklayın.
JSF’de Managed Bean, sayfalar arasında veri taşımayı(cacheliyor yani) sağlar. Bu örnekte asıl amaç JSF 2.0 ile gelen bir-iki kolaylığı göstermektir. JSF1.x ile Managed Bean tanımlamak için JSF Faces Configuration(faces-config.xml) içine mutlaka aşağıdaki gibi bir tanımlama yapman gerekiyordu.
1.
faces-config.xml

<managed-bean>
    <managed-bean-name>kulBean</managed-bean-name>
    <managed-bean-class>com.ethemsulan.KulBean</managed-bean-class>
    <managed-bean-scope>request</managed-bean-scope>
</managed-bean>

JSF 2.0 da bunu yazmak zorunda değilsin. Beanimizin başına aşağıdaki gibi bir annotation ile managed bean olduğunu belirtmiş oluyoruz.

@ManagedBean
@RequestScoped

2.
index.xhtml sayfasından KulSayfasi.xhtml sayfasına navigasyon için(mesela girilen degeri diğer sayfaya aktarmak bean ile) faces-config.xml içine aşağıdaki kodu yazmak gerekiyordu.
faces-config.xml

<navigation-rule>
    <from-view-id>index.xhtml</from-view-id>
    <navigation-case>
        <from-outcome>KulSayfasi</from-outcome>
        <to-view-id>/KulSayfasi.xhtml</to-view-id>
    </navigation-case>
</navigation-rule>

Ama JSF 2.0 ile aşağıdaki gibi sayafa ismi ile navigasyonu gerçekleştirebiliriz. Button tıklandığında action=’hangiSayfaIsmi’ yazilmişsa o sayfaya gider.

<h:commandButton action="KulSayfasi" value="Gonder"/>

index.xhtml

<?xml version='1.0' encoding='UTF-8' ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
      xmlns:h="http://java.sun.com/jsf/html"
      xmlns:f="http://java.sun.com/jsf/core">
    <h:head>
        <title>Facelet Title</title>
    </h:head>
    <h:body>
        <h:form>
            <h:inputText id="p" value="#{kulBean.property}"/>
            <h:commandButton action="KulSayfasi" value="Gonder">
                <f:ajax execute="p"/>
            </h:commandButton>
        </h:form>
    </h:body>
</html>

KulSayfasi.xhtml

<?xml version='1.0' encoding='UTF-8' ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
      xmlns:h="http://java.sun.com/jsf/html">
    <h:head>
        <title>Facelet Title</title>
    </h:head>
    <h:body>
        Ajax ile gonderilen deger:<h:outputText value="#{kulBean.property}"/>
    </h:body>
</html>

KulBean.java – JSF Managed Bean

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package com.ethemsulan;

import java.io.Serializable;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.RequestScoped;

/**
 *
 * @author ubuntu
 */
@ManagedBean
@RequestScoped
public class KulBean implements Serializable{

    /** Creates a new instance of KulBean */
    public KulBean() {
    }
    public String property;

    public String getProperty() {
        return property;
    }

    public void setProperty(String property) {
        this.property = property;
    }

}

Bu örnek bu kadardı ama göstermek içinde faces-config.xml dosyasında nasıl tanımlandığına bakabilirsiniz. Bu .xml dosyasının arayüzü de var ve oradan da düzenleyebilirsiniz. Zaten New->Other->JavaServerFaces den JSF Managed Bean seçildiğinde @ManagedBean’i ekliyor. Normal java classını managed bean yapmak için ise sınıfın başına
import javax.faces.bean.*; ile ekleyin ve @ yazıp ctr +space basınca bir sürü annotation çıkıyor
faces-config.xml

<?xml version='1.0' encoding='UTF-8'?>

<!-- =========== FULL CONFIGURATION FILE ================================== -->

<faces-config version="2.0"
    xmlns="http://java.sun.com/xml/ns/javaee" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-facesconfig_2_0.xsd">

<managed-bean>
    <managed-bean-name>kulBean</managed-bean-name>
    <managed-bean-class>com.ethemsulan.KulBean</managed-bean-class>
    <managed-bean-scope>request</managed-bean-scope>
</managed-bean>
<navigation-rule>
    <from-view-id>index.xhtml</from-view-id>
    <navigation-case>
        <from-outcome>KulSayfasi</from-outcome>
        <to-view-id>/KulSayfasi.xhtml</to-view-id>
    </navigation-case>
</navigation-rule>
</faces-config>

faces-config.xml eklenmesinin resmi

Java Persistence API(JPA) ve Hibernate JSP Ajax ile veritabanında kayit ekleme, silme, listeleme işlemlerini yapmaya çalıştım. Bu örnekte sadece hibernate kullandım. JPA, Hibernate, ECB için güzel makaleyi okumanızı tavsiye ederim.
1. Ilk olaral bir Java Web Uygulamasını oluşturun.
2.Oluşturduğunuz uygulamayı sağ tıklayıp New –> Other –>Persistence –>Persistence Unit seçin ve Next buttonu tıklayın. Resimde 1,2,3 gibi yani oluşturma sırasını belirttim.

persistence


3. Persistance Library(Mesela Hibernate) kısmında kullanmak istediğinizi seçin. Hemen altında Database Connection(Hibernate için kullandığınız connection) seçin ve Finish buttonu tıklayın. Bu persistance.xml dosyasını oluşturuyor. İçine bakarsanız Hibernate’in veritabanı ile ilgili bağlanma bilgileri var. Eclipse’de bu META-INF klasörü altında oluşturulur.

persistence.xml


4.Yine uygulamanızı sağ tıklayıp New –> Other –> Persistence –> Entitiy Class From Dtabase seçip Next buttonu tıklayın. Bu adımda Entity Class’ı da seçebilirsiniz ama veritabanı içinde zaten var olan tablolarını çekip mapping yapmak bana daha kolay geliyor. Kendisi de database içinde tablo oluşturup mapping yapabilir.
Next buttonu tıklanınca aşağıdaki resimde görüldüğü gibi Database Connection hibernate için olanı seçince Available Tables kısmına var olan tablolarınız geliyor. Seçmek istediğinizi tıklayıp Add ile Selected Table alanına alıp Next buttonu tıklayın. Sonra bir Package alnına bir paket ismini yazıp Finish buttonu tıklayın. Örnekte kisi tablosu seçilmiş.

selected table


package


5.Persistence.xml Design dan Include All Entity Class… yazılan yerdeki kutucuğu tıklayıp ticki kaldırınca Add Class buttonu aktif oluyor. Buttonu tıklayıp eklemek istediğiniz entityi ekleyin. Örnekte ethem paketi altındaki Kisi.java sınıfını ekledim.

enetity


6.En önemli yere geldik. New –> Other –> Persistence –> JPA Controller Class From Entity Classes seçip Next buttonu tıklayıp Entity Classes kısmında Kisi.java sınıfını selected entity alanına alıp tekrar Next buttonu ile bir bir paket ismi verin veya var olan paketi seçin.
Dikkat edin verdiğiniz paketIsmi.exceptions altındaki sınıfları ve Verdiğiniz sınıfIsmi(örnekteki Kisi) KisiJpaController.java isminde bir sınıf oluşturuyor. Işte bu sınıf database ile ilgili crud(creat, read,update,delete) işlemlerini kendisi gerçekleştiriyor. Sadece metodlarını çağırmak kalıyor bize.

enetity from class


selected entitiy class



7.Index.jsp içinde ajax ile dropdown listede seçilen değere göre Islem.jsp de belirli işlemler yapıyor.
Aşağıda uygulamanın genel görünümü ve jpa ve hibernate ekli kütüphanelerin resimleri var.

Persistence.xml
5.adımda ethem.Kisi xml ekliyor.

<?xml version="1.0" encoding="UTF-8"?>
<persistence version="1.0" xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd">
  <persistence-unit name="AjaxJpaListPU" transaction-type="RESOURCE_LOCAL">
    <provider>org.hibernate.ejb.HibernatePersistence</provider>
    <class>ethem.Kisi</class>
    <exclude-unlisted-classes>true</exclude-unlisted-classes>
    <properties>
      <property name="hibernate.connection.username" value="root"/>
      <property name="hibernate.connection.driver_class" value="com.mysql.jdbc.Driver"/>
      <property name="hibernate.connection.password" value="123"/>
      <property name="hibernate.connection.url" value="jdbc:mysql://localhost:3306/ethemsulan"/>
      <property name="hibernate.cache.provider_class" value="org.hibernate.cache.NoCacheProvider"/>
      <property name="hibernate.hbm2ddl.auto" value="update"/>
    </properties>
  </persistence-unit>
</persistence>

Kisi.java
4.adımda oluşturulan entity

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package ethem;

import java.io.Serializable;
import javax.persistence.Basic;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.NamedQueries;
import javax.persistence.NamedQuery;
import javax.persistence.Table;

/**
 *
 * @author ubuntu
 */
@Entity
@Table(name = "kisi")
@NamedQueries({
    @NamedQuery(name = "Kisi.findAll", query = "SELECT k FROM Kisi k"),
    @NamedQuery(name = "Kisi.findById", query = "SELECT k FROM Kisi k WHERE k.id = :id"),
    @NamedQuery(name = "Kisi.findByAd", query = "SELECT k FROM Kisi k WHERE k.ad = :ad"),
    @NamedQuery(name = "Kisi.findBySoyad", query = "SELECT k FROM Kisi k WHERE k.soyad = :soyad"),
    @NamedQuery(name = "Kisi.findByYas", query = "SELECT k FROM Kisi k WHERE k.yas = :yas")})
public class Kisi implements Serializable {
    private static final long serialVersionUID = 1L;
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Basic(optional = false)
    @Column(name = "id")
    private Integer id;
    @Column(name = "ad")
    private String ad;
    @Column(name = "soyad")
    private String soyad;
    @Column(name = "yas")
    private Integer yas;

    public Kisi() {
    }
//Bunu ben sağ tıklayıp insert code-->constructor ile yapiciyi ekledim.
//Diger hersey otomatik uretildi.
    public Kisi(String ad, String soyad, Integer yas) {
        this.ad = ad;
        this.soyad = soyad;
        this.yas = yas;
    }

    public Kisi(Integer id) {
        this.id = id;
    }

    public Integer getId() {
        return id;
    }

    public void setId(Integer id) {
        this.id = id;
    }

    public String getAd() {
        return ad;
    }

    public void setAd(String ad) {
        this.ad = ad;
    }

    public String getSoyad() {
        return soyad;
    }

    public void setSoyad(String soyad) {
        this.soyad = soyad;
    }

    public Integer getYas() {
        return yas;
    }

    public void setYas(Integer yas) {
        this.yas = yas;
    }

    @Override
    public int hashCode() {
        int hash = 0;
        hash += (id != null ? id.hashCode() : 0);
        return hash;
    }

    @Override
    public boolean equals(Object object) {
        // TODO: Warning - this method won't work in the case the id fields are not set
        if (!(object instanceof Kisi)) {
            return false;
        }
        Kisi other = (Kisi) object;
        if ((this.id == null && other.id != null) || (this.id != null && !this.id.equals(other.id))) {
            return false;
        }
        return true;
    }

    @Override
    public String toString() {
        return "ethem.Kisi[id=" + id + "]";
    }

}

KisiJpaController.java

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package ethem;

import ethem.exceptions.NonexistentEntityException;
import java.util.List;
import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import javax.persistence.Persistence;
import javax.persistence.Query;
import javax.persistence.EntityNotFoundException;

/**
 *
 * @author ubuntu
 */
public class KisiJpaController {

    public KisiJpaController() {
        emf = Persistence.createEntityManagerFactory("AjaxJpaListPU");
    }
    private EntityManagerFactory emf = null;

    public EntityManager getEntityManager() {
        return emf.createEntityManager();
    }

    public void create(Kisi kisi) {
        EntityManager em = null;
        try {
            em = getEntityManager();
            em.getTransaction().begin();
//hibernate save(obje) ile data kayit eder. JPA ise persist(obje). persistance.xml dosyasinda
//bakin. Hibernate kullaniyor.
            em.persist(kisi);
            em.getTransaction().commit();
        } finally {
            if (em != null) {
                em.close();
            }
        }
    }

    public void edit(Kisi kisi) throws NonexistentEntityException, Exception {
        EntityManager em = null;
        try {
            em = getEntityManager();
            em.getTransaction().begin();
            kisi = em.merge(kisi);
            em.getTransaction().commit();
        } catch (Exception ex) {
            String msg = ex.getLocalizedMessage();
            if (msg == null || msg.length() == 0) {
                Integer id = kisi.getId();
                if (findKisi(id) == null) {
                    throw new NonexistentEntityException("The kisi with id " + id + " no longer exists.");
                }
            }
            throw ex;
        } finally {
            if (em != null) {
                em.close();
            }
        }
    }

    public void destroy(Integer id) throws NonexistentEntityException {
        EntityManager em = null;
        try {
            em = getEntityManager();
            em.getTransaction().begin();
            Kisi kisi;
            try {
                kisi = em.getReference(Kisi.class, id);
                kisi.getId();
            } catch (EntityNotFoundException enfe) {
                throw new NonexistentEntityException("The kisi with id " + id + " no longer exists.", enfe);
            }
            em.remove(kisi);
            em.getTransaction().commit();
        } finally {
            if (em != null) {
                em.close();
            }
        }
    }

    public List<Kisi> findKisiEntities() {
        return findKisiEntities(true, -1, -1);
    }

    public List<Kisi> findKisiEntities(int maxResults, int firstResult) {
        return findKisiEntities(false, maxResults, firstResult);
    }

    private List<Kisi> findKisiEntities(boolean all, int maxResults, int firstResult) {
        EntityManager em = getEntityManager();
        try {
            Query q = em.createQuery("select object(o) from Kisi as o");
            if (!all) {
                q.setMaxResults(maxResults);
                q.setFirstResult(firstResult);
            }
            return q.getResultList();
        } finally {
            em.close();
        }
    }

    public Kisi findKisi(Integer id) {
        EntityManager em = getEntityManager();
        try {
            return em.find(Kisi.class, id);
        } finally {
            em.close();
        }
    }

    public int getKisiCount() {
        EntityManager em = getEntityManager();
        try {
            Query q = em.createQuery("select count(o) from Kisi as o");
            return ((Long) q.getSingleResult()).intValue();
        } finally {
            em.close();
        }
    }

}

ethem.exceptions paketindekileri eklemiyorum. Pek bir şey yok o sınıflarda
index.jsp

<%-- 
    Document   : index
    Created on : Jan 29, 2011, 5:04:15 PM
    Author     : ubuntu
--%>

<%@page contentType="text/html" pageEncoding="UTF-8"%>
<html>
<head>
<script type="text/javascript">
function showUser(str)
{
if (str=="")
  {
  document.getElementById("txtHint").innerHTML="";
  return;
  }
if (window.XMLHttpRequest)
  {
  xmlhttp=new XMLHttpRequest();
  }
else
  {
  xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
  }
xmlhttp.onreadystatechange=function()
  {
  if (xmlhttp.readyState==4 && xmlhttp.status==200)
    {
    document.getElementById("txtHint").innerHTML=xmlhttp.responseText;
    }
  }
xmlhttp.open("GET","Islem.jsp?secilen="+str,true);
xmlhttp.send();
}
</script>
</head>
<body>
<form>
<select name="users" onchange="showUser(this.value)">
<option value="">Bir islem seç:</option>
<option value="1">Bir kisi ekle</option>
<option value="2">Id si 2 olan kisi bilgilerini sil</option>
<option value="3">Tum Kayitlari Listele</option>
<option value="4">Records count</option>
</select>
</form>
<br />
<div id="txtHint"><b>Person info will be listed here.</b></div>

</body>
</html>

Islem.jsp

<%-- 
    Document   : Islem
    Created on : Jan 29, 2011, 5:35:42 PM
    Author     : ubuntu
--%>

<%@page contentType="text/html" pageEncoding="UTF-8"%>
<%@page import="ethem.Kisi,ethem.KisiJpaController,java.util.List, java.util.ArrayList" %>

<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title>JSP Page</title>
    </head>
    <body>
        <%!            String hangiIslem;
            Kisi kisi;
            KisiJpaController kisi_control;
            List<Kisi> list;
        %>
        <%
                    list = new ArrayList<Kisi>();
                    hangiIslem = request.getParameter("secilen");
                    kisi_control = new KisiJpaController();

        %>
        <%
                    if (hangiIslem.equals("1")) {
                        kisi = new Kisi("Isil", "CANAKKALE", 25);
                        kisi_control.create(kisi);
                        out.println("Bir kisi veritabanina eklendi");
                    } else if (hangiIslem.equals("2")) {
                        kisi_control.destroy(2);
                        out.println("id=2 olan kayit silindi");
                    } else if (hangiIslem.equals("3")) {
//findKisiEntities(maxResults, firstResult) --> kac kayit olsun, hangi kayittan baslasin
                        list = kisi_control.findKisiEntities(kisi_control.getKisiCount(), 0);
                        out.println("<table border='1'><tr><th>ID</th><th>Ad</th><th>Soyad</th><th>Yas</th></tr>");
                        for (Kisi i : list) {
                            out.println("<tr><td>" + i.getId() + "</td><td>" + i.getAd() + "</td><td>" + i.getSoyad() + "</td><td>" + i.getYas() + "</td></tr>");
                        }
                        out.println("</table>");
                    } else if (hangiIslem.equals("4")) {
                        out.println("Toplam kayit sayisi: " + kisi_control.getKisiCount());
                    } else {
                        out.println("Herhangi bir ıslem secilmedi");
                        return;
                    }

        %>
    </body>
</html>

Crontab ile networku taradım(10 dk da bir mesela) ve sonuclari crontab.xml dosyasına kaydettim. Java ile bu xml dosyasını parse ettim. JSP AJax ile ekranda gösterdim. Belli zamanda crontab XML_Par_Read.java classini calistirip veritabanina kaydediyor.
Bu uygulamayı indirmek için tıklayın.
Hostlara ait mac, ip adresleri, işletim sistemi ve closed olmayan portlarını parse ettim ve veritabanina kaydettim.
Crontab arkaplanda belli zaman dilimlerinde çalışmak istediğiniz işlermleri tanımlamaya yarar. Yani işletim sistemine komut göndererek birçok işlem tanımlayabilirsiniz.
Ubuntu da gedit ile açtım. crontab -e komutu ile çalıştırabilirisniz.

root@ethem:/home/ubuntu# EDITOR=gedit crontab -e

Crontab içine nmap komutunu çalıştırdım: nmap -sS -A 192.168.2.0/24 -oX
Nmap sisteminiz de yoksa apt-get install nmap ile install edebilirisniz. gedit ile açtığım dosyaya aşağıdaki komutu ekledim.

*/10 * * * * nmap -sS -A 192.168.2.0/24 -oX /home/ubuntu/crontab.xml

XML_Par_Read.java classini derlemek için aşağıdaki kodu yaziyoruz crontab içine

48 20 * * * javac -classpath "/usr/lib/jdk1.6.0_23/bin" /home/ubuntu/NetBeansProjects/Netwok/src/java/ethem/XML_Par_Read.java

XML_Par_Read.java classini çalıştırmak için de aşağıdaki komutu crontab içine yazıyoruz. Bu sınıf crontab.xml dosyasını parse ediyor ve belirlenen zamanda otomatik olarak crontab tarafından çalışarak veritabanına kaydediyor. MySQL veritabanı ile ilgili işlemler gerçekleştiğinden mysql jdbc connector.jar dosyasının yolunu da belirtmemiz lazım.
: noktadan sonra da hangi classın çalıştıracağını tek komutta(.jar dosyasının yolunu belirtme ayrı bir işlem ve XML_Par_Read sınıfını çalıştırmak ayrı bir işlemdir. Onun için : ile ayırıyoruz) belirtiyoruz. ethem paketinin altında olduğundan ethem.XML.Par_Read diye belirtmemiz gerekiyor.

14 17 * * * java -classpath /usr/local/netbeans-6.8/ide12/modules/ext/mysql-connector-java-5.1.6-bin.jar:/home/ubuntu/NetBeansProjects/Netwok/src/java ethem.XML_Par_Read

Bu crontab.xml dosyasını org.w3c.dom ve javax.xml.parsers Java paketlerini kullanarak parse ettim.
Consola nmap -sS -A 192.168.2.0/24 -oX /home/ubuntu/crontab.xml yazip ağınızı tarayıp xml e kaydedebilirsiniz.
Kodu test etmek için xml dosyasını oluşturabilirisniz.
root@ethem:/home/ubuntu# nmap -sS -A 192.168.2.0/24 -oX /home/ubuntu/crontab.xml
İndex.jsp sayfasi


index.jsp

<%-- 
    Document   : index
    Created on : Dec 28, 2010, 3:53:15 PM
    Author     : ubuntu
--%>

<%@page contentType="text/html" pageEncoding="UTF-8"%>
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title>JSP Page</title>

        <script type="text/javascript" language="javascript" src="jquery-1.4.4.js"></script>
        <script type="text/javascript" language="javascript">
            $(function(){
                $('#butId').click(function(){
                   
                    $.get("Listele.jsp", $('#form1').serialize(), function(sonuc){
                        $('#divId').html("Yükleniyor..");
                        $('#divId').html(sonuc);
                    })

                });

                $('a.host_id').live('click', function(){
                    $.get(this.href, {}, function(sonuc){
                        $('#portSonuclari').hide().html(sonuc).fadeIn(500);
                    })
                    return false;
                });
            });
        </script>
    </head>
    <body>


        <p>Aga dahil olan hostlarin zamanini tespit ediyor</p>
        <form id="form1">
            <table>
                <tr>
                    <td>
                        <select name="zaman">
                            <option value="birSaat"> Son bir saatte dahil olanlar</option>
                            <option value="yediSaat">Son yedi saatte dahil olanlar</option>
                            <option value="birGun">Son bir Gunde dahil olanlar</option>
                            <option value="onGun">Son on gunde dahil olanlar</option>
                            <option value="birAy">Son bir ayda dahil olanlar</option>
                            <option value="besAy">Son bes ayda dahil olanlar</option>
                            <option value="birYil">Son bir yil aga dahil olanlar</option>
                            <option value="hepsi">Aga dahil olan butun hostlar</option>
                        </select>
                    </td>
            </table>
        </form>
        <div id="divId"></div>
        <p><button id="butId">Listele</button></p>
    </body>
</html>

Listele.jsp

<%-- 
    Document   : Listele
    Created on : Dec 28, 2010, 4:04:08 PM
    Author     : ubuntu
--%>

<%@page import="java.sql.ResultSet"%>
<%@page import="java.util.ArrayList"%>
<%@page import="ethemsulan.com.Islemler" %>
<%@page contentType="text/html" pageEncoding="UTF-8"%>


<%!    String tarih;
    ArrayList<Integer> listemiz;
    ResultSet rs;
%>
<%-- index.jsp de secilen sureye ait kayitlari listeliyor.
Mesela bir ay once aga dahil olan pc lerin bilgilerini listeler--%>
<%
            listemiz = new ArrayList<Integer>();

            tarih = request.getParameter("zaman");
            listemiz = Islemler.sonuc(tarih);
%>

<table border="1" id="tablo">
    <thead align="center">
        <tr>
            <th>ID</th>
            <th>Mac Adresi</th>
            <th>Ip Adresi</th>
            <th>Operating System</th>
            <th>Time</th>
        </tr>
    </thead>
    
    <%
                for (Integer id : listemiz) {
                    rs = Islemler.listele(id);
                    while (rs.next()) {

    %>
    <tbody>
        
        <tr>
        <td>
                <%--Icon tiklandiignda bu ideye ait acik portlarini listeliyorum ?id=<%=rs.getInt("id")   --%>
                <a href='AcikPort.jsp?id=<%=rs.getInt("id")%>' class="host_id"><img src="port.png" border="0" /></a>
            </td>
            <td><%=rs.getString("mac")%></td>
            <td><%=rs.getString("ip_no")%></td>
            <td><%=rs.getString("os")%> </td>
            <td><%=rs.getString("host_zaman")%></td>
        </tr>
        
    </tbody>
    <%

                    }
                }
    %>
</table>
<div id="portSonuclari"></div>

AcikPort.jsp

<%@page import="java.sql.ResultSet"%>
<%@page import="ethemsulan.com.Islemler" %>
<%@page contentType="text/html" pageEncoding="UTF-8"%>
<!doctype html>


<%!
    Integer gelenId;
    ResultSet sonuc;
    String k = null;
%>
<%-- Listele.jsp deki icon tiklandiginda gelen id primary keyine ait portlari listeliyor--%>
<%
            gelenId = Integer.parseInt(request.getParameter("id"));
            sonuc = Islemler.portListele(gelenId);
%>
<%
out.println("Closed olmayan portlar");
            while (sonuc.next()) {
%>
<table>
    <tr>
        <td>PortNo --></td>
        <td><%=sonuc.getInt("port_no")%></td>
    </tr>
    <%
                }
    %>
</table>

XML_Par_Read.java

package ethem;

import java.io.File;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;

import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;

public class XML_Par_Read {
       static Connection baglanti = null;
    static PreparedStatement statement;
    static ResultSet sonuc;
    static int id;


        public static Connection getMySQLConnection() throws Exception {
        String driver = "com.mysql.jdbc.Driver";
        String url = "jdbc:mysql://localhost/network";
        String username = "root";
        String password = "123";
        Class.forName(driver);
        return DriverManager.getConnection(url, username, password);
    }

    public static boolean storeXMLData(ArrayList<String> listemiz) {


        try {
            baglanti = getMySQLConnection();
            statement = baglanti.prepareStatement("select mac from hostlar where mac='" + listemiz.get(1) + "'");
            sonuc = statement.executeQuery();
            if (sonuc.next() == false) {
                statement.executeUpdate("insert into hostlar(os,mac,host_zaman) values('" + listemiz.get(0) + "', '" + listemiz.get(1) + "',now())");
             }

            statement = baglanti.prepareStatement("select id from hostlar where mac='" + listemiz.get(1) + "'");
            sonuc = statement.executeQuery();
            if (sonuc.next()) {
                id = sonuc.getInt("id");
                System.out.println("Id degerini test ediyoruz: " + id);
            }

            statement = baglanti.prepareStatement("select ip_no from ipler where ip_no='" + listemiz.get(2) + "'");
            sonuc = statement.executeQuery();
            if (sonuc.next() == false) {
                statement.executeUpdate("insert into ipler(ip_no,host_id,ip_zaman) values('" + listemiz.get(2) + "','" + id + "',now())");
            }

            statement = baglanti.prepareStatement("select port_no from portlar where host_id='" + id + "'");
            sonuc = statement.executeQuery();
            int port = 0;



            for (int i = 3; i < listemiz.size(); i++) {
                statement = baglanti.prepareStatement("select id from portlar where port_no='" + listemiz.get(i) + "' and host_id='" + id + "'");
                sonuc = statement.executeQuery();
                if (sonuc.next() == false) {
                    statement.executeUpdate("insert into portlar(port_no,host_id,port_zaman) values('" + listemiz.get(i) + "','" + id + "',now())");
                }

            }

        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            try {
                sonuc.close();
                statement.close();
                baglanti.close();
                return true;
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
        return false;

    }

    private static ArrayList<String> list;

    public static void XMLReaderBeg() {
        try {
//.xml dosyasinin bulundugu url
            File file = new File("/home/ubuntu/crontab.xml");
//xml parse etmek icin javax.xml ve org.w3c paketlerindeki obje ve metod tanimladim
//onemli olan xml etiketleri arasindaki degerleri agac yapisi seklinde dusunmemiz lazim.
//jdom ve dom4j gibi xml parser kutuphaneleri de var.
            DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
            DocumentBuilder db = dbf.newDocumentBuilder();
            Document doc = db.parse(file);
            doc.getDocumentElement().normalize();
//agacin root nodunu yazdiriyorum.Ornekte xml dosyasina bakarsaniz "nmaprun" oldugunu gorursunuz
            System.out.println("Root Element: " + doc.getDocumentElement().getNodeName());
//sonra host nodu ve bu hots etiketlerinin childlarini bir NodeList e atiyor
            NodeList nodeLst = doc.getElementsByTagName("host");
//crontab dosyasindaki komuta bakarsaniz 0/24 yani 256 tane host taranmis
            System.out.println("Host sayisi: " + nodeLst.getLength());
//Node listemizdeki itemlara erisiyoruz
            for (int s = 0; s < nodeLst.getLength(); s++) {

                Node fstNode = nodeLst.item(s);
                if (fstNode.getNodeType() == Node.ELEMENT_NODE) {
//Bu parse ettigimiz xml i belli sirada arraylistte depoluyoruz ve oradan veritabanina
                    list = new ArrayList<String>();
                    Element fstElmnt = (Element) fstNode;
//statusa ait childlari aliyoruz
                    NodeList fstNmElmntLst = fstElmnt.getElementsByTagName("status");
                    Element fstNmElmnt = (Element) fstNmElmntLst.item(0);
//state durumu up yani hosta ait pc varsa o pc lere ait operating system, ip, mac adresleri ve
//closed olmayan portlarini aliyoruz. Open ve filtered olanlari yani
                    if (fstNmElmnt.getAttribute("state").equals("up")) {
//os nodunun da childlarindan nameleri yani linux veya windows..
                        NodeList osList = fstElmnt.getElementsByTagName("os");
                        for (int temp = 0; temp < osList.getLength(); temp++) {

                            Node osNode = osList.item(0);
                            if (osNode.getNodeType() == Node.ELEMENT_NODE) {
//<os> <osmatch name="Linux 2.6.9 - 2.6.19" </os> name i aliyoruz
                                Element eElement = (Element) osNode;
                                NodeList osLis = eElement.getElementsByTagName("osmatch");
                                Element osName = (Element) osLis.item(temp);
                                list.add(0, osName.getAttribute("name"));


                            }
                        }
//<address addr="192.168.2.1" />
//<address addr="00:1C:A8:8D:08:17"/> mac adresi ve ip adreslerini aliyoruz
                        NodeList adress = fstElmnt.getElementsByTagName("address");
                        Element macAdresi = (Element) adress.item(1);
                        list.add(1, macAdresi.getAttribute("addr"));
                        Element ipAdresi = (Element) adress.item(0);
                        list.add(2, ipAdresi.getAttribute("addr"));


//Ports

                        NodeList ports = fstElmnt.getElementsByTagName("port");
                        for (int p = 0; p < ports.getLength(); p++) {

                            Node portsNode = nodeLst.item(p);
                            if (portsNode.getNodeType() == Node.ELEMENT_NODE) {
                                Element portNum = (Element) ports.item(p);
//portlarda durumu closed olmayanlari aldim
                                if (!portNum.getAttribute("state").equals("closed")) {
                                    list.add(portNum.getAttribute("portid"));
                                }
                            }
                        }
//Belli sirada arraylistte bulunan datalari veritabani tablolarina kaydediyor
                        storeXMLData(list);


                        System.out.println("---------------------------------");
                    }
                }

            }
        } catch (Exception e) {
            e.printStackTrace();
        }




    }

   public static void main(String args[])
   {
        XMLReaderBeg();
   }



}

Islemler.java

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package ethemsulan.com;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.ArrayList;
import ethem.XML_Par_Read;
import java.sql.SQLException;
import java.sql.Statement;

/**
 *
 * @author ubuntu
 */
public class Islemler {
           static Connection baglanti = null;
    static Statement statement;
    static ResultSet sonuc;
        private static ArrayList<Integer> ideler;

       public static ResultSet portListele(int id) {
        try {
            baglanti = XML_Par_Read.getMySQLConnection();
            statement = baglanti.createStatement();
            sonuc=statement.executeQuery("SELECT portlar.port_no FROM hostlar Inner Join portlar ON hostlar.id = portlar.host_id WHERE  portlar.host_id='" + id + "'");


        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            return sonuc;
        }
    }

           public static ResultSet listele(int id) {
        try {
            baglanti = XML_Par_Read.getMySQLConnection();
            statement = baglanti.createStatement();
            sonuc=statement.executeQuery("SELECT hostlar.id,hostlar.mac,hostlar.os,hostlar.host_zaman,ipler.ip_no FROM hostlar Inner Join ipler ON hostlar.id = ipler.host_id WHERE hostlar.id =  ipler.host_id AND hostlar.id =  '" + id + "'");
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            return sonuc;
        }

    }

       public static ArrayList<Integer> sonuc(String tarih) throws SQLException, Exception {
        ideler = new ArrayList<Integer>();

        try {
            baglanti =XML_Par_Read.getMySQLConnection();
            statement =  baglanti.createStatement();

            if (tarih.equals("birSaat")) {

                sonuc = statement.executeQuery("select id from hostlar where 1>(SELECT TIMESTAMPDIFF(hour,host_zaman,CURRENT_TIMESTAMP()))");
            } else if (tarih.equals("yediSaat")) {
                sonuc = statement.executeQuery("select id from hostlar where 7>(SELECT TIMESTAMPDIFF(hour,host_zaman,CURRENT_TIMESTAMP()))");
            } else if (tarih.equals("birGun")) {
                sonuc = statement.executeQuery("select id from hostlar where 1>(SELECT TIMESTAMPDIFF(day,host_zaman,CURRENT_TIMESTAMP()))");
            } else if (tarih.equals("onGun")) {
                sonuc = statement.executeQuery("select id from hostlar where 10>(SELECT TIMESTAMPDIFF(day,host_zaman,CURRENT_TIMESTAMP()))");

            } else if (tarih.equals("birAy")) {
                sonuc = statement.executeQuery("select id from hostlar where 1>(SELECT TIMESTAMPDIFF(month,host_zaman,CURRENT_TIMESTAMP()))");
            } else if (tarih.equals("besAy")) {
                sonuc = statement.executeQuery("select id from hostlar where 5>(SELECT TIMESTAMPDIFF(month,host_zaman,CURRENT_TIMESTAMP()))");
            } else if (tarih.equals("birYil")) {
                sonuc = statement.executeQuery("select id from hostlar where 1>(SELECT TIMESTAMPDIFF(year,host_zaman,CURRENT_TIMESTAMP()))");
            }else{
                sonuc = statement.executeQuery("select id from hostlar");
            }
//Search kriterlerin uygun olanin id esini listeye ekliyorum ve listeyi resturn ediyorum
            while (sonuc.next()) {
                ideler.add(sonuc.getInt("id"));
            }

        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            try {
                sonuc.close();
                statement.close();
                baglanti.close();
                return ideler;
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
        return null;

    }

}

Running and compiling a java class in the crontab Linux benzer örneğe bakabilirsiniz.

Bu uygulamada JSP ile Hibernate ve Ajax kullanmaya çalıştım. ORM dedikleri teknik işte bu hibernate frameworkunun sağladığı avantajlardır.
JSP ile Persist ORM/DAO örneğinde kısaca orm ve dao açıklanmış. Hibernate benzer bir kütüphane olan persist kullanmış.
Netbeans kurulumu tıklayarak resimdeki gibi 4 tane frameworklerden(bu framework sayıları siz de farklı olabilir) hibernateyi seçin. Hibernateyi seçince Database Connectiondan New Database Connectionu seçerek hangi veritabanıyla çalışmak istediğinizi seçin.Uygulamada ben mysql seçtim. Aşağıdaki Driver Name kısmından mysql seçtikten sonra mysql bağlanma bilgileri var. Eğer hibernate siz de yüklü değilse Tool–>Plugins–>Available Plugins–>Hibernate seçip yükleyin.

mysql connector

Driveri ekledikten sonra finish tıklayınca uygulamanızın source packages altında default packagenin altında hibernate.cfg.xml(Hibernate Configuration Wizard) dosyası otomatik eklenecek.

hibernate

Uygulamanızda bir paket oluşturun(örnekteki ethemsulan.com paketi) ve sağ tıklayarak new–>other–>hibernate Hibernate Reverse Engineering Wizardı seçerek yukarda bağlantı sağladığınız database tablolarından çalışmak istediğiniz tabloyu uygulamanıza aşağıdaki resimde görüldüğü gibi sağ tarafa add ile alarak uygulamanıza ekleyin.

hibernate.reveng.xml(ibernate Reverse Engineering Wizard) dosyasının bulunduğu paketi tıklayark Hibernate Mapping Files and POJOs from Database seçerek uygulamanıza eklediğiniz tabloya ait bir Kitap.hbm.xml dosyası ve Kitap.java sınıfını otomatik oluşturuyor.Yani tablonuza ait sınıf kodunu kendisi oluşturuyor.
Son olarak HibernateUtil.java tıklayarak oluşturun.Bu HibernateUtil veritabanına bir connection objesi yaratıyor.

hibernate ajax

KIsaca özetlersek
1.Web uygulada hibernate seçip bir database connector oluşturduktan sonra finish deyince Hibernate Configuration Wizard xml dosyasını oluşturuyor.
2.Bir paket oluşturup Hibernate Reverse Engineering Wizard seçerek hangi tablolarla çalışacaksak uygulamaya dahil ediyoruz(seçip add ile sağ tarafa alıyoruz)
3.Hibernate Mapping Files and POJOs from Database(ikinci adımda oluşturulan paketi sağ tıklayark bunu oluşturun) seçerek Ikinci adımda eklenen tabloları bir sınıfla eşleştirip ve bu sınıfın java kodunu üretiyoruz.
4.HibernateUtil.java seçin.Database ile ilgili işlemleri yapmamızı sağlar.

index.jsp

<%@page contentType="text/html" pageEncoding="UTF-8"%>
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title>JSP Page</title>
<!-- Ajax için jquery-1.4.2.min.js dosyasını ekledik.$.get("Islemler.jsp", $('#form1').serialize() ile formdaki
nesneleri Islemler.jsp sayfasından erişip veritabanına kaydettik.
$('#butId').click() verilen id ye sahip button tıklanınca gerçekleştirilecel işlemler () içine yazdık.
$ anlamı jQquery demektir.-->
        <script type="text/javascript" language="javascript" src="jquery-1.4.2.min.js"></script>
        <script type="text/javascript" language="javascript">
            $(function(){
                $('#butId').click(function(){
                    $.get("Islemler.jsp", $('#form1').serialize(), function(sonuc){
                        $('#divId').html(sonuc);
                        alert("Kayit Basariyla gerçekleşti");
                    })
                });
            });

        </script>
    </head>
    <body>
        <form id="form1">
            <table>
                <tr>
                    <td>ISBN</td>
                    <td><input type="text" name="isbn" value="" /></td>
                </tr>
                <tr>
                    <td>Ad</td>
                    <td><input name="ad" type="text" value="" /></td>
                </tr>
                <tr>
                    <td>Yazar</td>
                    <td><input name="yazar" type="text" value=""></td>
                </tr>
                <tr>
                    <td>Kategori</td>
                    <td><input id="kategori" name="kategori" type="text" value=""></td>
                </tr>
            </table>
        </form>
        <div id="divId"></div>
        <p><button id="butId">Ajax Kullanarak Kaydet</button></p>
    </body>
</html>

Islemler.jsp

<%@page contentType="text/html" pageEncoding="UTF-8"%>
<%@page import="ethemsulan.com.HibernateUtil, org.hibernate.Session" %>
<%@page import="org.hibernate.Transaction, ethemsulan.com.Kitap" %>
<%!
    Kitap kitapObj;
    String isbn, ad, yazar, kategori;
%>
<%--index.jsp içindeki  $('#form1').serialize() kodu ile formdaki alanalra isimleriyle bu sayfadan erişiyoruz.
alanlardaki name="alan ismi" yani name mutlaka olmalıdır serialize() için.
Aşağıda HibernateUtil ile session oluşturduk ve bir transaction başlattık save ile objemizi veritabanına kayit ettik.
--%>
<%
    isbn=request.getParameter("isbn");
    ad=request.getParameter("ad");
    yazar=request.getParameter("yazar");
    kategori=request.getParameter("kategori");
    kitapObj=new Kitap(isbn, ad, yazar, kategori);
    Session newSession=HibernateUtil.getSessionFactory().openSession();
    Transaction txT=newSession.beginTransaction();
    newSession.save(kitapObj);
    out.println("Kayit basariyla gerçekleşti");
    txT.commit();
    newSession.close();

%>

hibernate.cfg.xml(Hibernate Configuration Wizard) dosyamızda veritabanıyla(mysql) ilgili erişim ve kaynak bilgileri var

<hibernate-configuration>
  <session-factory>
    <property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>
    <property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
    <property name="hibernate.connection.url">jdbc:mysql://localhost:3306/ethemsulan</property>
    <property name="hibernate.connection.username">root</property>
    <property name="hibernate.connection.password">123</property>
    <mapping resource="ethemsulan/com/Kitap.hbm.xml"/>
  </session-factory>
</hibernate-configuration>


hibernate.reveng.xml
(Hibernate Reverse Engineering Wizard) dosyamızda hangi databasenin hangi tabloların olduğunu gösterilmiş.

<hibernate-reverse-engineering>
  <schema-selection match-catalog="ethemsulan"/>
  <table-filter match-name="kitap"/>
</hibernate-reverse-engineering>

kitap.hbm.xml(Hibernate Mapping Files and POJOs from Database ) sınıfın element ve attributlerini xml şeklinde oluşturmuş

<hibernate-mapping>
  <class catalog="ethemsulan" name="ethemsulan.com.Kitap" table="kitap">
    <id name="isbn" type="string">
      <column name="isbn"/>
      <generator class="assigned"/>
    </id>
    <property name="ad" type="string">
      <column name="ad"/>
    </property>
    <property name="yazar" type="string">
      <column name="yazar"/>
    </property>
    <property name="kategori" type="string">
      <column name="kategori"/>
    </property>
  </class>
</hibernate-mapping>


Kitap.java
otomatik oluşturulan java sınıfı

package ethemsulan.com;
public class Kitap  implements java.io.Serializable {
     private String isbn;
     private String ad;
     private String yazar;
     private String kategori;

    public Kitap() {
    }
    public Kitap(String isbn) {
        this.isbn = isbn;
    }
    public Kitap(String isbn, String ad, String yazar, String kategori) {
       this.isbn = isbn;
       this.ad = ad;
       this.yazar = yazar;
       this.kategori = kategori;
    }

    public String getIsbn() {
        return this.isbn;
    }

    public void setIsbn(String isbn) {
        this.isbn = isbn;
    }
    public String getAd() {
        return this.ad;
    }

    public void setAd(String ad) {
        this.ad = ad;
    }
    public String getYazar() {
        return this.yazar;
    }

    public void setYazar(String yazar) {
        this.yazar = yazar;
    }
    public String getKategori() {
        return this.kategori;
    }

    public void setKategori(String kategori) {
        this.kategori = kategori;
    }
}

Bu uygulamada JSP ile Persist ORM/DAO kütüphanesini ve Ajax javascript objesini kullanmaya çalıştım.
ORM(object relation mapping): Veritabanı ile ilgili işlemleri soyutlamayı sağlayan bir tekniktir. Isminden de anlaşıldığı gibi databasedeki objelere karşılık gelen bir nesneyle ilşkilendirmektir ORM. Yani createmem isminde bir veritabanı tablom varsa bu tabloya ait(tabloyla eşleşen) bir class ın olmasıdır.Örnekte id,ad,parola alanlarıma karşılık CreateMem.java sınıfında da id,ad,parola değişkenlerim var. Persistte bu tabloyu ve sınıfı kendimiz oluşturuyoruz ama hibernate gibi frameworklerde database tablolarına karşılık gelen sınıf kodunu kendisi üretiyor. Küçük uygulamalarda persisti kullanmanızı tavsiye ederim. Öğrenilmesi çok kolay ve hızlıdır. Özellikle ORM’i tam bilmeyenler ilk başta bunu öğrense daha iyi olur. ORM technical katmanında soyutlamayı sağladığından uygulamamızın veritabanına olan bağımlılığını azlatıyor. Örneğin ben mysql yerine postgresql kullanmak istediğim de fazla bir sıkıntı çekmem.Ama eğer uygulama veritabanına tam olarak bağımlıysa bunu değiştirmek biraz zor olacaktır. Kısaca hızlı, esnek, ve kolay olduğundan ORM kullanıyoruz. ORM(Hibernate gibi frameworkler) CRUD(create, retrieve, update,delete) gibi işlemleri otomatik yapıyor.
DAO(Data Access Objects): DAO design patterni ile gerçekleştirilen CRUD işlemleri soyutlaştırarak technical(veritabanı ile ilgili işlemlerin gerçekleştiği katman) katmanı diğer katmanlara olan bağımlılığı azaltır. Örneğin Rational Unified Process (RUP) ile geliştirilen uygulamlarda katmanlar arası bağımlılıkları mümkün oldukça azaltmaya çalışılır. DAO design patterni bununla ilgili bir kalıp sunuyor. Yani ben veritabanını değiştirdiğim zaman diğer katmanlar bundan etkilenmemelidir.
Persist ORM/DAO jar dosyası persist-1-1.zip dosyasının içinde persist-1.1.jar dosyasını uygulamanıza eklemeyi unutmayın.
Ajax için jquery-1.4.2.min.js dosyasını indirip uygulamanıza ekleyin.

persist orm


ConnectionInstance.java

package ethemsulan;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
public class ConnectionInstance {
	static Connection con;
//Baglanti nesnesini geri donderir.
	public static Connection getConIsntance(){
		try {
			Class.forName("com.mysql.jdbc.Driver");
			con=DriverManager.getConnection("jdbc:mysql://localhost/ethemsulan", "root", "123");
		} catch (ClassNotFoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		return con;
	}
}

CreateMem.java

package ethemsulan;
//MySQL veri tabanimda createmem isminde bir tablom var ve
//bu tabloda id(otomatik artiyor), ad, soyad kolonlar var
//Bu sinif ismi CreateMem dir.
//create_mem veya create_mems, createmems isimlerinden biri ile database icinde bir tablo olusturmalisiniz
//Yani sinif ismi ile bu sinifla eslesen database icindeki tablo ismi _  veya s takisi ile tanimlanabilir.

public class CreateMem {
    private int id;
    public int getId() {
            return id;
    }
    public void setId(int id) {
            this.id = id;
    }
    private String ad;
    public String getAd() {
            return ad;
    }
    public void setAd(String ad) {
            this.ad = ad;
    }
    private String parola;

    public String getParola() {
        return parola;
    }

    public void setParola(String parola) {
        this.parola = parola;
    }
}

DB.java

package ethemsulan;
import java.util.List;
import net.sf.persist.Persist;

public class DB {
    
    private Persist ps;
    private CreateMem m1;
    public DB() {
        ps=new Persist(ConnectionInstance.getConIsntance());
        m1=new CreateMem();
    }
    public boolean uyeKayit(String ad, String parola)
    {
        m1.setAd(ad);
        m1.setParola(parola);
        try {
//ml nesnesini veritabanina kaydeder
            ps.insert(m1);
            return true;
        } catch (Exception e) {
        }
        return false;
    }
    public boolean memControl(String gelenAd, String parola)
    {
//gelan ada ait parola dogru ise true degilse false donderir
        String verParola=ps.read(String.class, "select parola from createmem where ad=?",gelenAd);
        return (verParola.equals(parola));
    }
    public List<CreateMem> getMembers()
    {
        try {
//butun tablo bilgilerini bir listeye atiyor ve listeyi geri donderiyor
            List<CreateMem> allMems=ps.readList(CreateMem.class);
            return allMems;
        } catch (Exception e) {
        }
        return null;
    }
}

index.jsp

<%@page contentType="text/html" pageEncoding="UTF-8"%>
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title>JSP Page</title>
        <script language="JavaScript">
            function uyeFormKontrol() {
                with(document.uye)
                {
                    if(ad.value=='')
                    {
                        alert("Adiniz bos gecilemez");
                        return false;
                    }else if(parola.value=='' || parola2.value=='')
                    {
                        alert("Parola alani bos gecilemez");
                        return false;
                    }else{
                        return true;
                    }
                }
            }
            function girisFormKontrol()
            {
                with(document.giris)
                {
                    if(ad.value=='' || parola.value=='')
                    {
                        alert("Kul adi ve parola bos gecilemez");
                        return false;
                    }else{
                        return true;
                    }
                }
            }
        </script>
    </head>
    <body>
       
        <div style="float: right; width: 300px;">
            <form name="uye" action="KayitOl.jsp" type="POST" id="uyeForm" onsubmit="return uyeFormKontrol()">
            <table border="1">
                <tr>
                    <td>Kul adi:</td>
                    <td><input type="text" name="ad"></td>
                </tr>
                <tr>
                    <td>Parola:</td>
                    <td><input type="password" name="parola"></td>
                </tr>
                <tr>
                    <td>Parola Tekrari</td>
                    <td><input type="password" name="parola2"></td>
                </tr>
                <tr>
                    <td><input type="submit" value="Sign Up"/></td>
                </tr>
         </table>

        </form>
        </div>
        <div style="float: left; width: 100px">
            <form name="giris" action="UyeKontrol.jsp" type="POST" id="girisForm" onsubmit="return girisFormKontrol()">
            <table border="1">
                <tr>
                    <td>Kul adi:</td>
                    <td><input type="text" name="ad"></td>
                </tr>
                <tr>
                    <td>Parola:</td>
                    <td><input type="password" name="parola"></td>
                </tr>
                <tr>
                    <td><input type="submit" value="Login"/></td>
                </tr>
         </table>

        </form>
        </div>
    </body>
</html>

UyeKontrol.jsp

<%@page contentType="text/html" pageEncoding="UTF-8"%>
<%-- memControl() ile uye yoksa veritabanina kaydeder.--%>
<%@page import="ethemsulan.DB" %>

<%!
    private String userName;
    private String password;
    DB dbOb;
%>
<%
    dbOb=new DB();
    userName=request.getParameter("ad");
    password=request.getParameter("parola");
    if(dbOb.memControl(userName, password))
    {
        response.sendRedirect("Listele.jsp");
    }else
    {
        response.sendRedirect("index.jsp");
    }

%>

Listele.jsp
Bu sayfada Ajax ile buttona tıklandığında VeritabBilgYaz.jsp sayfasını div etiketinin arasında yazdırıyorum.Böylece sayfa yenilenmeden başka bir sayfadaki verileri çağırıyoruz. Aslında VeritabBilgYaz.jsp sayfamızda üyelerimizin id ve adlarını databaseden çekip ekrana yazıyoruz. Bunu Listele.jsp sayfasında ajax ile çağırdığımızda sayfa yenilenmeden bu çıktımız ekrana geliyor.
Çıktımız

<%@page contentType="text/html" pageEncoding="UTF-8"%>
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title>JSP Page</title>
<!-- src="jquery-1.4.2.min.js jquery dosyasını uygulamamiza ekliyoruz
 listelemeButtonuna tiklaninca VeritabBilgYaz.jsp dosyasini ajax ile cagiriyoruz
$.get('VeritabBilgYaz.jsp',{},function(sonuc){} -->
		<script type="text/javascript" language="javascript" src="jquery-1.4.2.min.js"></script>
		<script type="text/javascript" language="javascript">
            $(function(){
                $('#listelemeButonu').click(bilgileriListele);
            });

            function bilgileriListele()
            {
                $('#divId').html("Yükleniyor..");
                $.get('VeritabBilgYaz.jsp',{},function(sonuc){
                    $('#divId').empty().html(sonuc);
                })
            }
        </script>
    </head>
    <body>
        <div id="divId"></div>
        <p><button id="listelemeButonu">Ajax ile listele</button></p>
    </body>
</html>

VeritabBilgYaz.jsp

<%@page contentType="text/html" pageEncoding="UTF-8"%>
<%-- DB.java sinifinda butun uyelerin id ve adlarini dizden tabloya yaziyoruz.--%>
<%@page import="ethemsulan.DB, ethemsulan.CreateMem, java.util.List" %>
<%@page import="java.lang.Thread" %>
<%
    Thread.sleep(1000);
%>
<style type="text/css">
    table#tablom tr{background: lime;}
                 td{border: 3px solid; width: 100px; height: 10px;}
</style>

<%!
    DB objDb;
    List<CreateMem> allMems;
%>
<%
    objDb=new DB();
    allMems=objDb.getMembers();
    for(CreateMem mem: allMems){
%>
<table id="tablom">
    <tr>
        <td><%=mem.getId()%></td>
        <td><%=mem.getAd()%></td>
    </tr>
<%
}
%>
</table>

KayitOl.jsp

<%@page contentType="text/html" pageEncoding="UTF-8"%>
<%-- girilen uye bilgileri sisteme kayit eder--%>
<%@page import="ethemsulan.DB" %>
<%!
    private String ad;
    private String parola;
    DB objDb;
%>
<%
    objDb=new DB();
    ad=request.getParameter("ad");
    parola=request.getParameter("parola");
    if(objDb.uyeKayit(ad, parola))
    {
        out.println("Kayit başariyla gerçekleşti<br><a href='index.jsp'>Giris Yapmak icin tiklayin</a>");
    }else
    {
 %>
 <a href='javascript:history.back()'>Kayit basarisiz</a>
 <%
        return;
    }

%>

Tamblomuzun adı ve alanları

resime link ekleme
jsp sayfasında javascript kullanarak resime link eklemeye çalıştım.Ayrıca harici javascript dosyasını jsp sayfasında çağırdım.
harici.js

//<%--image tıklaninca ethemsulan.com sitesine gider. Url  Nokta/resimKalsörIsmi/resimIsmi.resimUzantisi--%>
document.write('<a href="http://www.ethemsulan.com"><img src="./images/javaci.png"></a>')

index.jsp

<%@page contentType="text/html" pageEncoding="UTF-8"%>
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title>JSP Page</title>
    </head>
    <body>
    <div align="righ">
<%-- Javascript dosyamizi jsp sayfasinin icinde sr="dosyaIsmi.js" seklinde cagiriyoruz.--%>
        <script language="JavaScript" src="harici.js"/>
    </div>
    </body>
</html>

Test.js

function filtBelirle(deg,sir,dizi)
{
    if(deg==2 || deg==3 || deg==5 || deg==7)
    {
        return true;
    }else if(deg!=1 && deg%2!=0 && deg%3!=0 && deg%5!=0 && deg%7!=0)
    {
       return true;
    }else {
        return false;
    }
}
function yazdir(){
    var dizim=new Array(20);
    for(var i=0;i<20;i=i+1){
        dizim[i]=Math.floor(Math.random()*20);
    }
    var filt=dizim.filter(filtBelirle);
    alert(filt.join(" - "));
}

UyeSes.jsp

<%
//Kontrol sayfasinda
//HttpSession oturum=null;
//oturum=request.getSession(true);
//oturum.setAttribute("id", sonuc.getInt("id"));
//oturum.setAttribute("uye", 1);
//Bu sekilde bir session olusturduğumuzu varsayalım.
//index.jsp include ettiğimizde eğer üye girişi yapılmamışsa
//Giris.jsp ye yönlendirilir.
    if((Integer)session.getAttribute("uye")!=1){
        response.sendRedirect("Giris.jsp");
    }
%>

index.jsp

<%@page contentType="text/html" pageEncoding="UTF-8"%>

<%@include file="UyeSes.jsp" %>

    
        JSP Page
    
<%--Test.js javascript sayfamiza ekleyel
im html buttonu içinde
Test.js içindeki yazdir() metodunu çağiriyoruz.--%>
    <script type="text/javascript" src="Test.js">
    
    <input type="button" value="Goster" onclick="return yazdir()"/>
    

		

res

<%@page contentType="text/html" pageEncoding="UTF-8"%>

JSP Page

        <form action="GirisKontrol.jsp" method="POST">
            <table border="1">
                    
                        Kullanici Adi:
                        <input type="text" name="ad">
                    
                    
                        Parola:
                        <input type="password" name="parola">
                    
                    
                        <input type="submit" value="Giris Yap">
                    
            

        
    


Orj kod:http://www.ethemsulan.pastebin.com/Mi82ArNY

<%@page contentType="text/html" pageEncoding="UTF-8"%>


<%@page import="VeriTabani.Giris" %>

    
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        JSP Page
    
    
        <%!
        String ad,parola;
        Giris girKontNes;
       %>
       <%
       girKontNes=new Giris();
//index.jsp den gelend egerleri alir
       ad=request.getParameter("ad");
       parola=request.getParameter("parola");
       %>
       <%
//Eger ad ve parola sistemde kayitli ise ona ait bir session olusturur.
//Oturuma isim uye ve degeri de 1 dir.setAttribute(String name, Object value)
//Uyeye ait oturum ve deger attiktan sonra AnaSayfa.jsp ye gonderir.
       if(girKontNes.uyeKayKontrol(ad, parola))
       {
            HttpSession oturum=request.getSession(true);
            oturum.setAttribute("uye", 1);
            response.sendRedirect("AnaSayfa.jsp");
       }else{
//Eger uye kayitli degilse sisteme uyeliginiz yok seklinde yazi gelir.Herhangi
//bir yere yonlendirmedim.Bu ornekte amac session oluturma ve kontrol etmektir.
            out.println("Sisteme uyeliginiz yok.");
       }
       %>
    

Orj kod:http://www.ethemsulan.pastebin.com/7U8yi4jG

<%@page contentType="text/html" pageEncoding="UTF-8"%>


    
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        JSP Page
    
    
        <%
//GezinmeSayfasi.jsp deki gibi bu d agelen uyeye ait session yoksa yani
//null ise exit(0); ile sistemden cikiyor.GezinmeSayfasi.jsp eger session yoksa
//yonlendiriyordu index.jsp sayfasina
        if(session.getAttribute("uye")==null){
            System.exit(0);
        }
//Eger uyeye ait session varsa ve degeri 1 ise sayfalarda gezinebilir.
//Tabi bu sekilde tum sayfalarin basinda kontorl edilmeli ki uye olmayan ya da sisteme giris yapmayan
//sisteme giremezsin
        else if((Integer)session.getAttribute("uye")==1)
        {
            out.println("Hos geldiniz
");
            out.println("Gezinmek Icin Tiklayin");
        }
        %>
    

Orj kod:http://www.ethemsulan.pastebin.com/iqiGDKsg

<%@page contentType="text/html" pageEncoding="UTF-8"%>


    
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        JSP Page
    
    <script language="JavaScript">
        <!--
        function mesajVer()
        {
            alert("Bu sadece sessionun nasil kontrol edildigine bir ornektir");
        }
        -->
    
    
        <%
//GirisKontrol.jsp sayfasinda oturum.setAttribute("uye", 1);
//ozellige uye atamistik.Eger kullanici adres cubuguna
//http://localhost:8084/SessionOlusturma/GezinmeSayfasi.jsp yazarsa direkt
//index.jsp sayfasina yonlendirir.Cunku uyeye ait oturum yok.
        if(session.getAttribute("uye")==null)
        {
//Giris sayfasina yonlendirecez.Eger kullaniciya ait session yoksa.
            response.sendRedirect("index.jsp");
        }
//Eger gelen uyemize ait session varsa degeri 1 ile karsilastiriyor.Cunku
//setAttribute("uye", 1) ile ben 1 atadim.1 aslinda Object yani
//javanin root sinifi tipinde bir degerdir.
        else if((Integer)session.getAttribute("uye")==1)
        {
//JavaScript ait mesajVer() metodunu jsp icinde cagirdim.
//Herhangi bir yerde  seklinde tanimlayip kullanabiliriz.
        out.println("mesajVer();");
        }
        %>
    

Orj kod:http://www.ethemsulan.pastebin.com/sEBMgqsD

 

//www.ethemsulan.com
package VeriTabani;
import java.sql.SQLException;
import java.sql.Statement;
import java.sql.ResultSet;
import java.util.logging.Level;
import java.util.logging.Logger;
//Bu sekilde kullanima dikkat edin.Veritabaniyla ilgili islemler
//jsp sayfasi icinde de olur.Ama bu sekilde yani farkli bir pakette almak
//daha saglikli ve yonetilebilirdir.
public class Giris {
    Statement uyg;
    ResultSet sonuc;
    JdbcYukle yukNes;
    public Giris()
    {
    yukNes=new JdbcYukle();
    }
//JdbcYukle.java icindeki metodu cagirip gelen kullanici adi ve parola
//veritabanimizda kayitli ise true, degilse false donderir.
    public boolean uyeKayKontrol(String kulAdi,String parola) throws SQLException, ClassNotFoundException
    {
    uyg=yukNes.baglanSag();
    uyg.execute("select kul_adi,parola from uye " +
      "where kul_adi='"+kulAdi+"' and parola='"+parola+"'");
//execute() islemindeki sonuclari donderiri.
    sonuc=uyg.getResultSet();
        try {
            if (sonuc.next()) {
                return true;
            }
        } catch (SQLException ex) {
            Logger.getLogger(Giris.class.getName()).log(Level.SEVERE, null, ex);
        }
    return false;
    }
}

Orj kod:http://www.ethemsulan.pastebin.com/558TpByn

//www.ethemsulan.com
package VeriTabani;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Statement;
public class JdbcYukle {
    Connection baglanti;
    Statement ifade;
//Projemizde her yerde Class.forname(..) tanimlamamk icin bir metodta tanimlayip
//istedigimiz yerde bu metodu cagirip kullanmak daha iyidir.
    public Statement baglanSag() throws SQLException, ClassNotFoundException
    {
    Class.forName("com.mysql.jdbc.Driver");
baglanti=DriverManager.getConnection("jdbc:mysql://localhost/odevler", "root", "123");
    ifade=baglanti.createStatement();
    return ifade;
    }
}

orj kod:http://www.ethemsulan.pastebin.com/SuWgz1sa

Servlette ve jsp bir birlerinin yerine kullanılabilirler.Servlet ile sesion örneği:http://www.ethemsulan.com/2010/02/java-servlet-ile-sessionoturum.html


<%@page contentType="text/html" pageEncoding="UTF-8"%>
 

JSP Page
<script language="javascript">
<!--
function kontrolEt(){
if(document.formum.ad.value==''){
alert("Kullanici adi lutfen");
return false;
}else if(document.formum.parola.value==''){
alert("Parola girin lutfen");
return false;
}else{
alert("Devam edilsin mi");
return true;
}
}
function iptal(){
alert("Iptal edildi");
}
-->



<form name="formum" action="GidilecekSayfa.jsp" 
onClick="return kontrolEt()" onClick="return iptal()"
method="POST">
<table border="1">

Kullanici Adi:
<input type="text" name="ad">


Parola:
<input type="password" name="parola">


<input type="submit" value="Gonder">
<input type="reset" value="Iptal">






Orj kod:http://www.ethemsulan.pastebin.com/HHJUzvAL

Bu javascript kodudur.if(document.formum.ad.value==”) dikkat formismi.alanismi.value  <!–

function kontrolEt(){ if(document.formum.ad.value==”){ alert(“Kullanici adi lutfen”);   return false;   }else if(document.formum.parola.value==”){  alert(“Parola girin lutfen”); return false; }else{alert(“Devam edilsin mi”);  return true;  }  } function iptal(){  alert(“Iptal edildi”);  }–>  Form ismine dikkat name=”formum” dur.Bu isime göre gerçekleşir. onClick() ile javascript metodları çağrırlır.onClick=”return kontrolEt()” onClick=”return iptal()”.