Servlet & JSP – 20 – jsp:useBean – 01

Merhaba Arkadaslar,
Bu bolumde su JSP action’larini inceleyecegiz ;

  • <jsp:useBean>
  • <jsp:getProperty>
  • <jsp:setProperty>

request implicit object & dispatch

Onceki bolumlerde JSP implicit objlerini ve dispatch konusunu incelemistik. Burada da kisaca bir ornek yapalim.

Person sinifimiz Java Bean yapisina sahip olacak . Burada dikkat edilmesi gereken nokta Person sinifinin varsayilan yapilandiricisi mutlaka tanimlanmalidir.

Person.java

package _10_UseBean.model;

public class Person{

	private String name;
	private String surname;
	private int year;

	public Person() {

	}

	public Person(String name, String surname, int year) {
		super();
		this.name = name;
		this.surname = surname;
		this.year = year;
	}

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

	public String getSurname() {
		return surname;
	}

	public void setSurname(String surname) {
		this.surname = surname;
	}

	public int getYear() {
		return year;
	}

	public void setYear(int year) {
		this.year = year;
	}
	
}

Servlet sinifimizda request scope’a  Person objesi ekleyelim ve sonrasinda requestImplicit.jsp sayfamiza dispatch yapalim.

UseBeanRequestImplicit.java

package _10_UseBean;

import java.io.IOException;

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

import _10_UseBean.model.Person;


public class UseBeanRequestImplicit extends HttpServlet
{
	@Override
	protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
	
		Person person1 = new Person("levent", "erguder", 1989);	
		req.setAttribute("myperson",person1);		
		
		RequestDispatcher view = req.getRequestDispatcher("04_UseBean/requestImplicit.jsp");
		view.forward(req, resp);
	
	}
	
}

Servlet tanimimizi yapalim ;

	<servlet>
		<servlet-name>UseBeanServlet</servlet-name>
		<servlet-class>_10_UseBean.UseBeanRequestImplicit</servlet-class>
	</servlet>

	<servlet-mapping>
		<servlet-name>UseBeanServlet</servlet-name>
		<url-pattern>/usebeanservlet</url-pattern>
	</servlet-mapping>

requestImplicit.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
	pageEncoding="UTF-8"%>

<%@page import="_10_UseBean.model.Person"%>

<!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=UTF-8">
<title>requestImplicit.jsp</title>
</head>
<body>

	<%
		Person person = (Person) request.getAttribute("myperson");
	%>

	<%=person.getName()%>
	<%=person.getSurname()%>
	<%=person.getYear()%>

</body>
</html>

Servlet sinifimizda ,request scope’a Person objesini ekledik.

req.setAttribute("myperson",person1);

JSP dosyamizda , request implicit objemiz uzerinden “myperson” attribute’ine ulastik.

UseBeanRequestImplicit servlet’imizi calistiralim;

  • Person objemiz request scope eklendikten sonra requestImplicit.jsp sayfasina request dispatch yapildi.
  • requestImplicit.jsp sayfasinda request implicit objesi ile bu request objesine ulastik.

<jsp:useBean> 

<jsp:useBean> action’i ilgili sinif tipinde ilgili scope’ta obje varsa ulasabiliriz. Eger obje yoksa <jsp:useBean> action’i yeni bir obje olusturacaktir.

UseBeanProperty.java

package _10_UseBean;

import java.io.IOException;

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

import _10_UseBean.model.Person;

public class UseBeanProperty extends HttpServlet {

	@Override
	protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
		Person person1 = new Person("levent", "erguder", 1989);
		req.setAttribute("myperson", person1);

