Bu Sayfayı Paylaş:

Bilgi/Açıklama

Java Web

Web Programlamaya Giriş

Java'nın belki de Türkiye'de ve dünyada en çok kullanıldığı alan Web (Örün) ortamına yönelik programlamadır. Internet (Genelağ) ve Web'in yaygınlaşması internetten herhangi bir bilgisayara hizmet veren programların geliştirilmesine sebep olmuştur. ASP, PHP, Perl gibi diller bunun için yaratılmıştır. Tarayıcıdan yapılan bir isteğe bu dillerle program yazılarak cevap verilebilmektedir. Java'da bu işi Servlet (Sunucuk) adı verilen sınıflar yapar. Servlet normal bir Java sınıfıdır. Servlet'in içinde HTML kodları yazmak çok zor olmasından dolayı JSP (Java Server Pages - Java Sunucu Yaprakları) yaratılmıştır. JSP , HTML (veya başka bir dil) içine Java kodları gömülerek yapılmaktadır.

Java Enterprise Edition

Çok farklı yönü olan sunucu taraflı büyük çaplı projeler geliştirmek için kullanılan, bir çok standardın bir araya gelmesiyle oluşan Java sürümüne Java Enterprise Edition (Java Kurumsal Basım) adı verilir. Kısaca Java EE veya JEE adları da verilmektedir. Web projeleri için kullanılan Servlet, JSP, JSF gibi teknolojiler bu sürümün bir parçasıdır.
JEE, Java'nın çok katmanlı kurumsal uygulama geliştirme standardıdır. JEE, standart ve modüler bileşenlerden oluşan bir yapının karmaşık işlemler yapmadan, otomatik olarak geliştirilebilmesini sağlar. Çok sayıda makine, sunucu, veritabanı ve uygulamadan oluşan bir ortamın uyumlu çalışması için bir alt yapı oluşturur.
Sadece bir kaç kişilik bir ekibiyle geliştirilen basit uygulamalar, sadece bir veritabanı, bir sunucu ve az sayıda kullanıcıdan oluşan ağlar için yapılan sistemler için JEE çok anlamlı gelmeyebilir. Ancak çok sayıda veritabanı, çok sayıda makine, çok sayıda sunucu birbirinden farklı yeteneklere ve gereksinmelere sahip çok sayıda kullanıcıdan oluşan büyük sistemler için uygulama geliştirmek oldukça karmaşık bir hal almaktadır. Hatta, sistemden beklenen işlevler ve kullanıcı sayısı büyüdükçe basit mimariler bile tek makinenin tek sunucunun ve tek veritabanının kaldıramayacağı hale gelir. Bu durumlarda zorluk asıl işlevlerin gerçekleştirilmesinden daha çok birlikte bazı işlevlerin gerçekleştirilmesinde kullanılan bileşenlerin entegrasyonunda çıkmaktadır. Bu tip ortamlarda dağıtık (distributed) uygulama geliştirme kavramı devreye girmektedir. Dağıtık sistemler, bütün sistemin ayrı makinelere, hatta ayrı network'lere dağıtıldığı, birbirileriyle iletişim kuran bileşenlerden oluşan sistemlerdir. JEE, bu tip ortamlarda yapılacak işlemleri kolaylaştırmakta, hatta bazı işlemleri otomatik olarak yapmaktadır.
Java Enterprise Edition (Java EE - JEE) sürümleri ve yayınlanma yılları aşağıdaki gibi listelenebilir:
  • JEE 1.2 (1999)
  • JEE 1.3 (2001)
  • JEE 1.4 (2003)
  • Java EE 5 (2006)
  • Java EE 6 (2009)
  • Java EE 7 (2013)
  • Java EE 8 (2017?)

JEE standartlarını uygun JBoss Wildfly, Oracle (BEA) WebLogic, TomEE, Oracle (Sun) GlassFish gibi sunucular bulunmaktadır.
İnternet'ten veya Network'ten gelen istekleri cevaplandırmak için yaratılan programlara Servlet (Sunucuk) denir. Ancak bir istek yapıldığında Servlet'i çalıştıracak ve ürettiği sonucu kullanıcıya verecek bir programa ihtiyaç vardır. Bunu işi Application Server (Uygulama Sunucusu) veya JSP/Servlet Container (JSP/Sunucuk Kabı) programları yaparlar. Bugün en çok kullanılan JSP/Servlet Container'lardan biri Tomcat adlı üründür. TOMCAT bir Servlet'e veya JSP'ye yapılan istekte, Servlet veya JSP’in çalıştırılmasını sağlar. Biz Servlet ve JSP örneklerin hepsini TOMCAT üzerinde deneyeceğiz.

Bilgi/Açıklama

Java Servlet

