Archive for the ‘ JSP(Java Server Pages) ’ Category

Expression language(jsp anlatim-ifade dili) jspde bulunan bean ve nesnlerine az kod ile erişilmeyi sağlamak.Yanı daha kolay bir yazım ile işlevleri gerçekleştirmemizi sağlıyor. ${işlemler} şeklinde kullanılır. Varolan değişknelerden baziları: param—>parametreler, pageContext—>Her yerden erişilebilen değişkneler.Servlet örneğinde açıklamıştım. cookie—>oturumumuzun adi ve değerini öğrenebiliriz..

<%@page contentType="text/html" pageEncoding="UTF-8"%>
JSP Page
        <%
Cookie koki=new Cookie("oturum", "ethem");
   response.addCookie(koki);
        %>
 <form action="IfadeDiliKul.jsp" method="POST">
<input type="text" name="urunAdi"/>
<input type="text" name="fiyat"/>
<input type="submit" value="Gonder" />
        

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

<%@page contentType="text/html" pageEncoding="UTF-8"%>
JSP Page
jsp ile almak : <%=request.getParameter("urunAdi")%>

index.jsp den gelen el ile : ${param["urunAdi"]}

jsp ile fiyat almak: <%= request.getParameter("fiyat")%>

index.jsp den gelen el ile : ${param["fiyat"]}

Uygulama genelindeki port:
${pageContext.request.localPort}

Cookimizin değeri : ${cookie["oturum"].value}

<%--   
       email
  ethemsulan@gmail.com
    --%>
xml içindeki:${initParam["email"]}

13x17 sonucu: ${13*17}

 uclu operatoru: ${ (12==21) ? "esit" : "esit degil"}
   

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

<%@page contentType="text/html" pageEncoding="UTF-8"%>
JSP Page
<form action="KayitGer.jsp" method="POST">
<table border="1" bgcolor="green">
 TC No:
<input type="text" name="tcno" />
 Okul No:
<input type="text" name="ogrno"/>
Ad:
<input type="text" name="ad"/>
Soyad:
<input type="text" name="soyad"/>
Bolum:
<input type="text" name="bolum"/>
Sinif:
<input type="text" name="sinif"/>
Adres:
<textarea name="adres" rows="3" cols="14">

<input type="submit" value="KayitEt" />
<input type="reset" value="Iptal" />

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

<%@page contentType="text/html" pageEncoding="UTF-8"%>
<%@page import="java.sql.Connection, java.sql.PreparedStatement" %>
<%@page import="java.sql.SQLException,java.sql.DriverManager" %>
JSP Page
        <%!
  Connection baglanti=null;
  PreparedStatement ifade=null;
  boolean oto;
String tcNo,ogrNo,ogrAd,ogrSoyad,bolum,ogrAdres;
  int sinif;
        %>
        <%
        try{
  tcNo=request.getParameter("tcno");
  ogrNo=request.getParameter("ogrno");
  ogrAd=request.getParameter("ad");
  ogrSoyad=request.getParameter("soyad");
  bolum=request.getParameter("bolum");
        try{
  Class.forName("org.postgresql.Driver");
       }catch(ClassNotFoundException e){
  out.println("Jdbc driveri yukelenemedi");
        }
        try{
sinif=Integer.valueOf(request.getParameter("sinif"));
        }catch(Exception e){
   out.println("Sinif integer deger olmali");
        }
ogrAdres=request.getParameter("adres");
baglanti=DriverManager.getConnection("jdbc:postgresql:" +
   "//127.0.1:5432/postgres", "postgres", "ethemsulan");
   oto=baglanti.getAutoCommit();
   baglanti.setAutoCommit(false);
 ifade=baglanti.prepareStatement("insert into ogrencikayit" +
 "(otc,ono,oad,osoyad,obolum,osinif,oadres) values(?,?,?,?,?,?,?) ");
   ifade.setString(1, tcNo);
   ifade.setString(2, ogrNo);
   ifade.setString(3, ogrAd);
   ifade.setString(4, ogrSoyad);
   ifade.setString(5, bolum);
   ifade.setInt(6, sinif);
   ifade.setString(7, ogrAdres);
   ifade.executeUpdate();
   baglanti.commit();
       }catch(SQLException e){
    baglanti.rollback();
    out.println("sql hatasi");
        }finally{
   ifade.close();
   baglanti.close(); 
   baglanti.setAutoCommit(oto);
out.println("kayit basariyla gerceklesti");
        }
        %>
    

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