		RequestDispatcher view = req.getRequestDispatcher("04_UseBean/useBean.jsp");
		view.forward(req, resp);

	}
}

	<servlet>
		<servlet-name>UseBeanProperty</servlet-name>
		<servlet-class>_10_UseBean.UseBeanProperty</servlet-class>
	</servlet>

	<servlet-mapping>
		<servlet-name>UseBeanProperty</servlet-name>
		<url-pattern>/usebeanproperty</url-pattern>
	</servlet-mapping>
  • UseBeanProperty sinifimizda Person objemizi request scope’a attribute olarak ekliyoruz.
  • Daha sonrasinda useBean.jsp dosyamiza dispatch islemi yapiyoruz.
	<jsp:useBean id="myperson" class="_10_UseBean.model.Person" scope="request">

	</jsp:useBean>
  • id alanina “myperson”  ismi verdik , bu UseBeanProperty servlet sinifimizda request scope a ekledigimiz Person objesinin attribute ismi.
  • Ayni id ismini birden fazla kullanamayiz , bu durumda derleme hatasi verir ; Duplicate local variable
  • class alanina Person sinifimizi yazdik.Burada packagename.classname olacak sekilde yazmamiz gerekli.
  • <jsp:useBean> icin varsayilan scope “page” scope/yasam alanidir. Servlet sinifimizda request scope’una attribute eklendigi icin burada da scope olarak request belirttik.

<jsp:getProperty>

	<jsp:getProperty property="name" name="myperson" />
	<jsp:getProperty property="surname" name="myperson" />
	<jsp:getProperty property="year" name="myperson" />
  • <jsp:getProperty> action’i ile attribute objemizin property alanlarina ulasabiliriz.
  • property alanina ulasmak istedigimiz instance variable’imizin ismini yaziyoruz.
  • property alanlarina ulasabilmek icin getter metodu olmalidir.
  • Person sinifinda name , surname , year property’lerimiz vardi.
  • name alanina ise <jsp:useBean> de kullanmis oldugumuz id degerini yazmamiz gereklidir.

 useBean.jsp

	
	<jsp:useBean id="myperson" class="_10_UseBean.model.Person" scope="request">
	</jsp:useBean>
	
	<jsp:getProperty property="name" name="myperson" />
	<jsp:getProperty property="surname" name="myperson" />
	<jsp:getProperty property="year" name="myperson" />

UseBeanProperty servlet sinifimizi calistiralim ;

  • UseBeanProperty sinifinda Person objesi olusturduk.
  • Olusturdugumuz bu Person objesini request scope’a attribute olarak verdik.
  • Daha sonrasinda useBean.jsp sayfasina gelen istegimizi dispatch ettik.
  • <jsp:useBean> action’i ile request scope’a eklenen bu objeyi aldik sonrasinda <jsp:getProperty> action’i ile bu objenin property alanlarina ulastik.

usebean property

<jsp:useBean> yeni bir bean olusturabilir. Eger <jsp:useBean> “myperson” isminde tanimlanan attribute objesini bulamazsa yeni bir Person objesi olusturur. JSP dosyamizin  .java dosyasina cevrilmis halini incelersek su kodlari gorebiliriz;

Ilgili attribute varsa eslestirilir yoksa (null) yeni bir Person objesi olusturulur ve “myperson” ismiyle request scope’a attribute olarak ekler.

 _10_UseBean.model.Person myperson = null;
      myperson = (_10_UseBean.model.Person) _jspx_page_context.getAttribute("myperson", javax.servlet.jsp.PageContext.REQUEST_SCOPE);
      if (myperson == null){
        myperson = new _10_UseBean.model.Person();
        _jspx_page_context.setAttribute("myperson", myperson, javax.servlet.jsp.PageContext.REQUEST_SCOPE);
        ....
      }

Olmayan bir request attribute icin test edelim. Su kodu jsp dosyamiza ekleyelim;

	<%-- jsp:useBean action'i eger obje yoksa olusturur! --%>
	<jsp:useBean id="thereIsNoBean" class="_10_UseBean.model.Person"
		scope="request">
	</jsp:useBean>

	<%-- jsp:useBean action'i Person tipinde obje olusturur. 
	instance degiskenler initialized olacaktir. --%>
	
	<jsp:getProperty property="name" name="thereIsNoBean" />
	<jsp:getProperty property="surname" name="thereIsNoBean" />
	<jsp:getProperty property="year" name="thereIsNoBean" />

