Servlet & JSP – 19 – JSP Attribute

Merhaba Arkadaslar,
Bu yazida JSP’de attribute kavramini inceleyecegiz.

JSP Attribute

Servlet ile calisirken attribute kavramini inceledik. Hatirlayacagimiz gibi context, session ve request scopelari ile attribute kullanabilecegimizi gormustuk. JSP de ise bu scope’lara ek olarak Page scope yer almaktadir.
Asagidaki kodlarda JSP implicit objelerini gorebiliriz;
application , request, session ve pageContext

  • application –> ServletContext objesidir.
  • request –> HttpServletRequest objesidir.
  • session –> HttpSession objesidir.
  • pageContext –> PageContext objesidir.
Application Scope

Servlet---> getServletContext().setAttribute("foo",barObj);
JSP ------> application.setAttribute("foo",barObj);

Request Scope

Servlet---> request.setAttribute("foo",barObj);
JSP ------> request.setAttribute("foo",barObj);

Session Scope

Servlet---> request.getSession().setAttribute("foo",barObj);
JSP ------> session.setAttribute("foo",barObj);

Page Scope

JSP ------> pageContext.setAttribute("foo",barObj);

pageContext objesiile herhangi bir scope’tan attribute’e ulasabiliriz.

public abstract class JspContext 

getAttribute(String name)
getAttribute(String name, int scope)
getAttributeNamesInScope(int scope)
findAttribute(String name)

public abstract class PageContext extends JspContext

public static final int PAGE_SCOPE = 1;
public static final int REQUEST_SCOPE = 2;
public static final int SESSION_SCOPE = 3;
public static final int APPLICATION_SCOPE = 4;

public abstract ServletRequest getRequest();
public abstract ServletConfig getServletConfig();
public abstract ServletContext getServletContext();
public abstract HttpSession getSession();

Ornek Uygulama

WebContent altina yeni bir klasor ve 2 JSP dosyasiyla 1 html dosyasi olusturacagiz.
03_Attribute
attribute.html
attribute1.jsp
attribute2.jsp

attribute.html

<html>
<body>

	<a href="attribute1.jsp">attribute1</a>
	<br>
	<a href="attribute2.jsp">attribute2</a>
</body>
</html>

attribute1.jsp

Bu JSP dosyamizda , JSP Scriplet kodumuz icinde attribute ekleyelim ve bu attribute’lere ulasalim.

	<%
		Integer num1 = 10;
		Integer num2 = 15;
		Integer num3 = 20;
		Integer num4 = 25;
		Integer num5 = 30;

		pageContext.setAttribute("num1", num1);
		pageContext.setAttribute("num2", num2, PageContext.SESSION_SCOPE);
		pageContext.setAttribute("num3", num3, PageContext.APPLICATION_SCOPE);

		session.setAttribute("num4", num4);
		request.setAttribute("num5", num5);

		System.out.println("attribute1.jsp");
		System.out.println("Page Scope:" + pageContext.getAttribute("num1"));
		System.out.println("Session Scope:" + pageContext.getAttribute("num2", PageContext.SESSION_SCOPE));
		System.out.println("Session Scope - session:" + session.getAttribute("num2"));
		System.out.println("Application Scope:" + pageContext.getAttribute("num3", PageContext.APPLICATION_SCOPE));
		System.out.println("Application Scope - application:" + application.getAttribute("num3"));
		System.out.println("Session Scope :" + session.getAttribute("num4"));
		System.out.println("Request Scope :" + request.getAttribute("num5"));
		System.out.println("Find Attribute:" + pageContext.findAttribute("num2"));
	%>

num1 –> Page Scope
num2 –> Session Scope
num3 –> Application Scope ‘a ekledik.

Burada dikkat edersek , pageContext objemiz uzerinden attribute ekledik. Metoda verdigimiz parametreler sayesinde ilgili scope’a attribute objemizi ekliyoruz.

PageContext.SESSION_SCOPE –> Session Scope’a
PageContext.APPLICATION_SCOPE –> Application Scope’a eklemektedir.

Session scope’a session implicit objesini kullanarak da attribute ekleyebiliriz.

session.setAttribute("num4", num4);

Benzer sekilde request implicit objesini kullanarak request scope’a attribute ekleyebiliriz.

Ekledigimiz attribute objelerine ulasmak icin implicit objelerini kullanabiliriz ya da pageContext objemiz uzerinden ulasabiliriz.
Application Scope’e ekledigimiz attribute objemize su sekilde ulasabiliriz. Ikisi de ayni anlama gelmektedir.

pageContext.getAttribute("num3", PageContext.APPLICATION_SCOPE)
application.getAttribute("num3")

Session Scope’a ekledigimiz attribute objemie su sekilde ulasabiliriz.

pageContext.getAttribute("num2", PageContext.SESSION_SCOPE)
session.getAttribute("num2")

findAttribute metodu nerede arayacak ? Ilk olarak Page Context scope’a bakacak eger bulamazsa sirasiyla request,session ve application scope’a bakacaktir.

pageContext.findAttribute("num2");

attribute2.jsp

 <%

	System.out.println("attribute2.jsp");
	System.out.println("Page Scope:" + pageContext.getAttribute("num1"));
	System.out.println("Session Scope:" + pageContext.getAttribute("num2", PageContext.SESSION_SCOPE));
	System.out.println("Session Scope - session:" + session.getAttribute("num2"));
	System.out.println("Application Scope:" + pageContext.getAttribute("num3", PageContext.APPLICATION_SCOPE));
	System.out.println("Application Scope - application:" + application.getAttribute("num3"));
	System.out.println("Session Scope :" + session.getAttribute("num4"));
	System.out.println("Request Scope :" + request.getAttribute("num5"));
	System.out.println("Find Attribute:" + pageContext.findAttribute("num2"));

 %>

attribute.html dosyamizi calistirip , attribute1 linkine tiklayalim sonra geri gelip attribute2 linkine tiklayalim ;

attribute1.jsp
Page Scope:10
Session Scope:15
Session Scope - session:15
Application Scope:20
Application Scope - application:20
Session Scope :25
Request Scope :30
Find Attribute:15
attribute2.jsp
Page Scope:null
Session Scope:15
Session Scope - session:15
Application Scope:20
Application Scope - application:20
Session Scope :25
Request Scope :null
Find Attribute:15

Session devam ettigi icin session scope’a eklenen attribute objelerimize ulasabiliriz. Request Scope’a ekledigimiz attribute objelerine ise ulasamadik.

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 *