ogrtablo

Transaction(Veritabaninda Işlem-hareket):Default olarak değişikler kaydedilir.Bunu otomatik kayıt işlemini durdurup değişikleri gerçekleştirdikten sonra eğer herhangi bir hata almıyorsak bu değişiklerin veritabanına kayedilmesine transection denir.Hata alıyorsak tüm değişikleri geri alır.Örneğin bankamatikten 10 ytl para çekmek için tuşa bastık.Para bize transfer edilmesi sırasında(belli işlemler gerçekleşiyor sonra parayı bize verir) arızalandı.Veritabanı rollback özelliğiyle bu işlem geri alınır.Yanı tam para bizim elimize geçmeden yapılan tüm işlemleri geri alabilme özelliğine transection denir.Eğer netbeanse driver eklemeyi veya baglanti oluşturmayı bilmiyorsanız :http://www.ethemsulan.com/2010/01/java-ile-postgresql-veritabanna.html , http://www.ethemsulan.com/2010/01/postgresql-veritaban-nasl-kurulurhow-to.html bakabilirsiniz.

<%@page contentType="text/html" pageEncoding="UTF-8"%>
<%@page import="java.sql.DriverManager, java.sql.Statement" %>
<%@page import="java.sql.Connection, java.sql.SQLException" %>
JSP Page

        <%!
        Connection baglanti=null;
        Statement uyg=null;
        boolean oto;
        %>
        <%
baglanti=DriverManager.getConnection("jdbc:postgresql:" +
  "//localhost:5432/postgres", "postgres", "ethemsulan");
        uyg=baglanti.createStatement();
        %>
        <%
        try{
        oto=baglanti.getAutoCommit();
//otomatik işlemlerini gerçekleştirmeyi iptal ettik
        baglanti.setAutoCommit(false);
uyg.execute("CREATE TABLE kitap (isbn" +
" varchar DEFAULT NULL NOT NULL,ad varchar DEFAULT NULL," +
" yazar varchar DEFAULT NULL,fiyat int2 DEFAULT NULL," +
"CONSTRAINT kitap_pkey PRIMARY KEY (isbn))");
uyg.executeUpdate("insert into kitap(isbn,ad,yazar,fiyat)" +
" values('978-9944-711-30-2','Extreme Programming','Ozcan ACAR',29)");
//hata yoksa işlmeleri gerçekleştir
    baglanti.commit();
 out.println("Kayit basariyla gerceklesti");
        }catch(SQLException e){
//hata varsa tüm işlemi gerial
        baglanti.rollback();
out.println("SQL hatasi.Daha once olusturulmus olabilir kitap tablosu");
        }finally{
//bağlantıyı kapat ve default değere dön
        uyg.close();
        baglanti.close();
        baglanti.setAutoCommit(oto);
        }
        %>
    

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

<%@page contentType="text/html" pageEncoding="UTF-8"%>
JSP Page
<form action="GonderAl.jsp" method="POST">

Barkod No: <input type="text" name="barNo" value="" />

Kitap Adi:<input type="text" name="kitAd" value="" />

Yazar Ismi:<input type="text" name="yazar" value="" />

<input type="submit" value="Gonder" />
  

Orj Kod:http://www.ethemsulan.pastebin.com/f6d839fd8

 class=”paketismi.beanismi” beanimizin yerini belitir.
