08 Request – 01

Merhaba Arkadaslar,
Bu yazimda javax.servlet.http.HttpServletRequest ve javax.servlet.ServletRequest arabirimlerinin bizim icin sagladigi metotlari inceleyecegiz. Bu metotlarin sayisi bir hayli fazla olmakla beraber burada bazilarini listeleyecegim ve bunlarin da bir kismini bu yazida inceleyecegiz.

ServletRequest

ServletRequest arabirimi javax.servlet paketi altinda bulunmaktadir.
ServletRequest arabiriminde tanimlanmis bazi metotlar sunlardir

public Object getAttribute(String name);
public Enumeration<String> getAttributeNames();
public int getContentLength();
public ServletInputStream getInputStream() throws IOException;
public String getParameter(String name);
public Enumeration<String> getParameterNames();
public String[] getParameterValues(String name);
public Map<String, String[]> getParameterMap();
public int getServerPort();
public int getLocalPort();
public int getRemotePort();

HttpServletRequest

HttpServletRequest arabirimi , ServletRequest arabirimini kalitir. Hatirlayacagimiz gibi Java da bir arabirim diger bir
arabirimi kalitabilir. HttpServletRequest , javax.servlet.http paketi altinda bulunur.
HttpServletRequest arabiriminde tanimlanmis bazi metotlar sunlardir.

public Cookie[] getCookies();
public String getHeader(String name);
public Enumeration<String> getHeaders(String name);
public int getIntHeader(String name);
public Enumeration getHeaderNames();
public String getContextPath();
public String getQueryString();
public HttpSession getSession();

Continue reading 08 Request – 01

12 Object Orientation – 03 Overridden

Merhaba Arkadaslar,
Bu yazimda Java da Overriding kavramindan bahsedecegim .Javada bir sinifi kalittigimizda (extends) ust sinifta bulunan bir metodu alt sinifta ezebiliriz/override. Hatirlayacagimiz gibi final olarak tanimlanan metotlar override edilemezler.

Test sinifimiz uzerinde devam edelim..

TestAnimals.java

class Animal {

        int height=15;
	static int size=10;

	public void eat() {
		System.out.println("Animal-Eat");
	}
	static void breathe() {
		System.out.println("Animal- Breath");
	}
}

class Bird extends Animal {

        int height=3;
	static int size=5;

	@Override
	public void eat() {
		System.out.println("Bird-Eat");
	}

	static void breathe() {
		System.out.println("Bird- Breath");
	}

	public void fly() {
		System.out.println("Bird-fly");
	}
}

public class TestAnimals {
	public static void main(String[] args) {
		Animal a = new Animal();
		Animal b = new Bird();
		Bird c = new Bird();
               //Bird d = new Animal();

		a.eat();
		b.eat();
		c.eat();

		a.breathe();
		b.breathe();
		c.breathe();

		//a.fly(); 
		//b.fly();
		c.fly();

		System.out.println(a.height + " "+ a.size);
		System.out.println(b.height + " "+ b.size);
		System.out.println(c.height + " "+ c.size);
	}
}
  • Bird sinifi Animal sinifini kalitmaktadir ve eat() metodunu ezmektedir. @Override notasyonunu kullanabiliriz.
  • static metotlar override edilmezler, tekrar tanimlanirlar /redefined.

Continue reading 12 Object Orientation – 03 Overridden

Apache Log4j Nedir ?

severity-levels-logging

Loglama Nedir? Loglama bir sistemin hareketlerini kaydeden bir yapıdır. Özellikle sistem yöneticileri ve hata gideren kullanıcılar ve hatta geliştiriciler için bir vazgeçilmezdir. Bir projede karşılaşılan hataları, akışları, performans sıkıntılarını ve son kullanıcının yaptğı işlemleri izleyerek, bunları anlık olarak yakalayıp düzeltmek için kullanılır. Logların anlamlı ve faydalı olabilmesi için ilk olarak kod içerisinde anlaşılır loglar yazılmalıdır.

Log4j nedir ?

Log4j Apache Software Foundation ın geliştirmiş olduğu bir loglama kütüphanesidir. (logging framework). Log4j kullanmak için log4j.jar dosyasında ve log4j tanımlarının yapıldığı properties dosyasına ihtiyaç bulunmaktadır. Bu properties dosyası standart olarak log4j.properties  yada log4j.xml dosyaları olabilir. Log4j java uygulamalarında kullanabileceğimiz java kütüphanesi iken log4php (PHP loglama), log4net (.NET loglama ), log4cxx (C++ loglama) versiyon ları bulunmaktadır.

Continue reading Apache Log4j Nedir ?

Maven Nedir, Nasıl Kullanılır?

mjanf

