Servlet & JSP – 17 – Hello JSP

Merhaba Arkadaslar,
Bekledigimiz an geldi ! Sonunda JSP(Java Server Pages) konusuna giris yapacagiz.
Vakit kaybetmeden baslayalim ;

JSP sayfasi HTML kodu icerisinde Java kodu iceren dinamik bir web sayfasidir. Java kodu HTML kodu icerisinde gomulu olsa da kullanicilarin bundan haberi yoktur. Tum kodlar HTML koduna donusturulur.

JSP dunyasina merhaba diyelim ve adim adim ilerlemeye baslayalim ;

Hello JSP

Servlet Container , JSP dosyalarini servlet siniflarina donusturur(.java uzantili dosya) bu isleme translate denilir. Daha sonra .java uzantili dosya compile edilir ve .class uzantili dosya olusturulur.

Bu .class uzantili dosyalarimiz ayni diger servlet .class dosyalarinin calistigi gibi calisir, loading islemine tabi tutulur vb.

JSP lifecycle/yasam dongusu konusuna tekrar deginecegim burada sadece bilmemiz gereken JSP dosyalarimizin .java uzantili dosyaya translate edildigi sonrasinda ise .class dosyasina compile edildigidir.

translate compile jsp

Oncelikle JSP scripting language konusuna deginecegiz. JSP scripting language te kullanilan JSP taglari ;

  • JSP Scriptlet
  • JSP Directives
  • JSP Expression
  • JSP Declaration
  • JSP Action
  • JSP Comment

WebContent altinda yeni bir klasor ve JSP dosyasi olusturalim. WebContent uzerinde sag tiklayip New–> Folder ve New–>JSP File ile bu islemi yapabiliriz. Eger bu menuleri goremiyorsaniz New–> Other… ‘i secip menuden bulabilirsiniz.

JSP dosyalari kucuk harfle baslamali ve camelCase isimlendirme notasyonunu kullanmalidir.

Code Conventions for the JavaServer Pages

01_HelloJSP
helloJSP.jsp

JSP Scriptlet

Hatirlayacagimiz gibi Servlet siniflarimizda Java kodu icerisine HTML kodlari yaziyorduk. JSP’lerde ise HTML kodlari arasina Java kodu yazacagiz. Scriptlet yardimi ile Java kodumuzu HTML arasinda yazabiliriz.

Scriptlet genel formati;

<% Java Code %>

Ornek Scriptlet kodumuz;

	<%
		System.out.println("Java Scriptlet arasinda Java kodumuzu yazabiliriz");
		for (int i = 0; i < 5; i++) {
			System.out.println("i:" + i);
			out.println("i:" + i);
		}
	%>

Dikkat edecek olursak bildigimiz java kodlari yazdik. Burada out objesi JSP implicit objesidir, ilerleyen bolumlerde implicit objeleri inceleyecegiz. out referans degiskeni javax.servlet.jsp.JspWriter tipindedir ve tarayicimiza cikti yazmak icin kullanilir.

JSP Directives

JSP directive 3 tanedir, burada oncelikle @page directive’ini inceleyecegiz.
@page directive’i ile JSP dosyamiza import islemi yapiyoruz. Birden fazla import yapmak icin araya virgul koyabiliriz.

<%@ page import="java.util.List,java.util.ArrayList" %>

JSP dosyamiza List arabirimini ve ArrayList sinifini import ettik. Dolayisiyla JSP dosyamizda bunlari kullanabiliriz.
Yukaridaki import islemi herhangi bir Java sinifinda su import islemiyle aynidir ;

import java.util.List;
import java.util.ArrayList;

Diger directive’leri ilerleyen bolumlerde yeri geldikce inceleyecegiz.

<%@ include ... %>
<%@ taglib ... %>

JSP Expression

Expression yardimi ile out.println(); yapmak yerine direkt olarak tarayiciya istegidimiz degeri yazdirabiliriz.

Genel format;

<%=expression %>

Burada dikkat etmemiz gereken noktalar ;

  • expression olmasi icin esittir (=) olmali aksi halde scriptlet olur.
  • expression’in sonuna noktali virgul yer almaz !
  • kucuktur isareti ile < esittir arasinda bosluk olmamali !
	<% 
		String name="Levent";
		int age =24;
		out.println(name);
		out.println(age);
	%>

	<%=name %>
	<%=age %>

Scriplet icerisinde name ve age adinda 2 degisken tanimladik ve bunlari expression’da kullandik.

<%=name %>
aslinda
out.print(name);