HTTP protokolü ile gelen istekleri cevaplandırmak için HttpServlet (HTTP Sunucuğu) kullanmaktadır. HttpServlet nesneleri GET (edin) veya POST (gönder) ile gelen isteğe cevap verebilir. HTTP protokolü ile iki tür önemli istek gelebilir. Birinci istek GET istekleridir. Bu da istek URL'inin sonuna ? (question mark - soru işareti) ile parametreler girilerek yapılır. POST isteklerinde ise bilgi HTTP paketi içinde gönderilir. Kullanıcı tarafından görülmez. Aşağıda GET ve POST isteklerini aynı şekilde cevap veren bir Servlet örneği bulunmaktadır. Servlet cevap olarak HTML içinde "Hello Servlet" mesajı göndermektedir.
package com.fibiler;
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
@WebServlet("/HelloServlet")
public class HelloServlet extends HttpServlet {
  protected void processRequest(
      HttpServletRequest request,
      HttpServletResponse response) 
    throws ServletException, IOException 
  {
    response.setContentType("text/html");
    PrintWriter out = response.getWriter();
    out.println("<html>");
    out.println("<head>");
    out.println("<title>Servlet</title>");
    out.println("</head>");
    out.println("<body>");
    out.println("<h1>Hello Servet</h1>"); 
    out.println("</body>");
    out.println("</html>");    
    out.close();
  }
  // get request'lerine bu yöntem çağrılacak
  protected void doGet(
      HttpServletRequest request,   
      HttpServletResponse response) 
    throws ServletException, IOException 
  {
    processRequest(request, response);
  }
  // post request'lerde bu yöntem çağrılacaktır. 
  protected void doPost(
      HttpServletRequest request,
      HttpServletResponse response) 
    throws ServletException, IOException 
  {
    processRequest(request, response);
  }    
}
Örnekte doGet() (edinme yap) ve doPost() (gönderme yap) GET ve POST ile yapılan isteklerde çağrılan yöntemlerdir. İki istekte de processRequest() (isteği işle) yöntemi çağrılmaktadır. Bu yöntem cevap olarak bir HTML sayfası üretmektedir. HttpServletRequest (HTTP sunucuk isteği) nesnesi istek yapan kullanıcı hakkındaki bilgileri tutar. HttpServletResponse (HTTP sunucuk yanıtı) ise kullanıcıya verilecek cevap için kullanılır. Örnekteki processRequest() yöntemi içinde
PrintWriter out = response.getWriter();

ile out (dışarı) nesnesi alınarak tüm HTML kodu bu out nesnesine yazılır. Servlet 3.0 ve sonrası için @WebServlet("/HelloServlet") şeklinde bir Servlet tanımlanabilmektedir.

Bilgi/Açıklama

JSP

Servlet, Java kodu içine HTML kodu yazılarak çalışmaktadır. Bu da uzun HTML kodu üretilmesi gerektiğinde işleri zorlaştırmaktadır. Bu nedenle JSP (JavaServer Pages - Java Sunucu Yaprakları) ortaya çıkmıştır. JSP, HTML kodları içine Java kodları yazmanıza imkân vermektedir. Aslında JSP çalıştırma anında Servlet'e çevrilir. Aşağıda hello.jsp örneği vardır. Bu örnek görüldüğü gibi code:/html

<% out.print("Hello JSP"); %>

code/: HTML kodu içermektedir. Java kodları scriptlet (betikçik) <% ve %> arasına yerleştirilir. Örnekteki out (dışarı), Servlet'te code:/java PrintWriter out = response.getWriter(); code/: şeklinde aldığımız out nesnesidir. JSP'de bu nesne zaten alınmış bulunmaktadır. Ayrıca out gibi , response (yanıt), request (istek), session (oturum) gibi tanımlı nesneler de vardır. Görüldüğü gibi örnekte <% arasında %> code:/html <% out.print("Hello JSP"); %> code/: Java kodu yazılmıştır. Örneğin ekran çıktısı: image:/b:http://www.fibiler.com/dosya_Hello-JSP_99/:

Bilgi/Açıklama

JSP Request

Servlet veya JSP, kullanıcının yaptığı istekler hakkında bilgiyi HttpRequest (HTTP İsteği) sınıfından alırlar. JSP'de bu sınıftan nesne olarak request (istek) yaratılmıştır. Aşağıdaki örnekte bir HTML form bilgisi bir JSP'ye gönderilmektedir. Bu JSP, formdan doldurulan bilgiler almakta ve ekranda göstermektedir.
<html>
<body>
<form action="Login.jsp">
  Kullanıcı Adı: 
  <input type="text" name=username><br>
  Şifre: 
  <input type="text" name="password"><br>
  <input type="submit" value="giriş"> 
</form>
</body>
</html>
Ekran çıktısı: Yukarıdaki formun action (eylem) özelliği Login.jsp olarak ayarlanmıştır. Kullanıcı düğmeye tıkladığında bilgiler Login.jsp'ye gönderilecektir. Login.jsp :
<html>
<body>
<%
  String username=request
      .getParameter("username");
  String password=request
      .getParameter("password");
%>
  <h1>Hoşgeldin <%=username%>, 
  Şifreniz : <%=password%></h1>
</body>
</html>
Ekran çıktısı: Login.jsp'de , username ve password adında iki parametrenin değerleri alınır. Bu parametreler, username ve password form'daki yazı alanlarına verilen isimlerdir. Kullanıcının formda girdiği değer bu şekilde alınır ve ekranda gösterilir. Örneğin
<%=username%>
ifadesindeki <%= ve %>
<% out.println(username) %>
ile aynı anlama gelmektedir.
Ancak burada bir sorun vardır. Form bilgileri GET (Edin) ile gönderildiğinden
Login.jsp?username=ali&password=aaa
Login.jsp yukarıdaki gibi çağrılmaktadır. Görüldüğü gibi password parametresinin değeri gözükmektedir. Bunun yerine form bilgisi POST (Gönder) ile gönderilmesi gerekir.
<form action="Login.jsp" method=”POST”>

şeklinde method (yöntem) özelliği eklenirse bu sorun çözülür.



Bu Sayfayı Paylaş:

İletişim/Bize Yazın   mh@fibiler.com   Google+   Facebook   Twitter   fibiler@googlegroups.com
Her Hakkı Saklıdır
Bu sitede yayınlanan tüm bilgi ve fikirlerin kullanımından fibiler.com sorumlu değildir.
Bu sitede üretilmiş , derlenmiş içerikleri, fibiler.com'u kaynak göstermek koşuluyla kendi sitenizde kullanılabilirsiniz. Ancak telif hakkı olan içeriklerin hakları sahiplerine aittir