Merhaba arkadaşlar, bu yazımda size yakın zamanda kullanmaya başladığım oldukça faydalı ve kullanımı basit bir aracı anlatacağım. Maven, Ant ‘a bir alternatif olarak gösterilen aynı Ant gibi bir JDT(Java Development Tool) ‘dur. Ant ‘ın projeyle ilgili üst düzey bilgileri içermemesi ve kullanımı için oldukça uzun kodlar yazmayı gerektirmesi gibi nedenlerden dolayı Maven geliştirildi. Kısacası Maven ile Ant ‘ın yapabileceği her şey yapılabilir.

Ne işe yarar bu Maven?

Maven, proje geliştirirken proje içerisinde bir standart oluşturmamızı, geliştirme sürecini basitleştirmemizi, dokümantasyonumuzu etkili bir şekilde oluşturmamızı, projemizdeki kütüphane bağımlılığını ve IDE bağımlılığını ortadan kaldırmamızı sağlayan bir araçtır.

Apcahe Maven ile neler yapılabilir?

  • Proje yönetimini kolaylaştırabiliriz.
  • Belirli standartlar belirleyebiliriz.
  • Kütüphane bağımlılığı ortadan kalkar
  • Farklı IDE’ler içinde projenizi taşıyabilirsiniz.
  • Proje temelini başka bir projede kullanabiliriz.

Continue reading Maven Nedir, Nasıl Kullanılır?

11 Object Orientation – 02 Polymorphism (Polimorfizm)

Merhaba Arkadaslar,
Bu yazimda Java’nin can alici konusu olan Polymorphism /polimorfizm yani cok bicimlilik kavramindan bahsedecegim. Bir onceki yazimda bahsettigim uzere bir Java objesi birden fazla IS-A testini gecebilir.
Bir referans degiskeni sadece bir tek tipte olabilir ve tipi asla degismez.
Bir referans degiskeni, bir baska objeye atanabilir.
Bir referans degiskeni, class veya interface turunde olabilir.

Javada hatirlayacagimiz gibi bir sinif sadece tek bir sinifi kalitabilir (extends) , birden fazla arabirimi (interface) uygulayabilir (implements).

class B {
}

interface C {
}

public class A extends B implements C {
	void method1() {
		A a = new A();
		Object o = a;
		B b = a;
		C c = a;
	}
}

Continue reading 11 Object Orientation – 02 Polymorphism (Polimorfizm)

10 Object Orientation – 01 Encapsulation IS-A HAS-A

Merhaba Arkadaslar,
Bu yazimda Java da Encapsulation ,Inheritance , IS-A ve HAS-A kavramlarindan bahsedecegim.

Encapsulation
Encapsulation , sarmalama demektir, yani koruma demektir. Bu korumayi saglamak icin;

  • instance variable larimizi private olarak tanimlayalim.
  • public getter/setter metotlar ile ulasimi saglayalim.
  • getter/setter metotlar icin Java Standartlarinda isim kullanalim.

Bu uc maddeye dikkat edersek kodumuz esnek (flexibility) , bakimi kolay (maintainability) ve genislemeye acik (extensibiliyt) olacaktir.

Encapsulation olmayan durum;

class B {
	public int var1;
}

public class A {
	public static void main(String[] args) {
		B b = new B();
		b.var1 = -1;
	}
}

Continue reading 10 Object Orientation – 01 Encapsulation IS-A HAS-A

07 ServletContext

Merhaba Arkadaslar,
Bir onceki yazida ServletConfig ve metotlarini inceleik. Bu bolumde ise ServletContext arabiriminden ve metotlarindan bahsedecegiz.

ServletContext

Onceki yazida ServletConfig yardimi ile servletin init parametrelerine ulasmistik. Peki bu init parametreler sadece bir servlet icin degil tum uygulamamiz icin olamaz mi ? Tabi ki olabilir, bu init parametrelere de context init parameter denilir.

Context init parametreleri ayni servlet init parametreleri gibidir sadece tum servlet ve jsp dosyalari bu parametrelere ulasabilir.

Context init parametlerine ulasabilecegimiz metotlarla birlikte ServletContext icerisinde bir cok metot yer almaktadir. Bu bolumde bu metotlarin bir kismini inceleyecegiz.

public String getInitParameter(String name);
public Enumeration<String> getInitParameterNames();
public Object getAttribute(String name);
public Enumeration<String> getAttributeNames();
public void setAttribute(String name, Object object);
public void removeAttribute(String name);
public int getMajorVersion();
public String getServerInfo();
public String getRealPath(String path);
public String getServletContextName();
public String getContextPath();
public InputStream getResourceAsStream(String path);
public RequestDispatcher getRequestDispatcher(String path);