useBean.jsp dosyamizin son hali ;

useBean.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
	pageEncoding="UTF-8"%>


<!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=UTF-8">
<title>requestImplicit.jsp</title>
</head>
<body>


	<%--<jsp:useBean> action'i id olarak  UseBeanGetProperty servlet sinifinda ekledigimiz attribute ismini verelim; person1  --%>
	<%--class alanina packagename.classname ismi veriyoruz. --%>
	<%--<jsp:useBean> action'i icin varsayilan scope page scope'tur.
	 Bizim ekledigimiz attribute request scope'ta bu nedenle acik bir sekilde/explicit scope belirtmeliyiz. --%>

	<jsp:useBean id="myperson" class="_10_UseBean.model.Person"
		scope="request">

	</jsp:useBean>


	<%-- <jsp:getProperty> action'i ile property alanlarina ulasabiliriz. 
 	property alanina bean sinifimizdaki field'leri veriyoruz.
 	property alanlarina ulasabilmek icin getter metodu olmalidir.
 	name alanina da jsp:useBean action'da kullandigimiz id bilgisini veriyoruz.
 	--%>

	<jsp:getProperty property="name" name="myperson" />
	<jsp:getProperty property="surname" name="myperson" />
	<jsp:getProperty property="year" name="myperson" />

	<br />

	<%-- jsp:useBean action'i eger obje yoksa olusturur! --%>
	<jsp:useBean id="thereIsNoBean" class="_10_UseBean.model.Person"
		scope="request">
	</jsp:useBean>

	<%-- jsp:useBean action'i Person tipinde obje olusturur. 
	instance degiskenler initialized olacaktir. --%>

	<jsp:getProperty property="name" name="thereIsNoBean" />
	<jsp:getProperty property="surname" name="thereIsNoBean" />
	<jsp:getProperty property="year" name="thereIsNoBean" />

</body>
</html>

UseBeanProperty servlet sinifimizi calistiralim;

  • Person objesi olusturulacak ve myperson isminde request scope’a attribute olarak eklenecek.
  • Daha sonrasinda servlet dosyamizdan useBean.jsp sayfasina dispatch islemi gerceklesecek.
  • thereIsNoBean isminde bir request scope attribute’u olmadigi icin <jsp:useBean> yeni bir Person objesi olusturacaktir.
  • Daha sonrasinda <jsp:getProperty> ile bu obje icin property alanlarina ulastigimizda degerler gelecektir. Hatirlayacagimiz gibi instance degiskenler icin varsayilan olarak deger atamasi olur.

<jsp:setProperty>

<jsp:setProperty> ile property alanlarina deger atamasinda bulunabiliriz. Test etmek icin yeni bir servlet ve jsp dosyasi olusturalim.

UseBeanSetProperty.java

package _10_UseBean;

import java.io.IOException;

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

import _10_UseBean.model.Person;

public class UseBeanSetProperty extends HttpServlet {

	@Override
	protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
		Person person1 = new Person("levent", "erguder", 1989);
		req.setAttribute("myperson", person1);

		RequestDispatcher view = req.getRequestDispatcher("04_UseBean/setProperty.jsp");
		view.forward(req, resp);

	}
}
  <servlet>
    <servlet-name>UseBeanSetProperty</servlet-name>
    <servlet-class>_10_UseBean.UseBeanSetProperty</servlet-class>
  </servlet>

  <servlet-mapping>
    <servlet-name>UseBeanSetProperty</servlet-name>
    <url-pattern>/usebeansetproperty</url-pattern>
  </servlet-mapping>
  • Benzer sekilde yine Person objesi olusturduk ve bu objeyi myperson isminde request scope’a attribute olarak ekledik.
  • Daha sonrasinda setProperty.jsp dosyasina gelen istegi dispatch ettik.

