top of page

Java Servlet - ServletContext Kavrami

  • Writer: Sevdanur GENC
    Sevdanur GENC
  • Mar 6, 2012
  • 3 min read

Bu makalemizle Java Servlet’te ServletContext kavramini uygulamalarla birlikte inceleyecegiz. ServletContext yontemi ; Web uygulamalarinda Javax.Servlet.ServletContext arayuzune ait bir servlet olarak temsil eder. Bu arayuz sayesinde, web uygulama kaynaklarinin olusturdugu verileri ortak bir mekanizma sayesinde veri akisina uyacak seklinde duzenler. Ortak bir veri akisini saglayabilmesi icinde uygulama icerisindeki tum degiskenlere erismesi gerekiyor, bu sebeplede ServletContext arayuzu kullanilmaktadir. Uygulamamiza gecmeden once var olan projemizde yeni bir servlet sinifi olusturuyoruz. Ve ismini KontrolServlet02 veriyoruz. Uygulamamizin amaci, sayfamiz KontrolServlet01'de atayacagimiz bir degiskenle  servlet1'e yonlendirilcek. Servlet1'den yanit gelerek servlet2'ye ikinci bir degiskenle yonlendirilecektir. Bu uc arayuz icinde doGet metodlari ayni sekildedir, bizim inceleyecegimiz metod ise doPost'dur.

          KontrolServlet02'nin doPost metodunda yazan setAttribute ile talebimize herhangi bir oznitelik atayabiliyoruz. Bu atamada iki parametre onemlidir. Birisi ozniteligimize verecegimiz degisken ismi, digeri ise degiskenimizin tasiyacagi object sinifindan bir veri. getRequestDispatcher metodu ile talebi hangi servlet'e gonderecegimizi belirlemis oluyoruz.

            Servlet1'in doPost metodunda yer alan komutlarda ise, yine setAttribute ile talebimize bir oznitelik atiyoruz ve bunu getRequestDispatcher metodu ile baska bir servlet sayfasina yonlendiriyoruz. Diger ServletContext yapisi kullanilarak yapilan ornek ise, Proje icerisinde ki uygulamalarinin herhangi birisinden ulasilabilmesi icin atanmis bir degisken olacaktir. Ve bunu Servlet2'den okutturacagiz. Oznitelik atamanin kullanimi yine aynidir, bir degisken ismi ve onun alabilecegi object turunden bir veri. Hazir ServletContext ile projemizin herhangi bir yerinde tanimlanan degiskenlere ulasabilme konusuna deginmisken bir de Web.Xml icerisinde bir parametre tanimlayalim ve bunu sonrasinda Servlet2'den talep ettirip degiskenin icerigini gorelim.

      Web.XML konfigurasyon dosyasi icerisine ServletContext'e gonderecegimiz parametreleri Context-Param taglari icerisinde tanimliyoruz. Bunun icinde param-name taglari icerisinde degisken ismi belirtiyoruz. Ardindan param-value taglari arasinda degiskene verdigimiz verileri yaziyoruz.

                  Peki bu iki servlet'i de Servlet2'ye yonlendirdik. Sonuc olarak taleplerin hepsine karsilik verebilcek Servlet2'nin doPost metoduna ne yazacagiz? Oncelikle setAttribute ile atamis oldugumuz oznitelikleri karsilayacak ve sunacak olan getAttribute komutunu tanimlamis oldugumuz degisken isimleri ile birlikte yaziyoruz. Ekrana yazdirabilmemiz icinde PrintWriter sinifindan bir nesne uretip istemciye karsilik vermesini istiyoruz. Peki gelelim ServletContext'ler icin olusturdugumuz degiskenlerin yanitlarina ; setServletContext ile tanimladigimiz degiskeni getServletContext ile ServletContext arayuzunun metodlari sayesinde cekiyoruz ve getAttribute ile de setAttribute ile olusturmus oldugumuz degiskenin icerisinde ki verileri okuyabiliyoruz. Web.Xml' de olusturdugumuz Context-Param'i icerisindeki degiskenin sahip oldugu veriyi ise getInitParameter ile birlikte cekiyoruz. Sonuclari ekrana belirtmis oldugumuz yeni degiskenlerle birlikte string formatinda yazdiriyoruz.

