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.

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

*
*