setProperty.jsp

	<%-- jsp:useBean action'i ilgili id ye sahip request bean attribute olmadigi durumda 
	yeni bir obje olusturur.--%>
	
	<jsp:useBean id="thereIsNoBean" class="_10_UseBean.model.Person"
		scope="request">		
	</jsp:useBean>
	
	
	<%-- jsp:setProperty action'i ile property alanlarina deger atamasinda bulunabiliriz.--%>	
	<jsp:setProperty property="name" name="thereIsNoBean" value="Kathy" />
	<jsp:setProperty property="surname" name="thereIsNoBean" value="Sierra" />
	<jsp:setProperty property="year" name="thereIsNoBean" value="1957" />


	<%--jsp:setProperty ile atadigimiz bu degerlere ulasalim. --%>
	
	<jsp:getProperty property="name" name="thereIsNoBean" />
	<jsp:getProperty property="surname" name="thereIsNoBean" />
	<jsp:getProperty property="year" name="thereIsNoBean" />

  • UseBeanSetProperty servlet sinifimizda sadece myperson isminde request scope attribute ekledik.
  • thereIsNoBean isminde bir request scope attribute yok. Dolayisiyla <jsp:useBean> yeni bir Person objesi olusturacaktir.
  • <jsp:setProperty> attribute’u ilgili property alanlarina karsilik gelen value alanlarini atayacaktir.
  • Daha sonrasinda <jsp:getProperty> ile <jsp:setProperty> action’ini kullanarak atamis oldugumuz bu degerlere ulastik.

Burada eger “thereIsNoBean” isimli bir attribute olsa , mevcut degerlerini override edip degistirecektir. Peki eger ilgili attribute objesi yoksa hem olusturup hem degeri nasil set edebiliriz ?

  • <jsp:setProperty> action’inini <jsp:useBean> action’i icinde ya da disinda kullanabiliriz.
  • <jsp:setProperty> eger <jsp:useBean> action’i icindeyse , ilgili request scope attribute objesi bulunmadiginda yani yeni bir obje olusturuldugu durumda calisir.Boylelikle mevcut objenin degerlerini override etmez.
	<%-- jsp:setProperty action'i jsp:useBean action i icinde ya da disinda kullanabiliriz. 
	jsp:useBean icinde kullandigimiz zaman eger yeni obje olusturulacaksa jsp:setProperty calisacaktir!
	jsp:useBean disinda kullandigimiz zaman obje olusturulsun ya da olusuturlmasin jsp:setProperty calisir.
	Bu durumda onceki property degerleri override edilir.
	--%>
	
	<jsp:useBean id="myperson" class="_10_UseBean.model.Person"
		scope="request">
		<jsp:setProperty property="name" name="myperson" value="Kathy" />
		<jsp:setProperty property="surname" name="myperson" value="Sierra" />
		<jsp:setProperty property="year" name="myperson" value="1957" />
	</jsp:useBean>

	<%--myperson icin jsp:setProperty calismayaacktir! myperson degerine sahip Person objesi request scope'ta mevcut 
	Bu nedenle yeni obje olusturulmaz dolayisiyla jsp:useBean icindeki jsp:setProperty calismayacaktir. --%>

	<jsp:getProperty property="name" name="myperson" />
	<jsp:getProperty property="surname" name="myperson" />
	<jsp:getProperty property="year" name="myperson" />

UseBeanSetProperty servlet sinifimizda myperson isminde request scope objesi olusturmustuk. Bu nedenle bu <jsp:useBean> icerisindeki <jsp:setProperty> calismayacaktir. Dolayiyisla myperson mevcut property degerlerini koruyacaktir.

setProperty.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
	pageEncoding="UTF-8"%>


