Jsp Implicit Object

Merhaba arkadaslar, bu yazımda JSP içerisinde’ki implicit objelere değineceğim.

Öncelikle implicit objelerin ne anlama geldiğini ve niçin kullanmamız gerektiğini anlamamız lazım. İmplicit objeler, Contaıner tarafından Jsp sayfalarının Servlet’lere translate edildiği aşamada service methodu içerisinde declarasyonunu yaptıgı ve assigment ile initalize ettiği toplam 9 objedir. İmplicit objeler sayesinde Servlet’in avantajlarından Jsp içerisinde yararlanabilir duruma gelirsiniz. İmplicit objeler Servlet/Jsp apisindeki bir obje ile eşleştirilir. Şöyle ki;

  1. out implicit objesi JspWriter objesi,
  2. request implicit objesi HttpServletRequest objesi,
  3. response implicit objesi HttpServletResponse objesi,
  4. session implicit objesi HttpSession objesi,
  5. application implicit objesi ServletContext objesi,
  6. config implicit objesi ServetConfig objesi,
  7. pageContext implcit objesi PageContext objesi,
  8. page implicit objesi Object objesi,
    tipindedir.

İmplicit objelerin servletteki karşılığı olan objelerin tamamına yakınını önceki yazılarımda anlatmıştım. Kullanımı oldukça benzer o yüzden hepsini teker teker anlatmayacağım. Örn; session üzerinden bir attribute response out’a yazdırılmak istenirse scriptlet yada expression içerisinde şu şekilde kullanılabilir;

config implicit objesi ServletConfig objesidir ve Jsp sayfasınına özgüdür. Jsp init() methodunu override edip istenilen yapıya göre jsp sayfası initalize edilebilir. Bunun için Servlette oldugu gibi web.xml içerisinde Jsp tanımı yapmak gerekmektedir;

İnitialize etmek için jsp init methodu override edelim;

Tabi dikkat edilmesi gereken nokta jspInit() methodonun declaration tag içerisinde tanımlanmış olmasıdır. Yoksa Jsp sayfası compile olmayacaktır.

Dediğim gibi servletteki kullanımlarına benzerdir, servlette nasıl kullanıyorsanız o sekil jsp içerisinde de kullanabiliriz.

PageContext implicit object

Hatırlayacağınız üzere attribute’ler için 3 scope level bulunmaktaydı. Bunlar; request, session ve application’dan oluşmaktaydı. Jsp implicit objeler ile 4.cü scope level ortaya çıkmaktadır. pageContext implicit obje sayesinde page-level scope oluşur. Ayrıca PageContext objesi diğer implicit objeleri de kapsuller, pageContext implicit objesi ile diğer implicit objeleri kullanabilirsiniz.

Not : Servlet içerisinde kullandığımız PrintWriter objesi ile JspWriter objesi aynı işlevi görmekle birlikte class hiyerarşi olarak aynı değillerdir. JspWriter, PrintWriter objesinin yaptığı çoğu şeyi yapabilmektedir. Birkaç istisna hariç(Buffer ayarlama gibi).

4 attribute scope level bulunduğunu söyledik. Servlet ve Jsp ‘de bunları nasıl yaparız ona bakalım;

 

   Servet

Application                    getServletContext.setAttribute(“foo”, fooObj);

Request                          request.setAttribute(“foo”, fooObj);

Session                           request.getSession().setAttribute(“foo”, fooObj);

Page                                Servlette page level scope bulunmaz!

     JSP

Application                   application.setAttribute(“foo”, fooObj);

Request                         request.setAttribute(“foo”, fooObj);,

Session                          session.setAttribute(“foo”, fooObj);

Page                               pageContext.setAttribute(“foo”, fooObj);

 

Page Context üzerinde attribute set ederken scope level da parametre olarak verebilirsiniz. Parametre olarak 4 scope verebilirsiniz;

  1. pageContext.setAttribute(“foo”, fooObj, PageContext.SESSION_SCOPE);
  2. pageContext.setAttribute(“foo”, fooObj, PageContext.APPLICATION_SCOPE);
  3. pageContext.setAttribute(“foo”, fooObj, PageContext.REQUEST_SCOPE);
  4. pageContext.setAttribute(“foo”, fooObj, PageContext.PAGE_SCOPE);

Yine page context üzerinden attribute get edince özel olarak şu scope’dan getir diyebiliriz;

pageContext.getAttribute(“foo”, PageContext.APPLICATION_SCOPE);

Peki attribute’ın hangi scope da oldugunu bilmiyorsak ne yapacağız? Bunun için findAttribute methodunu kullanabiliriz;

pageContext.findAttribute(“mail”);  mail attribute ilk olarak page scope içerisinde aranacaktır. Eğer bulunmazsa ise scope çözünürlüğü az’dan çoğa doğru sırasıyla aranacaktır. Page scope içerisinde bulunmazsa sırasıyla; request scope, session scope ve son olarak application scope içerisinde attribute aranacaktır.

 

Yazımı burada sonlandırıyorum arkadaslar.

~ Alican Akkus.

754 Total Views 3 Views Today