<%@page contentType="text/html" pageEncoding="UTF-8"%>
JSP Page
<%--scope="page" default beanimizin sayfada geçerli olmasını sağlar.
Her erişimde yeni bir nesne türetilir cope="request"bean nesnemiz
HttpServletRequest, scope="session" Httpsession nesnesinde saklanılır.
Eğer tüm uygulamada erişilmesini istiyorsak scope="application" ile 
SerbvletContext e sakalnılır.--%>
<jsp:useBean id="hepsi" class="www.ethemsulan.com.Beanimiz" scope="request"/>
<%--index.jsp den gelen form bileşenleri otomatik(*) beanimiza ekler.
Boş gelen null atanır.Dikkat index.jsp deki name ile beanimizdaki isimler aynı olmalı--%>
<jsp:setProperty name="hepsi" property="*"/>
<%-- kolaylık olsun diye getKitapAd ile barkod,ad ve yazarı 
yazdırdım beanimizdeki getKitapAd() metoduna bakın--%>

Barkod no kitap adi ve kitap yazari


     

Orj Kod:http://www.ethemsulan.pastebin.com/f5b8c8410

package www.ethemsulan.com;
//program bileşenlerini tektar kullanmamızı ve farklı
//jsp sayfalarından erişilme imkanı tanır javabean sınıfları
//get ve set metodlarına dikkat edin.değişkenlerimizi tanımladıktan sonra
//sağ tıklayıp Insert Codeden-->Getter() and Setter()i tıklayınca otomatik get ve set
//metodlarını oluşturur.Isimlendirme önemli mesela barNo-->getBarNo()
public class Beanimiz {
    private String barNo;
    private String kitAd;
    private String yazar;
public String getBarNo() {return barNo;}
public void setBarNo(String barNo){this.barNo=barNo;}
public String getKitAd() {
        return getBarNo()+" "+kitAd+" "+getYazar();
    }
public void setKitAd(String kitAd) {this.kitAd = kitAd;}
public String getYazar() {return yazar;}
public void setYazar(String yazar) {this.yazar = yazar; }
}

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

Netbeans idesinin otomatik tamamladığı bazı metodlar için sınıfın için sınıfta sağ tıklayıp resimde görldüğü yolu izleyin.

o1

o2

Default yapıcısı olan, public örnek değişkenleri olmayan ve kullanıcı değişknelere sadece get() ve set() metodlarıyla erişilmeyi sağlayan basit java sınıflarıdır.Sayfalar arası veri taşımasını kolay şekilde gerçekleşmesini sağlar.

<%@page contentType="text/html" pageEncoding="UTF-8"%>
JSP Page
<%-- propertydeki isimler ile javabeandeki değişknelerimizin
ismi aynı olmalıdır.yas yerine string girilirse hata verir.
Yanı kontrol yapılmıyor.tc yerine istediğiniz bir isim
girebilirsiniz.Beanimiz o ideyle eşleştirilir.--%>
<jsp:useBean id="tc" class="www.ethemsulan.com.Beanimiz"/>
<jsp:setProperty name="tc" property="ad" value="Ethem"/>
<jsp:setProperty name="tc" property="soyad" value="SULAN"/>
<jsp:setProperty name="tc" property="yas" value="24"/>

Tag ile javabeandeki değerleri okuma
<jsp:getProperty name="tc" property="ad"/>

<jsp:getProperty name="tc" property="soyad"/>

<jsp:getProperty name="tc" property="yas"/>


JSP ile javabeandeki degerleri okuma
        :

        

        

    

Ork Kod:http://www.ethemsulan.pastebin.com/f5004e215

package www.ethemsulan.com;
//javabean sinifimiz.Java sınıfların özelleştirilmiş halidir
//Yukarda belirtilen 3 koşulu sağlayan java sınıflarıdır.
public class Beanimiz {
//default paıcı tanımlanmayabilir.
    public Beanimiz() { }
    private String ad;
    private String soyad;
    private int yas;
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 int getYas() {return yas;}
    public void setYas(int yas) {this.yas = yas;}
 }

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

<%@page contentType="text/html" pageEncoding="UTF-8"%>
<%@page import="javax.swing.JOptionPane" %>

<%@page isErrorPage="true" %>
Hata Olunca Gosterilir
        
Hata Nedeni:
        
Hata Mesaji:
    
//--------------------------------------------------------

