Bilal Koçoğlu/ Ocak 6, 2019/ JSP

JSP Implicit Objects
(session – pageContext)

Merhaba arkadaşlar önceki derslerimizde JSP Implicit Object(örtülü nesne) konusuna giriş yapmış, daha sonra out – requestresponse – config – application nesnelerini incelemiştik. Bu dersimizde ise diğer implicit nesnelerden olan session ve pageContext ile devam edeceğiz.

Daha önce de belirttiğim gibi gördüğümüz her yeni implicit nesnenin örneğinde diğerlerini de kullanmaya çalışacağız. Böylece her birini daha fazla pekiştirme imkanımız olacak. Bu dersteki örnekleri, incelediğimiz nesnelere biraz daha alışmamız açısından daha uzun tutmaya çalışacağım. Aynı zamanda derslerin sonuna gelindiğinde tıpkı Servlet’te olduğu gibi tüm konuları içeren bir örnek inceleyeceğiz. Şimdi konumuza geçebiliriz.

1- session

JSP’de session, HttpSession türünde bir örtülü nesnedir. Örtülü nesneler, oluşturduğumuz tüm JSP sayfalarında web kapsayıcısı tarafından tanımlandığından bizim farklı bir tanımlama yapmamıza gerek yoktur.

pom.xml
web.xml
index.jsp
login.jsp

Bu sayfada kullanıcının girdiği kullanıcı adı ve şifreyi request nesnesiyle alıyoruz ve web.xml sayfasında tanımladığımız init parametrelerini application nesnesinden alıyoruz. Daha sonra varsayılan olarak atadığımız bilgilerle kullanıcının girdiği bilgileri karşılaştırıyoruz. if-else yapısında görüldüğü üzere araya html blokları yerleştirerek yapabiliyoruz. Böylece her iki senaryoda da(kullanıcının bilgileri doğru veya yanlış girmesi) kullanıcıya farklı yapılar gösterebildik.

home.jsp

Uygulamanızın doğru çalışıp çalışmadığını anlamamız açısından ekran görüntülerini de paylaşacağım. Aldığınız hataları yorumlarda bizimle paylaşabilirsiniz.

JSP Session - PageContext
JSP Session - PageContext
JSP Session – PageContext

Bilgileri doğru girdiğimizde ise;

JSP Session - PageContext
JSP Session – PageContext

Şimdi ise pageContext nesnemizi inceleyelim.

2- pageContext

JSP’de pageContext, PageContext sınıfından bir nesnedir. pageContext nesnesi, aşağıdaki nesnelere özellik eklemek, değerine erişmek ve çıkarmak için kullanılabilir;

  • page
  • request
  • session
  • application

Şimdiye kadar bu objelerden request, session ve application’ ı inceledik. ‘page’ örtülü nesnesini ise bir sonraki derste inceleyeceğiz.

Örneğe geçmeden önce pageContext’in nasıl kullanıldığından biraz bahsetmek istiyorum. Bir özellik eklemek için tıpkı diğer örtülü nesnelerde olduğu gibi setAttribute() methodunu, eklenmiş olan özelliklerin değerine(value) erişmek için getAttribute() ve özellik silmek için removeAttribute() methodlarını kullanıyoruz. Diğer nesnelerden farkı bu methodların üçüncü bir parametre olarak PageContext sınıfı içerisinde statik olarak tanımlanmış SCOPE’lardan birini almasıdır. Belirtmezsek default olarak page scope alınır.

Bu nesne için ayrı bir örnek yapmaya gerek duymuyorum. Çünkü pageContext nesnesini request, session, application veya page nesnesinden ayrı olarak düşünmek gereksiz. ‘pageContext’, tüm bu nesnelere erişmek için bir kısa yol gibi düşünülebilir. Şimdi nasıl kullanıldığı hakkında birkaç kod satırı incelediğimizde ne demek istediğim daha net anlaşılacaktır.

Örneğin session, application ve request nesnelerinden her birine bir özellik atamak istediğimizde, şayet pageContext kullanmazsak, yazmamız gereken satırlar şu şekildedir;

Aynı işlemi pageContext kullanarak yapmak istediğimizde ise;

Bu eklediğimiz özelliklere erişmek veya bunları silmek istediğimizde ise yine pageContext sayesinde iki alternatifimiz bulunmaktadır. Hepsi birbirine benzediğinden yalnızda session’da silme ve erişmeyi görelim;

Bununla birlikte aklınıza takılmaması açısından belirtmek isterim ki; başka bir sayfada pageContext ile session içine tanımladığınız özelliği illa pageContext ile çağırmanıza gerek yok. Bir yerde pageContext, bir yerde nesnenin kendisini kullanabilirsiniz.

Aklınıza takılan soruları ve karşılaştığınız hataları bizimle paylaşabilirsiniz. Bir sonraki derste page ve exception implicit nesnelerini inceleyeceğiz. Böylece implicit objects konusunu sonlandıracağız. İyi çalışmalar dilerim.

Bir Yorum Yapın

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

*
*