donusumu olmaktadir, dolayisiyla noktali virgul koyarsak su sekilde olacaktir. Sonuc olarak derleme hatasi verecektir. Bir sonraki bolumde bu konuyu implicit objelerle birlikte inceleyecegiz.

out.print(name;);

Gecerli bazi expression ornekleri ;

	<%= 24 %>
	<%= "24" %>
	<%= new String("Levent") %>
	<%= 10*20 %>
	<%= false %>
	<%= 5>2 %>

Scriptlet ve expression icerisinde yazdigimiz kodlar aslinda bir metot icerisinde yer almaktadir. Daha dogrusu basta belirttigim Java sinifina donusturulme isleminde butun bu scriptlet ve expression kodlari _jspService metodu icerisinde yer alacak sekilde translate islemine tabi tutulacaktir.

Ayni metotta ayni isimde 2 degisken tanimlayamayiz dolayisiyla scriptlet icin de bu durum gecerlidir;

<%
.....
   String test="test";
....
%>
<%
....
   String test="test"; 
....
%>

Bize Duplicate local variable name derleme hatasi verir;

Unutmayalim tum scriptlet ve expression kodlari _jspService metotunda yer alacak sekilde translate edilir ve scripletlerde tanimlanan degiskenler local degiskenlerdir.

Peki instance variable nasil tanimlariz , bunun icin yeni bir elemana ihtiyacimiz var.

JSP Declaration

JSP Declaration araciligiyla metot veya instance variable tanimlayabiliriz. Dolayisiyla translate isleminde bu kodlar _jspService metotunun disinda olacak sekilde isleme tabi tutulacaktir.

<%! instance variable/sinif degiskeni(static variable)
    ve/veya metot tanimi yapilabilir
 %>

basit bir metot ve instance variable kullanimi;

<%=addNumber(5,5)%>

	<%!

	public int addNumber(int n1, int n2) {
		sum = n1 + n2;
		return sum;
	}
	private int sum = 0;

	%>

<br>
<%=addNumber(5,10)%>

Yuzde isaretinden sonra unlem isareti ekledigimize dikkat edelim.
Java metodumuzu bu sekilde yazabiliriz ve kullanabiliriz.

JSP Action

JSP action ; xml yapisinda tanimlanir. Dinamik olarak dosya import etmek , baska bir jsp sayfasina forward islemi yapmak gibi islerde kullanilabilir. Ilerleyen bolumlerde detayli olarak inceleyecegiz.

Genel format;

<jsp:action_name attribute="value" />

JSP Comment

Yuzde isaretinden sonra — ile yorum satiri ekleyebiliriz. Bu yorum satiri HTML yorum satirlari gibi tarayicida gozukmez.

<%--JSP yorum satiri --%>

HTML yorum satiri;

<!-- HTML yorum satiri -->
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
 pageEncoding="ISO-8859-1"%>

<!-- HTML yorum satiri -->
<!-- @ page satiri JSP dosyasini olusturdugumuzda gelmektedir. 
Burada encoding ve charset ayari yapabiliriz. -->

<%@ page import="java.util.List,java.util.ArrayList"%>
<!--JSP dosyamiza import islemi yapabiliriz. 
Birden fazla import islemi icin araya virgul koyabiliriz.-->

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
   <head>
        <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
        <title>Insert title here</title>
   </head>
   <body>
   <!-- JSP Scriptlet kodumuz! -->
   <%
       System.out.println("Java Scriptlet arasinda Java kodumuzu yazabiliriz");
       for (int i = 0; i < 5; i++) {
           System.out.println("i:" + i);
           out.println("i:" + i);
       }

       List<String> testList = new ArrayList<String>();
       testList.add("levent");
  %>

       <br>
       <%
       String name = "Levent";
       int age = 24;
       out.println(name);
       out.println(age);
       %>
       <br>
 
       <!--JSP Expression -->
 
      <%=name%>
      <%=age%>

      <br>
      <%=addNumber(5, 5)%>

      <!-- JSP Declaration -->
 
      <%!public int addNumber(int n1, int n2) {
         sum = n1 + n2;
         return sum;
      }

      private int sum = 0;%>

      <br>
      <%=addNumber(5, 10)%>

      <%--JSP yorum satiri --%>

   </body>
</html>

JSP dosyamizi calistirip sonuclari gorebiliriz.

hello.jsp

Eclipse Console’da;

Java Scriptlet arasinda Java kodumuzu yazabiliriz
i:0
i:1
i:2
i:3
i:4

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

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