Servlet & JSP – 03 – HelloServletWorld

Merhaba Arkadaslar,

Onceki yazilarda temel kavramlari , Servlet’in ve Container’in gorevlerini inceledik. Bu yazida Apache Tomcat kurulumunu yapacagiz, ilk Servlet ornegimizi yazacagiz. Boylelikle Servlet dunyasina “HelloWorld” diyecegiz.

Bu yazilarimda Eclipse IDE , JDK 7 , Apache Tomcat 7 kullanacagim. Ben calismalarimi Ubuntu’da yapiyorum. Soz konusu Java oldugu icin isletim sisteminin bir onemi yok. Javaci arkadaslara linux dagitimlarini kurcalamalarini ve kullanmalarini tavsiye ederim. Bu kadar linux tavsiyesinden sonra biz konumuza donelim.

Apache Tomcat’i indirip bilgisayariniza kurup kullanabileceginiz gibi zip halini indirip su sekilde kurabilirsiniz.

Adim – 1
zip ve source code‘u indirip uygun bir dizinde acalim.

01 apache tomcat

Adim – 2
Eclipse’te Window sekmesinden — > Preferences –> Server —> Runtime Environments

02 runtime environments

Adim – 3
Sag ustte “Add” butonuna basalim karsimiza soyle bir menu gelecektir. Burada Apache Tomcat v7.0 ‘i secelim ve Next diyelim.

03 new server runtime environment

Adim – 4
Daha sonra Tomcat’i indirdigimiz dizini gosterelim. apache tomcat klasorumuzu Tomcat klasoru altina acmistim. Windows kullaniyorsaniz dilediginiz dizine klasoru acip gosterebilirsiz. Finish diyip islemi sonlandiriyoruz.

04 apache tomcat

Adim – 5
Islem basarili olduysa asagidaki gibi eklenmis olacaktir.

05 runtime environments

Kurulumumu basariyla gerceklestirdik.
Simdi yeni bir proje olusturacagiz. Bunun icin Eclipse IDE for Java EE Developers versiyonunu indirmis olmaniz gerekmektedir.

06 dynamic web project

Next –> dedikten sonra bir ayar degistirmeden yine Next diyoruz , proje ismine dilediginiz ismi verebilirsiniz ;

Project name : injavawetrust
Target runtime : Apache Tomvat v7.0
Dynamic web module version : 3.0

Daha sonrasinda tekrar Next–> Next–> dedikten sonra karsimiza su menu gelecektir. Burada Generate web.xml deployment descriptor checkbox’ini tikliyoruz ve Finish diyip islemi sonlandiriyoruz.

07 context root

Simdi de olusturdugumuz Dynamic Web Project’tinin yapisini inceleyelim.

08 project explorer

web.xml dosyamizi Eclipse araciligiyla otomatik olarak olusturmustuk. web.xml dosyasina Deployment Descriptor denilmektedir ve projemiz icin son derece onemli bir konfigurasyon dosyasidir.

WebContent klasor adinin, bir onceki resimdeki Content directory ismi olduguna dikkat edelim.

Projemize ekleyecegimiz ekstra jarlari lib klasoru altina ekleyecegiz.

Java siniflarimizi da Java Resources klasoru altina koyacagiz.

Diger dosyalar icin yeri geldikce bilgi verecegim. Simdilik yeni bir paket ve sinif olusturalim.

paket ismi : 01_HelloServletWorld
sinif ismi : HelloServletWorld

HelloServletWorld.java

package _01_HelloServletWorld;

import java.io.IOException;
import java.io.PrintWriter;
import java.util.Date;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class HelloServletWorld extends HttpServlet {

	@Override
	protected void doGet(HttpServletRequest req, HttpServletResponse resp)
			throws ServletException, IOException {

		PrintWriter pw = resp.getWriter();
		Date today = new Date();
		String msg = "HelloServletWorld";

		pw.print("<html><body> <h1>" + msg + "</h1>");
		pw.print("<p>today:" + today + "<p>");
		pw.print("<a href=	http://www.injavawetrust.com/>injavawetrust </a>");
		pw.print("</body></html>");

	}

}

Sinifimiz HttpServlet abstract/soyut sinifini kalitmaktadir. HttpServlet sinifi da yine abstract/soyut olan GenericServlet sinifini kalitmaktadir. Ilerleyen bolumlerde detayli olarak bu hiyerarsiyi inceleyecegiz.

