Tomcat üzerinde servlet geliştirme

Java ile web programlamaya başlarken yapılan ilk işlerden biri Servlet öğrenmeye başlamaktır. Bunun için hemen işe Tomcat kurup basit bir örnekle başlamak gerekiyor. Bu yüzden bir örnekle Tomcat ve Servlet ilişkisini anlatayım dedim. Buradaki çalışma sadece başlamak isteyenler için bir çalışmadır. Daha gelişmiş ve daha iyi Web programları geliştirmek için daha ayrıntılı incelemeler, okumalar ve çalışmalar yapılması gerekiyor. JSP, Struts, Hibernate, Spring, JSF kavramları daha karmaşık ve gelişmiş web programlama için öğrenilmesi gereken kavramlar. Benim bu yazıyı yazmdaki amacım çok basit web programlarını bireysel olarak geliştirecek olanlara başlamak için bir şeyler göstermek. Daha fazlası için maalesef iyi bir ingilizce ve bol bol kaynak gerekmektedir. Kısa bir sürede uzman olmak kolay değildir.

Gelelim ne Servleti yapacağımıza, çok basit bir örnekle başlayalım. HTML sayfasında girilen iki sayıyı toplayıp ekrana yazan bir Servlet örneği yapalım.
HTML geliştirmeyi en azından HTML sayfası yapmayı bildiğinizi varsayıyorum. HTML içerisindeki form nesnelerinin ne anlama geldiğini, POST-GET aktarımlarının ne demek olduğunu da bildiğinizi varsayıyorum. Bilmiyorsanız araştırmanızı tavsiye ederim. Bu konuyla ilgili olarak web betik (script) dillerinde de bunların bilinmesi gerekliliğinden dolayı bu konuyla ilgili (örneğin nasıl bir sayaç yaparım veya nasıl bir ziyaretçi defteri yaparım) gibi konularda işin HTML kısmında bunları açıklayan Türkçe kaynaklar bulabilirsiniz.

Tamam bu kadar açıklama yeter. Gelelim yapmamız gerekenlere.


Bize bir uygulama sunucusu gerekiyor. Uygulama sunucusu ürettiğimiz servletleri koyup çalıştırıp sunmamız için gerekmektedir. Elbette bunların çok daha karmaşık görevleride vardır ama bize gereken yapacağımız servleti çalıştırmak. Bu kadar basit. O zaman hemen kuralım. Ben
Tomcat 5.028 Core çalıştırılabilir Windows dosyasını indirip bilgisayara kurdum. Karşınıza şifre soran bir yer çıkacaktır. Buraya ne yazdığınızı unutmayın. Bu şifre işinize ileride yarayacaktır. Eğer belirtilen portta başka bir uygulama çalıştırmıyorsanız bırakın olduğu gibi kalsın. Değiştirdiğiniz port sizin servletlere erişeceğiniz porttur.

Hemen HTML dosyamızı yaratalım ve erişebileceğimiz bir yere koyalım.
İlk önce C:\Program Files\Apache Software Foundation\Tomcat 5.0\webapps dizinine bir deneme dizini yaratıyoruz. Altınada WEB-INF dizini yaratıyoruz. Daha sonra deneme dizini altında aşağıda gösterdiğim index.html dosyasını yaratıyoruz. HTML Dosyası:
<form action="Topla" method="post">
Birinci Sayi:<input name="sayi1" type="text"><br>
İkinci Sayi:<input name="sayi2" type="text"><br>
<input type="submit">
</form>

Daha sonra bu dosyanın çalışıp çalışmadığını kontrol edelim: tarayıcımızı açıp adres çubuğuna http://localhost:8080/deneme girelim ve deneyelim. Buradaki 8080 yerine eğer değiştirdiyseniz portu girin. Eğer herhangi bir şey açılmazsa Tomcat kapalı olabilir. O yüzden Tomcat servisini başlatalım. Taskbar'da Tomcat'in ikonu var ona sağ tıklayarak Start Service ile başlatabilirsiniz. Öyle bir şey bulamazsanız Başlat->Programlar->Apache Tomcat 5.0->Configure Tomcat diyebilirsiniz. Açılan pencereden Tomcat'in çalışma şeklini belirleyebilir (Ben manual tercih ediyorum, kullanmıyorken boşuna çalışmasın) başlatıp kapatabilirsiniz.
Eğer herşey doğru çalısırsa şu aşağıdaki resmi görmeniz gerekiyor:
Bunun anlamı Tomcat'i doğru kurduk ve çalıştırabildik. Tomcat'i kurduk ve çalıştırdık şimdi ne yapacağız? Elbette bizim sorgulama düğmesine tıklandığı zaman cevap verecek olan Servletimizi yazacağız.