KontrolServlet02.Java Komutlari ;

package Servlet; import java.io.IOException; import java.io.PrintWriter; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; @WebServlet(name = "KontrolServlet02", urlPatterns = {"/KontrolServlet02"}) public class KontrolServlet02 extends HttpServlet { protected void processRequest(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType("text/html;charset=UTF-8"); PrintWriter out = response.getWriter(); try { } finally { out.close(); } } @Override protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

           doPost(request,response);    

} @Override protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

request.setAttribute("degisken", "birinci degiskendir ve "

             + "kontrolservlet02'den servlet1'e gonderilir.");

     request.getRequestDispatcher("Servlet1").forward(request, response);

} @Override public String getServletInfo() { return "Short description"; } }

Servlet1.Java Komutlari ;

package Servlet; import java.io.IOException; import java.io.PrintWriter; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; @WebServlet(name = "Servlet1", urlPatterns = {"/Servlet1"}) public class Servlet1 extends HttpServlet { protected void processRequest(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType("text/html;charset=UTF-8"); PrintWriter out = response.getWriter(); try { } finally { out.close(); } } @Override protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

doPost(request,response);

} @Override protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

   getServletContext().setAttribute("application", "uygulama degiskeni'dir "

                + "servlet1'den servlet2'ye gonderiyor.");

        request.setAttribute("degisken2", "ikinci degiskendir ve "

                + "servlet1'den servlet2'ye gonderir.");

        request.getRequestDispatcher("Servlet2").forward(request, response);

} @Override public String getServletInfo() { return "Short description"; } }

Servlet2.Java Komutlari ;

package Servlet; import java.io.IOException; import java.io.PrintWriter; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; @WebServlet(name = "Servlet2", urlPatterns = {"/Servlet2"}) public class Servlet2 extends HttpServlet { protected void processRequest(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType("text/html;charset=UTF-8"); PrintWriter out = response.getWriter(); try { } finally { out.close(); } } @Override protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

     doPost(request,response);

} @Override protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

      PrintWriter writer = response.getWriter();

        writer.println(request.getAttribute("degisken").toString());

        writer.println(request.getAttribute("degisken2").toString());                

        String yazilimci = (String)getServletContext().getInitParameter("yazilimci");

        writer.println();

        writer.write(yazilimci);

        String uygulama = (String) getServletContext().getAttribute("application");

        writer.println();

        writer.write(uygulama);

} @Override public String getServletInfo() { return "Short description"; } }

Web.Xml Komutlari ;

<?xml version="1.0" encoding="UTF-8"?> <web-app xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" version="3.0"> <session-config> <session-timeout> 30 </session-timeout> </session-config>

<context-param>

     <param-name>yazilimci</param-name>

     <param-value>xml'den gelen yazilimci degiskeni</param-value>

    </context-param>   

</web-app>

Index.Jsp Komutlari ;

<%@page contentType="text/html" pageEncoding="UTF-8"%> <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>JSP Page</title> </head> <body> <h1>Servlet Konuları...</h1>

  <a href="KontrolServlet02?sayfa=Servlet1">Servlet1'den Servlet2'ye Geçiş Yap</a>   

</body> </html>

Ekran Goruntuleri ;

            Keyifli Calismalar Dilerim...

Recent Posts

See All
C# Dependency Injection

Dependency Injection (DI) aslinda bir tasarım şablonu olarak bilinmektedir ve genel amacı nesneler arasında bulunan bağımlılıkları azaltarak kullandığı İnterface'ler sayesinde implement edilen içerikl

 
 
 
Windows Azure Nedir?

Windows Azure, hizmet yönetim ortamlarını ve servislerini barındırarak geliştirilmiş bulut teknolojilerinin oluştuğu bir işletim sistemi gibi düşünülebilir. Windows azure, Microsoft veri merkezleri

 
 
 
Navigation - Navigasyon

Kullanıcıların Metro Style uygulamalarında kolay bir şekilde kullanabilmeleri ve sayfalar arası geçişleri daha sezgizel bir şekilde yapabilmeleri için geliştirilmiş bir yöntemdir. Bu özellik sayesinde

 
 
 

Comments


©2035 by Sevdanur Genc. Powered and secured by Wix

bottom of page