getWriter metodu PrintWriter tipinde bir obje dondurecektir. PrintWriter sinifi yardimi ile browser’a veri yazabiliriz. Koda dikkat edecek olursak java kodu icerisine HTML kodu yaziyoruz evet bu pek hos degil , ilerleyen bolumlerde deginecegiz.

web.xml dosyamizin cok onemli konfigurasyon dosyasi oldugunu belirttim. Bu dosya sayesinde projemizde cesitli tanimlamalar, parametre ifadeleri yer almaktadir.

Olusturdugumuz Servlet’in tanimlamasini web.xml dosyamizda gerceklestirelim.

web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xmlns="http://java.sun.com/xml/ns/javaee"
	xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
	id="WebApp_ID" version="3.0">
	<display-name>injavawetrust</display-name>

	<servlet>
		<servlet-name>HelloServletWorld</servlet-name>
		<servlet-class>_01_HelloServletWorld.HelloServletWorld</servlet-class>
	</servlet>

	<servlet-mapping>
		<servlet-name>HelloServletWorld</servlet-name>
		<url-pattern>/helloservletworld</url-pattern>
	</servlet-mapping>

</web-app>

<web-app etiketindeki uzun etikete takilmamiza gerek yok, burada onemli olan <servlet> ve <servlet-mapping> etiketleridir.

<servlet> etiketi icerisinde <servlet-name> etiketi yer almaktadir. <servlet-name> de diledigimiz ismi verebiliriz , burada sinif ismi ile ayni ismi verdim fakat dilersek baska bir isim verebilirdik.

<sevlet-class> etiketi yardimi ile paketismi+sinif ismini yaziyoruz. Burada bir hata yapilirsa Servlet Container , Servlet sinifimizi bulamayacaktir.

<servlet-mapping> etiketinde <servlet-name> alanina url tanimlamasi yapacagimiz Servlet ismini veriyoruz. Burada dikkat ederseniz onceki tanimladigimiz <servlet-name> etiketindeki isim ile ayni isme sahip yani HelloServletWorld.

<url-pattern> etiketi yardimi ile Servlet’imiz icin url tanimlamasi yapiyoruz. / ile basladigina dikkat edelim.

HelloServletWorld sinifimiza sag tiklayalim Run as –> Run on Server ya da HelloServletWorld sinifimzda ctrl+F11 ile calistiralim.

Karsimiza gelen menude Finish i tiklayalim ve Servlet dunyasina giris yapalim.

08 run on server

Her sey yolundaysa projemiz sorunsuzca calisacaktir.

09 hello servlet world

URL’e dikkat ettigimizde 8080 portundan sonra  /injavawetrust gelmektedir, bu isim projemizi olustururken verdigimiz Context root ismidir. Bu ismin proje adi ile ayni olmasi gerekmiyor dilersek degistirebiliriz. Sonrasinda gelen /helloservletworld ise web.xml dosyamizda bu Servletimiz icin tanimladigimiz <url-pattern> e karsilik gelen isimdir.

Varsayilan olarak Tomcat 8080 portunu kullanir, bu portu ve kullandigi diger portlari degistirebiliriz.

Bu konulara tekrar donecegiz simdilik bu kadar bilgi yeterli olacaktir.

Bu bolumde Tomcat kurulumumuzu gerceklestirdik , basit bir Servlet olusturup gerekli duzenlemeleri web.xml dosyamizda nasil yapacagimizi ogrendik.

Burada bir kac noktaya deginmek istiyorum, Sevlet’ler MVC(Modev-View-Controller) yapisinda Controller gorevini ustlenirler. Yani bu basit ornekte ustlendigi View gorevine uygun degildir. Zaten print metodu icerisinde html kodlari yazmak cirkin ve yorucu bir yontemdir. Bunun yerine View gorevini JSP (Java Server Pages) ustlenmektedir.

Ikinci olarak Java Web’in amaci ciddi isler yapmaktir. Servlet, is yuku ceken ciddi, guvenligin onemli oldugu yapilarda kullanilmaktadir. Aklimiza belki bu basit ciktiyi html ile de yaparim ne gerek var demek gelebilir, tekrar ediyorum Servlet in asil amaci Controller gorevini yapmaktir ve Java Web projelerinin de asil amaci guvenligin agir is yukunun oldugu ciddi kurumsal projelerdir.

Yazimi burada sonlandiriyorum.
Herkese Bol Javali Gunler dilerim.
Be an oracle man , import java.*;
Levent Erguder
OCP, Java SE 6 Programmer
OCE, Java EE 6, Web Component Developer

Print Friendly, PDF & Email

Leave a Reply to seaya Cancel reply

Your email address will not be published. Required fields are marked *