<%@page contentType="text/html" pageEncoding="UTF-8"%>
<%@page import="javax.swing.JOptionPane" %>

<%@page errorPage="HataSayfasi.jsp" %>
Hata Sayfasi Cagirma
        <%
//Bir önceki ötnekte kullanıcıdan bu şekilde değer alıyordu.
//Ama kullanıcı int yerine string girebilir bu dudumda hata
//yakalama mekanizmamız olmadığından kod çakılır.Ama try{}catch() ya da
//Bu şekilde hatayı yakalayıp gösterebiliriz.Hata olduğu
//anda program durdurulur ve hata nedeni belirtilir.
int strinGir=Integer.valueOf(JOptionPane.showInputDialog(
        "Tam sayi girme ki hata alinsin"));
        %>
        
<%--Bu sekilde kendi hata sayfamizi olusturduk
        try{
int strinGir=Integer.valueOf(JOptionPane.showInputDialog(
        "Tam sayi girme ki hata alinsin"));
        }catch(Exception e){e.printStackTrace();}
sayfanin basina da <%@page import="java.lang.Exception"%> 
eklememiz lazim.Bu şekilde eğer hata olursa program
dordurulur ve hata uyarısı verilir.Aksi halde çakar kod
--%>
    

Istenilen sayfanın(html,jsp,servlet) çıktısını bu şekilde page özelliğyle kendi sayfamızın çıktısına dahil edebiliriz.

<%@page contentType="text/html" pageEncoding="UTF-8"%>
<%-- Birden fazla paket ayni anda import edilebilir , ayrilir --%>
<%@page import="java.util.Vector,java.util.Enumeration" %>
<%@page import="java.util.TreeSet" %>
        <%!
//vektorde elemanlar ekleme sirasina goredir
    Vector kisiVek=new Vector();
    Enumeration enm=kisiVek.elements();
//Elemanlari sirali olarak tutar.Sayilar onde
        TreeSet siraliAgac=new TreeSet();
        %><%
    kisiVek.addElement("B");
    kisiVek.addElement("17");
    kisiVek.addElement("Ethem");
    kisiVek.addElement("SULAN");
    kisiVek.addElement("Mehmet");
    kisiVek.addElement("13");
    kisiVek.addElement("A");
//vektoru agaca ekler
    siraliAgac.addAll(kisiVek);
       %><%--do{}while(kosul); kullanimi--%>
   <%    do{   %>
   

   <%  }while(enm.hasMoreElements());   %>
   

TreeSet Siralamasi:


    <%