<!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=UTF-8">
<title>requestImplicit.jsp</title>
</head>
<body>

	<%-- jsp:useBean action'i ilgili id ye sahip request bean attribute olmadigi durumda 
	yeni bir obje olusturur.--%>
	
	<jsp:useBean id="thereIsNoBean" class="_10_UseBean.model.Person"
		scope="request">		
	</jsp:useBean>
	
	
	<%-- jsp:setProperty action'i ile property alanlarina deger atamasinda bulunabiliriz.--%>
	
	<jsp:setProperty property="name" name="thereIsNoBean" value="Kathy" />
	<jsp:setProperty property="surname" name="thereIsNoBean" value="Sierra" />
	<jsp:setProperty property="year" name="thereIsNoBean" value="1957" />


	<%--jsp:setProperty ile atadigimiz bu degerlere ulasalim. --%>
	
	<jsp:getProperty property="name" name="thereIsNoBean" />
	<jsp:getProperty property="surname" name="thereIsNoBean" />
	<jsp:getProperty property="year" name="thereIsNoBean" />

	
	<br/>

	<%-- jsp:setProperty action'i jsp:useBean action i icinde ya da disinda kullanabiliriz. 
	jsp:useBean icinde kullandigimiz zaman eger yeni obje olusturulacaksa jsp:setProperty calisacaktir!
	jsp:useBean disinda kullandigimiz zaman obje olusturulsun ya da olusuturlmasin jsp:setProperty calisir.
	Bu durumda onceki property degerleri override edilir.
	--%>
	
	<jsp:useBean id="myperson" class="_10_UseBean.model.Person"
		scope="request">
		<jsp:setProperty property="name" name="myperson" value="Kathy" />
		<jsp:setProperty property="surname" name="myperson" value="Sierra" />
		<jsp:setProperty property="year" name="myperson" value="1957" />
	</jsp:useBean>

	<%--myperson icin jsp:setProperty calismayaacktir! myperson degerine sahip Person objesi request scope'ta mevcut 
	Bu nedenle yeni obje olusturulmaz dolayisiyla jsp:useBean icindeki jsp:setProperty calismayacaktir. --%>

	<jsp:getProperty property="name" name="myperson" />
	<jsp:getProperty property="surname" name="myperson" />
	<jsp:getProperty property="year" name="myperson" />

</body>
</html>


<jsp:useBean> class vs type

Yeni bir sinif olusturalim , bu sinifimizin Person sinifindan tek farki abstract olmasidir.

AbstractPerson.java

package _10_UseBean.model;

public abstract class AbstractPerson {

	private String name;
	private String surname;
	private int year;

	public AbstractPerson() {

	}

	public AbstractPerson(String name, String surname, int year) {
		super();
		this.name = name;
		this.surname = surname;
		this.year = year;
	}

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

	public String getSurname() {
		return surname;
	}

	public void setSurname(String surname) {
		this.surname = surname;
	}

	public int getYear() {
		return year;
	}

	public void setYear(int year) {
		this.year = year;
	}

}

yeni bir jsp dosyasi olusturalim ;

abstractUseBean.jsp

	<jsp:useBean id="myId" class="_10_UseBean.model.AbstractPerson" scope="request">
	</jsp:useBean>

abstract bir sinifi class alaninda kullanamayiz! Bu jsp dosyamiz bize derleme hatasi verecektir.
Cannot instantiate the type AbstractPerson 

<jsp:useBean> ‘de class alaninda sinif bilgisini yaziyoruz. Bu durumda class alani hem obje hem referans tipini belirlemis oluyor. Sinif eger abstract’sa bu durumda jsp dosyamizda derleme hatasina neden olacaktir.

Bu durumda yeni bir alan kullanabiliriz; type

type alani class alani olmadan kullanilabilir, fakat bu durumda ilgili attribute objesi ilgili scope’ta olmak zorundadir. Aksi durumda java.lang.InstantiationException firlatilacaktir.

abstractUseBeanTypeNoBean.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
	pageEncoding="UTF-8"%>