Her servlet icin bir ServletConfig objesi vardir.
Tum proje/wepapp icin sadece bir ServletContext objesi vardir.

Eger dagitik/distributed bir uygulamamiz varsa bu durumda her JVM icin bir ServletContext ve her JVMdeki ilgili Servlet objesi icin de bir ServletConfig objesi olacaktir.

Eger dagitik/distributed bir uygulamamiz varsa bu durumda her JVM icin bir ServletContext ve her JVMdeki ilgili Servlet objesi icin de bir ServletConfig objesi olacaktir.

Continue reading 07 ServletContext

09 Java Tricks

Merhaba Arkadaslar,
Bu yazimda onceki 8 yazimin ozeti seklinde olacaktir. Akilda tutulmasi gereken trickleri maddeler halinde paylasacagim.

Identifier(Belirtec)

  • Javada belirtecler harf, underscore (_) ve $ isareti ile baslayabilir. Rakam ile baslayamaz.
  • Ilk karakterden sonra rakam da kullanilabilir.
  • Isimlendirmede uzunluk sinirlamasi yoktur.
  • Java da camelCase yapisina uygun olarak isimlendirme kullanilir.

Deklarasyon Kurallari

  • Bir kaynak dosya (source file) sadece bir tek public class icerebilir.
  • public class ile kaynak dosyanin adi ayni olmak zorundadir.
  • Bir sinif sadece tek bir package ifadesine sahip olabilir , bir den fazla import kullanilabilir.
  • Bir kaynak dosya bir den fazla public olmayan sinif icerebilir.

Class Access Modifiers ( Sinif Erisim Duzenleyicileri)

  • Java da 3 adet access modifier vardir ; public , protected, private
  • Java da 4 adet access level vardir. public, protected, private ve default
  • Siniflar public veya default access e sahip olabilir.
  • Default access e sahip sinifa ayni paket altindaki tum siniflardan erisim saglanabilir.
  • public sinifa diger paketlerde bulunan siniflardan da ulasim saglanabilir.

Class NonAccess Modifier

  • Siniflar sunlari da alabilir ; final , abstract , strictfp
  • Bir sinif final ve abstract olamaz. Bu iki anahtar kelime hic bir sekilde yan yana gelemez.
  • final sinif kalitilamaz
  • abstract siniftan obje olusturulamaz.
  • abstract sinif hem abstract hem normal (concrete) metota sahip olabilir.

Continue reading 09 Java Tricks

08 Declare Var-Args

Merhaba Arkadaslar,
Bu yazimda Java da var-arg yapisindan bahsedecegim, bu yapi pek de bilinen bir yapi degildir ama kullanisli olabilecegi durumlar olabilir.

Oncelikle arguman ve parametre kavramindan bahsetmek istiyorum.

arguman (argument) ; Bir metodu cagirirken parantezler arasinda yazdigimiz ifadelerdir.

method1(''volkan'',23);

Burada volkan ve 23 ifadeleri birer argumandir.

parametre(parameter) ; Bir metodu tanimlarken , nasil cagirilacagini belirttigimiz tanimladigimiz ifadeler ise parametredir.

void method1(String name, int age)  { }

Bu metot String ve int turunde 2 adet parametre beklemektedir.

Continue reading 08 Declare Var-Args

06 – ServletConfig

ServletConfig

ServletConfig arabirimi/interface,  javax.servlet paketi/package altinda tanimlanmistir ve su metotlara sahiptir.

public String getServletName();
public ServletContext getServletContext();
public String getInitParameter(String name);
public Enumeration<String> getInitParameterNames();

Container, bir servleti ilk kullanima hazirladiginda(initialized) bu servlet icin bir ServletConfig olusturur. Yani her Servlet objesi icin birtane de ServletConfig objesi olusturulur.

ServletConfig objesi, deployment descriptor(web.xml )dosyasinda ilgili servlet icin tanimlanmis bilgilere ulasmak icin kullanilir. Bu bilgiler veritabanina baglanmak icin gereken bilgiler olabilir.

Bu tanimlanmis bilgilere Servlet Init Parameter adi verilir. Bu parametreler Servlet Container tarafindan , servlet lifecycle/yasam dongusunde sadece bir kez okunur.

Servlet Container bir daha bu init parametrelerini bir sonraki deploy islemine kadar okumaz.

Onceki yazida Servlet lifecycle(yasam dongusu) konusundan bahsetmistik. Simdi bu yasam dongusunde ServletConfig icin detaya inelim ;

Adim-1
Container , deployment descriptor(web.xml) dosyasini okur.

Adim-2
Container yeni bir ServletConfig instance/ornegi/objesi olusturur.

01-02

Continue reading 06 – ServletConfig