JSP-EXPRESSION TAG

2-EXPRESSION TAG

     Bu tagımız JSP'de java kodları yazmamızı sağlıyor.<% %> veya <%= %> şeklinde yazılıyor..
"=" olanında yazarsak sonuna noktalı virgül koymamıza gerek kalmaz..Düz şekilde yazarsak sonuna noktalı virgül eklememiz gerekiyor.Kodumuza göz atalım.

<%--
    Document   : JspTags
    Created on : 15.Şub.2018, 14:04:49
    Author     : Gökhan
--%>

<%@page contentType="text/html" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <title>JSP Page</title>
</head>
<body>
    <%--DECLARATION TAG--%>
        <%!
            public double sayi=10;
            public String Takim="Galatasaray";
        %>

    <%-- EXPRESSION TAG --%>
    <% out.println("Merhaba"); %>
    <%= out.println("Merhaba..") %>
    <%= new java.util.Date() %>

</body>
</html>



JSP-DECLARATION TAG

1-DECLARATION TAG

        Declaration tag'lar değişken ve metotları tanımlarken kullanılır.."<%! %>" arasına yazılır.
Bildiğiniz java kodları işte.Yani int sayi; String yazi; Örneğimize bakalım..

<%--
    Document   : JspTags
    Created on : 15.Şub.2018, 14:04:49
    Author     : Gökhan
--%>

<%@page contentType="text/html" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <title>JSP Page</title>
</head>
<body>
    <%--Declaration Tag--%>
        <%!
            public double sayi=10;
            public int a=4;
            public String Takim="Galatasaray";
        %>
</body>
</html>

Java Server Page ' GİRİŞ

    JSP dinamik web sayfaları hazırlayabileceğimiz,java tabanlı bir web teknolojisidir..
JSP yazmak için ECLİPSE veya NETBEANS'i kurmanız gerekiyor.Daha sonra local bir server'i daha kurmanız gerekiyor.NETBEANS'te bunları plugins edebiliyorsunuz.Ben başlangıç olarak Apachenin TOMCAT'ini kurdum.GlassFish Tomcat gibi bir sürü sunucu var.Herhangi birini kurup işe atılabilirsiniz.Kariyerinizi java üzerine kurmayı düşünüyorsanız.Paylaşacam örnekleri anlayıp kendinizde değişik kaynaklardan çalışmaya başlayın..Java SE'den başlayıp Java EE' ile devam edin..Java çok geniştir.Bende bu yazım ile Java EE'ye geçiş yapmış bulundum.Fakat
Java SE'örnekleri paylaşmaya devam edeceğim.Swing olsun OOP olsun.Zamanım yettiğince paylaşmaya çalışacağım.İyi çalışmalar.

İLK JSP ÖRNEĞİMİZ
 
 İlk örneğimizi kodlarken dikkat edeceğimiz noktalar var.JSP taglarla yazılır.HTML kodları ile birlikte çalışır.Ve bunu yaparken bir sunucuya ihtiyaç duyar.Tıpkı PHP,ASP.NET gibi..Java'da yazdığınız çoğu kodu çalıştırmanız mümkün.Evet şimdi örneğimize bakalım..

<%--
    Document   : newjsp
    Created on : 15.Şub.2018, 13:39:20
    Author     : Gökhan
--%>

<%@page contentType="text/html" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <title>JSP Page</title>
</head>
<body>
    <h1>Hello World!</h1>
    <%@page language="java" %>
    <% out.println("Bu benim"); %>
    <% out.println("ilk JSP sayfam"); %>
</body>
</html>

Bu örneği NETBEANS IDE 8.2 de yazdım.Örnekte JSP taglarının <% ile başlayıp %> ile bittiğini görüyorsunuz..Onun dışında page tag'ı kullanılmış ona daha sonra ayrıntılı bakacağız..
 

JAVA-OOP BASİT KOMUTLARI GERÇEKLEŞTİREBİLEN BİR ROBOT YAPIMI (ÇOK DAHA FAZLA GELİŞTİRİLEBİLİR)


package robot;
 import javax.swing.*;