<!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=UTF-8">
<title>requestImplicit.jsp</title>
</head>
<body>

	<%--class attribute yerine type attribute de kullanilabilir.
	Bu durumda ilgili id'ye sahip request attribute ilgili scope'ta olmalidir.
	
	HTTP Status 500 - An exception occurred processing hatasi verecektir.
	
	 --%>

	<jsp:useBean id="thereIsNoBean" type="_10_UseBean.model.AbstractPerson" scope="request">
	
	</jsp:useBean>

</body>
</html>


JSP dosyamizi calistirdigimizda java.lang.InstantiationException hatasi aliriz.
JSP dosyamizin translate edilmis halini incelersek ;

      _10_UseBean.model.AbstractPerson thereIsNoBean = null;
      thereIsNoBean = (_10_UseBean.model.AbstractPerson) _jspx_page_context.getAttribute("thereIsNoBean", javax.servlet.jsp.PageContext.REQUEST_SCOPE);
      if (thereIsNoBean == null){
        throw new java.lang.InstantiationException("bean thereIsNoBean not found within scope");
      }

AbstractPerson sinifini kalitan yeni bir sinif olusturalim;

Employee.java

package _10_UseBean.model;

public class Employee extends AbstractPerson {
	
	private int empId;

	public Employee() {

	}

	public Employee(int empId,String name, String surname, int year) {
		super(name, surname, year);	
		this.empId = empId;
	}

	public int getEmpId() {
		return empId;
	}

	public void setEmpId(int empId) {
		this.empId = empId;
	}

}

UseBeanType.java

package _10_UseBean;

import java.io.IOException;

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

import _10_UseBean.model.AbstractPerson;
import _10_UseBean.model.Employee;
import _10_UseBean.model.Person;

public class UseBeanType extends HttpServlet {

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

		AbstractPerson person1 = new Employee(100, "levent", "erguder", 1989);	
		req.setAttribute("abstractperson", person1);

		RequestDispatcher view = req.getRequestDispatcher("04_UseBean/abstractUseBeanType.jsp");
		view.forward(req, resp);
	}
}

  • UseBeanType servlet sinifimizda AbstractPerson sinifi tipinde bir referans degisken tanimladik fakat objemiz Employee tipinde.
  • Daha sonrasinda benzer sekilde dispatch islemini gerceklestirdik.
	<servlet>
		<servlet-name>UseBeanType</servlet-name>
		<servlet-class>_10_UseBean.UseBeanType</servlet-class>
	</servlet>

	<servlet-mapping>
		<servlet-name>UseBeanType</servlet-name>
		<url-pattern>/usebeanType</url-pattern>
	</servlet-mapping>

abstractUseBeanType.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
	pageEncoding="UTF-8"%>


<!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=UTF-8">
<title>requestImplicit.jsp</title>
</head>
<body>


	<%--
	UseBeanType.java sinifimizda abstractperson isminde bir request attribute request scope'a ekledik.
	Employee IS-A AbstractPerson
	
	AbstractPerson person1 = new Employee(100, "levent", "erguder", 1989);	
		req.setAttribute("abstractperson", person1);
	
	 --%>

	<jsp:useBean id="abstractperson"
		type="_10_UseBean.model.AbstractPerson" scope="request">
	</jsp:useBean>

	<jsp:getProperty property="name" name="abstractperson" />
	<jsp:getProperty property="surname" name="abstractperson" />
	<jsp:getProperty property="year" name="abstractperson" />


</body>
</html>
  • class alani ile abstract bir sinif kullanamayiz.
  • type alani ile abstract bir sinif kullanabiliriz.
  • class object type , type referans type’a karsilik gelir.
  • type alani tek basina kullanilabilir. Sinif abstract olmasa bile yeni bir obje olusmaz.
  • class , eger obje yoksa yeni bir obje olusturur.
  • class ve type beraber kullanilabilir. Eger sadece class kullanilirsa bu durumda hem obje tipi hem referans degisken tipi class’ta tanimlanan sinif olur.

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 *