Servletimiz ne yapacak?
HTML Sayfasından gelen iki sayıyı okuyacak ve bu sayıları toplayıp ekrana yazacak.

Çalışacak olan Servlet şu şekildedir:
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;

// Servletlerin hepsi HttpServlet nesnesinden turemelidir
// javax.servlet.* paketi C:\Program Files\Apache
// Software Foundation\Tomcat //5.0\common\lib dizini
// altinda servlet-api.jar kutuphanesidir.
// Bunu projelerin classpathine eklemek gerekli.

public class Topla extends HttpServlet {
// Form methodumuz post oldugu icin doPost metodunda karsiliyoruz
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {

try{
// request nesnesini formlardan gelen verileri okumak icin
// kullanabiliriz
// 1. Sayiyi okuyoruz formda verdigimiz name degerini aynen kullaniyoruz
int sayi1 = Integer.parseInt(request.getParameter("sayi1"));
// 1. Sayiyi okuyoruz formda verdigimiz name degerini aynen kullaniyoruz
int sayi2 = Integer.parseInt(request.getParameter("sayi2"));

int toplam = sayi1 + sayi2;

// response nesnesini cikti tipini vb. seyleri belirlemek icin
// kullaniriz
// Ciktimiz html tipinde olacak
response.setContentType("text/html");

// Ekrana yazmak icin out nesnesini kullaniyoruz
PrintWriter out = response.getWriter();
// Ekrana sonucu yazalim
out.println(sayi1 + "+" + sayi2 + "=" + toplam);
// yazma islemini bitirelim
out.flush();
out.close();
}catch(Exception e){
e.printStackTrace(response.getWriter());
}
}
}

Bu sınıfı doğru bir şekilde derledikten sonra oluşan Topla.class dosyasını daha önce oluşturmuş olduğumuz C:\Program Files\Apache Software Foundation\Tomcat 5.0\webapps\deneme\WEB-INF dizini altında oluşturduğumuz classes dizini altına kopyalıyoruz. Şimdi adres satırına http://localhost:8080/deneme/ girip HTML sayfasını açalım, sayıları girip sorgumuzu gönderelim. Sonuçta aşağıdaki sayfa gözükebilir:

Bunun anlamı Tomcat'in Servletimizi tanımamasıdır. Tanıtmak için WEB-INF dizinimizin altına web.xml dosyası oluşturup eklememiz gerekiyor. web.xml dosyası bizim Web uygulamamızın tanımlayıcısıdır. Onun içeriği aşağıdaki şekilde olmalıdır:
<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd">
<web-app>
<servlet>
<servlet-name>Topla</servlet-name>
<display-name>Topla</display-name>
<servlet-class>Topla</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>Topla</servlet-name>
<url-pattern>/Topla</url-pattern>
</servlet-mapping>
</web-app>

Bu dosyayı da yarattıktan sonra Tomcat Manager'dan (Kullanıcı adı ve şifreyi biliyorsunuz :) ) web uygulamamızı yeniden yükleyip Tomcat'in Servletimizi tanımasını sağlıyoruz. Aşağıdaki resimde başarılı giriş yaptığım Tomcat Manager var.

Herşey doğru çalıştıktan sonra Sorgulama yaptığımızda sayılar toplanıp ekrana basılacaktır. Aşağıda doğru çalışan uygulamanın resmi var:

Eğer yukarıdaki gibi bir doğru sonuç üreten uygulamanız olduysa tebrikler, ilk servletinizi başarıyla tamamladınız demektir. Darısı daha karmaşık işler yapabildiğiniz servletler yazmanıza.

Kaynaklar:Tomcat 5.0 Kullanıcı Belgesi
http://www.onjava.com/pub/a/onjava/2001/04/19/tomcat.html?page=1

2 yorum:

Adsız dedi ki...

yeni başladıgım jsp konusunda gercekten baslangıc ıcın ıyı bır uygulamacık...

Mustafa YILDIRIM dedi ki...

Hocam çok güzel bir örnek jsp ye başlamamda yardımcı oldu.