//sirali agaci yazdiriyor.
   for(Object sr:siraliAgac){
     out.println(sr+"
");
    }
    %>
    

Orj Kod:http://www.ethemsulan.pastebin.com/f5b26a038

<%@page contentType="text/html" pageEncoding="UTF-8"%>
<%@page import="java.util.Locale" %>
<%@page import="java.util.Date" %>
<%@page import="javax.swing.JOptionPane" %>
JSP Yerel Zaman ve Switch Kullanimi
        <%!
        Date zam=new Date();
        int tercihiniz=0;
//i^j degerini veriir.
private double usAl(double i,double j){
        return Math.pow(i, j);
        }
//e^i degerini verir
private double expoDegeri(double i){
        return Math.exp(i);
        }
private double karekokAl(double i){
        return Math.sqrt(i);
        }
        int say1=0;
        int say2=0;
        %>
Şu anki tarih-saat :  <%=zam.toLocaleString()+"
"%>
 <%
tercihiniz=Integer.parseInt(JOptionPane.showInputDialog(
        "1,2,3 ten birini tercih edin"));
    switch(tercihiniz){
    case 1:
say1=Integer.valueOf(JOptionPane.showInputDialog("taban gir:"));
say2=Integer.valueOf(JOptionPane.showInputDialog("us gir:"));
out.println(say1+" ussu "+say2+" nin sonuc-->"+usAl(say1, say2)+"
");
        break;
    case 2:
say1=Integer.valueOf(JOptionPane.showInputDialog("e nin kacinci kuv alinsin:"));
out.println(Math.E+" ussu "+ say1+" sonucu-->"+expoDegeri(say1)+"
");
        break;
    case 3:
say1=Integer.valueOf(JOptionPane.showInputDialog("karekoku alincak sayi:"));
out.println(say1+" karekoku: "+karekokAl(say1)+"
");
        break;
    default:
out.println(" 1, 2, 3 sayilari dısındaki secimlere hizmet yok!");
        break;
    }
    %>
 

Orj Kod:http://www.ethemsulan.pastebin.com/f75acc2a5

<%@page contentType="text/html" pageEncoding="UTF-8"%>
<%@page import="java.io.IOException"%>
<%@page import="javax.servlet.http.HttpServletResponse" %>
JSP'de Super komutu ve Kalitim Örneği
   <%!
    javax.servlet.jsp.JspWriter cikti;
    public class AnaSinif {
    private int a1,a2;
    private String isim="Ethem";
    public AnaSinif() throws IOException{
      cikti.println("Ana sinif yapicis calisti
");
    }
    protected void setTopla(int i,int j){
        a1=i;
         a2=j;
    }
     protected int topla(){
            return a1+a2;
     }
    protected void isimYaz() throws Exception{
 cikti.println("
Ana siniftaki isim-->
"+isim+"
");
    } }
//---------------------------------------------------------------------
  public class TuretilenSinif extends AnaSinif{
    public TuretilenSinif() throws IOException{
//AnaSinif yapicisini cagirir.Yani anasiniftan nesne turetilmeden
//yapicisini cagirabiliyoruz super() metoduyla.
     super();
      cikti.println("Turetilen sinif yapicisi calisti
");
     }
     private void turAnaDegYaz()throws java.lang.Exception{
//Kalitim alinmis sinifin static olmayan metodunu
//nesne tanimlamadan da cagirabiliriz super komutuyla
     super.isimYaz();
      } }
     %><%
     cikti=out;
 TuretilenSinif nesne=new Ture
tilenSinif();
  nesne.setTopla(13, 17);
out.println("degerlerin oplami-->"+nesne.topla());
  nesne.turAnaDegYaz();
   %>

Orj Kod:http://www.ethemsulan.pastebin.com/f1a8de00e

<%@page contentType="text/html" pageEncoding="UTF-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
   "http://www.w3.org/TR/html4/loose.dtd">
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
JSP Page
<%--ifade takısı yanı  ifademizden sonra ; kullanmaya gerek yık--%>
        <%=new java.util.Date()%>
        <%!
   public void diziElYaz(int[] dizimiz){
   for(int i=0;i<dizimiz.length;i++){
   dizimiz[i]=i*i;
        } }
   int[] dizi=new int[20];
        %><%
//çıktı html olduğundan 
ile bir alt satıra geçilir.

/*çoklu yorum*/
   out.println("
");
   diziElYaz(dizi);
   for(int i=0;i<dizi.length;i++){
    out.println(dizi[i]);
        } %>
    

Orj Kod:http://www.ethemsulan.pastebin.com/f6b375e93

<%@page contentType="text/html" pageEncoding="UTF-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
   "http://www.w3.org/TR/html4/loose.dtd">
<%-- pge,include ve taglib olarak 3 tane önemli direktif vardır jspde.
page nin import özelliğini bir önceki örnekte göstermiştim.Sadece import değil
bir çok değişkeni var(session,extends,contentType,isThread...)
yönergeler sunucudaki jsp motorlarını kullanabiliyorlar.Yanı bir işi direk
yaptırabiliyorlar.Bu yönerge ya da direktifler ile harici bir döküman ekleme,pkaet ekleme
başka bir sayfanın çıktısını ekleme..Aşağıdaki index.jsp(veya form.html..) sayfasının
çıktısını bu sayfaya eklenmiştir.--%>
<%@include file="index.jsp" %>
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
JSP Page
        <%!
String str="
Bu çıktı dışındaki değerler diğer sınıfa aittir.";
        %>
        
    

Orj Kod:http://www.ethemsulan.pastebin.com/f37d0e1cf