JSP Örtük nesne nedir?
- JSP örtük nesneleri, JSP'nin sunucu uygulamasına çeviri aşamasında oluşturulur.
- Bu nesneler, hizmet yöntemine giren betiklerde doğrudan kullanılabilir.
- Konteyner tarafından otomatik olarak oluşturulurlar ve nesneler kullanılarak erişilebilirler.
JSP'de kaç Örtük Nesne mevcuttur?
Kapsayıcıda 9 tür örtük nesne vardır:
- dışarı
- istek
- tepki
- yapılandırma
- uygulama
- oturum, toplantı, celse
- pageContext
- sayfa
- istisna
Teker teker çalışalım
dışarı
- Out, verileri arabelleğe yazmak ve yanıt olarak istemciye çıktı göndermek için örtük nesnelerden biridir.
- Çıkış nesnesi, sunucu uygulamasının çıkış akışına erişmemizi sağlar
- Out, javax.servlet.jsp.jspWriter sınıfının nesnesidir
- Servlet ile çalışırken, printwriter nesnesine ihtiyacımız var
Misal:
<% @ page language = "java" contentType = "text / html; charset = ISO-8859-1"pageEncoding = "ISO-8859-1"%>Örtülü Guru JSP1 <% int num1 = 10; int num2 = 20;out.println ("num1" + num1);out.println ("num2 is" + num2);%>
Kodun açıklaması:
Kod Satırı 11-12 - çıkış, çıktı akışına yazdırmak için kullanılır
Yukarıdaki kodu çalıştırdığımızda aşağıdaki çıktıyı alıyoruz:
Çıktı:
- Çıktıda num1 ve num2 değerlerini alıyoruz
İstek
- İstek nesnesi, java.servlet.http.HttpServletRequest'in bir örneğidir ve hizmet yönteminin argümanlarından biridir.
- Her istek için konteyner tarafından oluşturulacaktır.
- Parametre, başlık bilgisi, sunucu adı vb. Bilgileri talep etmek için kullanılacaktır.
- İstek parametresine erişmek için getParameter () kullanır.
Misal:
Implicit_jsp2.jsp (isteğin guru.jsp'ye gönderildiği form)
<% @ page language = "java" contentType = "text / html; charset = ISO-8859-1"pageEncoding = "ISO-8859-1"%>Örtülü Guru formu JSP2
Guru.jsp (işlemin yapıldığı yer)
Kod açıklaması:
Kod Satırı 10-13: implicit_jsp2.jsp (form) 'da istek gönderilir, dolayısıyla kullanıcı adı değişkeni işlenir ve JSP'nin eylemi olan guru.jsp'ye gönderilir.
Guru.jsp
Kod Satırı 10-11: Talebin işlendiği eylem jsp ve kullanıcı adı jsp formundan alınır.
Yukarıdaki kodu çalıştırdığınızda, aşağıdaki çıktıyı alırsınız
Çıktı:
Test yazıp gönder düğmesini tıkladığınızda, aşağıdaki "Hoş Geldiniz Testi" çıktısını alırsınız.
Tepki
- "Response", HttpServletResponse arayüzünü uygulayan bir sınıf örneğidir
- Konteyner bu nesneyi oluşturur ve parametre olarak _jspservice () yöntemine geçer
- Her istek için konteyner tarafından "yanıt nesnesi" oluşturulacaktır.
- Müşteriye verilebilecek yanıtı temsil eder.
- Yanıt örtük nesnesi içerik türü, tanımlama bilgisi eklemek ve yanıt sayfasına yönlendirmek için kullanılır.
Misal:
<% @ page language = "java" contentType = "text / html; charset = ISO-8859-1"pageEncoding = "ISO-8859-1"%>Örtülü Guru JSP4 <% response.setContentType ("text / html"); %>
Kodun açıklaması:
Kod Satırı 11: Yanıt nesnesinde içerik türünü ayarlayabiliriz
Burada sadece yanıt nesnesinde içerik türünü ayarlıyoruz. Dolayısıyla bunun için bir çıktı yok.
Yapılandırma
- "Config" java.servlet.servletConfig türündedir
- Her jsp sayfası için konteyner tarafından oluşturulur.
- Web.xml'deki başlatma parametresini almak için kullanılır.
Misal:
Web.xml (sunucu uygulamasının adını ve eşlemesini belirtir)
Implicit_jsp5.jsp (sunucu uygulaması adının değerini alma)
<% @ page language = "java" contentType = "text / html; charset = ISO-8859-1"pageEncoding = "ISO-8859-1"%>Örtülü Guru JSP5 <% String servletName = config.getServletName ();out.println ("Servlet Adı" + servletName);%>
Kodun açıklaması:
Web.xml'de
Kod Satırı 14-17: web.xml'de servletlerin sınıflara eşlemesine sahibiz.
Implicit_jsp5.jsp
Kod Satırı 10-11: JSP'de sunucu uygulamasının adını almak için, sunucu uygulamasının adını almamıza yardımcı olacak config.getServletName kullanabiliriz.
Yukarıdaki kodu çalıştırdığınızda aşağıdaki çıktıyı alırsınız:
Çıktı:
- Ad web.xml'de mevcut olduğundan, Servlet adı "GuruServlet" dir
Uygulama
- Uygulama nesnesi (kod satırı 10) bir javax.servlet.ServletContext örneğidir ve JSP'deki bağlam bilgilerini ve öznitelikleri almak için kullanılır.
- Uygulama nesnesi, uygulama dağıtıldığında, uygulama başına bir konteyner tarafından oluşturulur.
- Servletcontext nesnesi, servlet konteyneri ile etkileşim için kullanılan bir dizi metot içerir. Servlet konteyneri hakkında bilgi bulabiliriz.
Misal:
<% @ page language = "java" contentType = "text / html; charset = ISO-8859-1"pageEncoding = "ISO-8859-1"%>Guru Örtülü JSP6 <% application.getContextPath (); %>
Kodun açıklaması:
- Yukarıdaki kodda, uygulama özniteliği JSP sayfasının bağlam yolunu elde etmeye yardımcı olur.
Oturum, toplantı, celse
- Oturum "httpsession" nesnesini tutuyor (kod satırı 10).
- Oturum nesnesi, oturum kapsamının özniteliklerini almak, ayarlamak ve kaldırmak için kullanılır ve ayrıca oturum bilgilerini almak için kullanılır.
Misal:
Implicit_jsp7 (öznitelik ayarlanmış)
<% @ page language = "java" contentType = "text / html; charset = ISO-8859-1"pageEncoding = "ISO-8859-1"%>Örtülü JSP <% session.setAttribute ("kullanıcı", "GuruJSP"); %> Kullanıcı adını almak için burayı tıklayın
Implicit_jsp8.jsp (getAttribute)
<% @ page language = "java" contentType = "text / html; charset = ISO-8859-1"pageEncoding = "ISO-8859-1"%>örtük Guru JSP8 <% String name = (String) session.getAttribute ("kullanıcı");out.println ("Kullanıcı Adı" + ad);%>
Kodun açıklaması:
Implicit_jsp7.jsp
Kod Satırı 11: kullanıcı özniteliğini oturum değişkeninde ayarlıyoruz ve bu değer oturumdan hangi jsp çağrılırsa çağrılabilir (_jsp8.jsp).
Kod Satırı 12: href üzerinde set edilen user özniteliğinin değerini alacağımız başka bir jsp çağırıyoruz.
Implicit_jsp8.jsp
Kod Satırı 11: Kullanıcı özniteliğinin değerini oturum nesnesinden alıyoruz ve bu değeri görüntülüyoruz
Yukarıdaki kodu çalıştırdığınızda, aşağıdaki çıktıyı alırsınız:
Kullanıcı adı için bağlantıya tıkladığınızda. Aşağıdaki çıktıyı alacaksınız.
Çıktı:
- İmplicit_jsp7.jsp'de verilen bağlantıya tıkladığımızda ikinci jsp sayfasına, yani (_jsp8.jsp) sayfasına yönlendiriliriz ve kullanıcı özniteliğinin (_jsp7.jsp) oturum nesnesinden değeri alırız.
pageContext:
- Bu nesne, sayfa bağlamı türündedir.
- Öznitelikleri belirli bir kapsamdan almak, ayarlamak ve kaldırmak için kullanılır.
Kapsamlar 4 türdendir:
- Sayfa
- İstek
- Oturum, toplantı, celse
- Uygulama
Misal:
<% @ page language = "java" contentType = "text / html; charset = ISO-8859-1"pageEncoding = "ISO-8859-1"%>Örtülü Guru JSP9 <% pageContext.setAttribute ("öğrenci", "gurustudent", pageContext.PAGE_SCOPE);Dize adı = (Dize) pageContext.getAttribute ("öğrenci");out.println ("öğrenci adı" + adı);%>
Kodun açıklaması:
Kod Satırı 11: PageContext nesnesini kullanarak özniteliği ayarlıyoruz ve üç parametresi var:
- Anahtar
- Değer
- Dürbün
Yukarıdaki kodda, anahtar öğrenci ve değer, kapsam sayfa kapsamı iken değer "garantili" dir. Burada kapsam "sayfa" dır ve yalnızca sayfa kapsamını kullanabilir.
Code Line 12: pageContext kullanarak özniteliğin değerini alıyoruz
Yukarıdaki kodu çalıştırdığınızda, aşağıdaki çıktıyı alırsınız:
Çıktı:
- Çıktı "öğrenci adı gurustudent" yazacaktır.
Sayfa
- Sayfa örtük değişkeni, karşılık gelen jsp için geçerli olarak yürütülen sunucu uygulamacığı nesnesini tutar.
- Mevcut jsp sayfası için bu nesne görevi görür.
Misal:
Bu örnekte, toString yöntemini kullanarak sayfa adını almak için sayfa nesnesini kullanıyoruz.
<% @ page language = "java" contentType = "text / html; charset = ISO-8859-1"pageEncoding = "ISO-8859-1"%>Örtülü Guru JSP10 <% String pageName = page.toString ();out.println ("Sayfa Adı" + pageName);%>
Kodun açıklaması:
Kod Satırı 10-11: Bu örnekte, sayfa nesnesinin toString () yöntemini kullanmaya ve JSP Sayfasının dize adını almaya çalışıyoruz.
Kodu çalıştırdığınızda aşağıdaki çıktıyı alırsınız:
Çıktı:
- Çıktı, yukarıdaki jsp sayfasının dize adıdır
İstisna
- Özel durum, atılabilir sınıfın örtük nesnesidir.
- JSP'de istisna işleme için kullanılır.
- İstisna nesnesi yalnızca hata sayfalarında kullanılabilir.
Misal:
<% @ page language = "java" contentType = "text / html; charset = ISO-8859-1"pageEncoding = "ISO-8859-1" isErrorPage = "true"%>Örtülü Guru JSP 11 <% int [] num1 = {1,2,3,4};out.println (num1 [5]);%><% = istisna%>
Kodun açıklaması:
Kod Satırı 10-12 - Bir sayı dizisi vardır, yani dört öğeli num1. Çıktıda, dizi listesinde bildirilmeyen num1'den dizinin beşinci elemanını yazdırmaya çalışıyoruz. Bu yüzden jsp'nin istisna nesnesini almak için kullanılır.
Çıktı:
Beşinci elemanın num1 dizisini aldığımız dizide ArrayIndexOfBoundsException alıyoruz.