public class ROBOT {
    public String name;
    public double R;
    public double theta;
    public ROBOT(String is){R=0;theta=0;name=is;}
    public ROBOT(String is,double Ri){name=is;R=Ri;theta=0;}
    public ROBOT(String is,double Ri,double theta_angle){name=is;R=Ri;theta=theta_angle*Math.PI/180.0;}
    public ROBOT(ROBOT r1){name=r1.name;R=r1.R;theta=r1.theta;}
    public void Turn_North(){theta=Math.PI/2.0;}
    public void Turn_South(){theta=3.0*Math.PI/2.0;}
    public void Turn_West(){theta=Math.PI;}
    public void Turn_East(){theta=Math.PI;}
    public void Turn(double angle){theta+=angle*Math.PI/180.0;}
    public void Scroll(){R+=1;}
    public void Scroll(double Ri){R+=Ri;}
    public void go_back(){R-=1;}
    public void go_back(double Ri){R-=Ri;}
    public String output(){
        String s="------------"+name+"---------------\n";
        s+="Cartesian coordinates x = "+R*Math.sin(theta)+" y = "+R*Math.cos(theta)+" \n";
        s+="Polar coordinates R = "+R+" Theta angle = "+theta*180/Math.PI+" \n";
            return s;
    }
    public static void main(String[] args) {
        ROBOT R2D2=new ROBOT("aRtuDitu");
        ROBOT z2=new ROBOT("GOKHAN",1.0,90.0);
        ROBOT z3=new ROBOT(R2D2);
        String s="";
        R2D2.Turn_North();R2D2.Scroll();s+=R2D2.output();
        R2D2.Turn_West();R2D2.Scroll(2.0);s+=R2D2.output();
        z2.Turn_East();z2.Scroll(3.0);s+=z2.output();
        z2.Turn_South();z2.Scroll();s+=z2.output();
        s+="Copy Robot z3 : "+z3.output();
        JOptionPane.showMessageDialog(null,s, "Robot class test",JOptionPane.PLAIN_MESSAGE);
}
    }

JAVA-POLİMORFİZM HAYVAN ÖRNEĞİ

class Hayvan {
public void avYakala() {
System.out.println("Hayvan av Yakala");
}
}
class Kartal extends Hayvan {
public void avYakala() {
System.out.println("Kartal av Yakala");
}
}
class Timsah extends Hayvan{
public void avYakala() {
System.out.println("Timsah av Yakala");
}
}
public class Polimorfizm {

  public static Hayvan rasgeleSec() {
int sec = ( (int) (Math.random() *3) ) ;
Hayvan h = null ;
if (sec == 0) h = new Hayvan();
if (sec == 1) h = new Kartal();
if (sec == 2) h = new Timsah();
return h;
}
    public static void main(String[] args) {
    Hayvan[] h = new Hayvan[3];
// diziyi doldur
for (int i = 0 ; i < 3 ; i++) {
h[i] = rasgeleSec(); //upcasting
}
// dizi elemanlarini ekrana bas
for (int j = 0 ; j < 3 ; j++) {
h[j].avYakala(); // !Dikkat!
}
    }
   
}

JAVA-INHERITANCE KİTAP ÖRNEĞİ

class Kitap2 {
public int sayfaSayisiOgren() {
System.out.println("Kitap2 - sayfaSayisiOgren() ");
return 440;
}
public double fiyatOgren() {
System.out.println("Kitap2 - fiyatOgren() ");
return 2500000 ;
}
public String yazarIsmiOgren() {
System.out.println("Kitap2 - yazarIsmiOgren() ");
return "xy";
}
}
class Roman2 extends Kitap2 {
public int sayfaSayisiOgren() {
System.out.println("Roman2 - sayfaSayisiOgren() ");
return 569;
}
public double fiyatOgren() {
System.out.println("Roman2 - fiyatOgren() ");
return 8500000 ;
}
public static void main( String args[] ) {
Roman2 r2 = new Roman2();
int sayfasayisi = r2.sayfaSayisiOgren();
double fiyat = r2.fiyatOgren();
String yazar = r2.yazarIsmiOgren();
}
}

JAVA-SWİNG Pİ SAYISININ HESABI

import javax.swing.*;
public class TEST {

    public static void main(String[] args) {
       //pi = 4 - 4/3 + 4/5 -4/7+4/9-4/11+...+
String s;
int i;
double pi=0;
int artieksi=-1;
    for(i=1;i < 100000;i++)
    {
        artieksi*=-1;
        pi+=4/(2.0*i-1.0)*artieksi;
    }
        s="pi = "+pi;
        JOptionPane.showMessageDialog(null,s,"pi sayısı hesabı",JOptionPane.PLAIN_MESSAGE);
    }
}

JAVA-DATE() (THREAD İLE ZAMAN KONTROLÜ)

import java.util.*;
public class Tutoriall {
    public static void main(String[] args) {
        try{
            System.out.println(new Date()+"\n");
            Thread.sleep(10000);
            System.out.println(new Date()+"\n");     
        }
        catch(Exception e)
        {
            System.out.println("Got on exception");
        }
    }
}

JAVA-INHERITANCE (KALITIM BASİT ÖRNEK)

 class FutbolTakimi
{
    public int TakiminDegeri;
    int EnDegerliOyuncusu;
    int Ligi(int t)
    {
        return t;
    }
}
class BirinciLig extends FutbolTakimi
{
    FutbolTakimi Gs=new FutbolTakimi();
}
public class WhatIsInheritance {
    public static void main(String[] args) {
       BirinciLig gs=new BirinciLig();
       gs.EnDegerliOyuncusu=33;
    }
   
}

FLİP-FLOP DEVRELERİ

Flip-Floplar, çift kararlı ve eşzamanlı aygıtlardır. Eşzamanlı terimi burada, çıkışın
yalnızca saat (clock )denilen tetikleme sinyalinin belirli bir noktasında durum
değiştirdiğini anlatmaktadır.Çift kararlı olmasının nedeni de budur.Saat sinyali geldiğinde çalışacaktır.O saat sinyalini ya sizin vermeniz gerekir yada bunu otomatik yapabilecek bir aygıtınız olmalıdır.

FLİP FLOP TİPLERİ

1-S-R TİPİ FF
2-J-K TİPİ FF
3-D TİPİ FF
4-T TİPİ FF


(a) Yükselen kenar tetiklemeli
(b) Düşen kenar tetiklemeli

Yükselen ve düşen kenar tetiklemelerinin mantığı basittir.Bir önceki konumuzda gördüğümüz multivibratörlerdeki sinyal tetiklemeleri,0'dan 1'e tetikleniyorsa yükselen,1'den 0'a tetikleniyorsa düşen kenar tetiklemelidir,denir.Gösterimleri şekildeki gibi..


1-S-R TİPİ FF

S-R tipi ff daha önceki kaydımızda gördüğümüz latch devresinin clok'lu hali yani saat sinyali ile çalışıyor.Yükselen ve düşen kenar tetiklemeli saat sinyali ile..


Saat sinyalimiz olmadığında set ve resetin ne olduğu önemli değildir.Flip-flopumuz çalışmayacaktır.
Saat sinyalimiz olduğunda set 1 reset 0 olduğunda kurma set 0 reset 1 olduğunda ise resetleme yapacaktır..



2-J-K TİPİ FF

J-K tipi ff'un set,reset ve  S=0 R=0 durumları R-S tipi ff ile aynıdır.Fakat S=1 R=1 durumunda tanımsız olan durum J-K flip flop'ta tümleyen oluyor.Yani o durum tanımsız olmuyorda bir önceki durumun tersi alınıyor.       J-K tipi ff''ta  J=SET----K=RESET gibi düşünebiliriz..








3-D TİPİ FF
   
      DATA tipi flip flop tek bir bit saklanacağında kullanılır.Bilgisayardaki depolama birimleri olan registerlar D tipi ff'tan oluşuyor.



Şekilde de göründüğü gibi ne verirseniz o çıkıyor yani bildiğiniz banka.Ama veri bankası :)

4-T TİPİ FF

  J-K Flip-Flopun J ve K girişleri birbirine bağlanarak elde edilen flip-flop
türüdür. J = K = 0 iken saat işareti uygulansa da çıkışlar durum değiştirmez. J=K= 1 olduğunda ise her tetikleme de çıkışlar bir önceki durumlarının tümleyenine dönüşürler. Flip-flop adını bu özelliğinden (toggle) alır.






















TABLOLARI ÇİZECEK ZAMANIM OLMADIĞINDAN AŞAĞIDAKİ KAYNAKTAN FAYDALANDIM..
EGE ÜNİVERSİTESİ
EGE MESLEK YÜKSEKOKULU
Yrd.Doç.Dr. MUSTAFA ENGİN Yrd.Doç.Dr. DİLŞAD ENGİN


















TUTUCU (LATCH)

TUTUCU DEVRELERİ

   Tutucu, Flip-Floptan ayrı olarak değerlendirilen çift kararlı bir veri saklama aygıtıdır.Flip-Floplarla tutucular arasındaki benzerlik,tutucunun da Flip-Flop gibi iki ayrı kararlı durumda bulunabilmesidir.
Tutucunun S (set) ve R (reset) adında 2 girişi Q ve Q' adında da 2 çıkışı bulunur.

   Flip-Floplarla tutucular arasındaki benzerlik,

tutucunun da Flip-Flop gibi iki ayrı kararlı durumda bulunabilmesidir.

S R Qn+1 Q'n+1 YORUM
0 0  Qn     Q'       Tutucu önceki durumunda kalır.
0 1  0        1         Tutucu sıfırlanır.
1 0  1        0         Tutucu kurulur.
1 1  1        1         TANIMSIZ

Doğruluk tablosu yukarıda görüldüğü gibidir.
  S=0,R=1 olduğunda sıfırlama, S=1,R=0 olduğunda kurma yapılır.

Spring Boot Uygulamasını Heroku üzerinde Deploy Etme

Bu yazımızda sizlere spring boot ile yazılmış basit bir Rest api'nin heroku üzerinde nasıl deploy edebileceğimizi göstereceğim. Önce ...