Mehmet Ethem SULAN :: Servlet ve JSP(Java Server Pages) :: Servlet içinde ServletContext ile Global Değişken Tanımlama

ServletContex Uygulama içindeki tüm servlet ve jsp’lerce erişilebilen bir değişken tanımlamak için ServletContex olarak tanımlanır.Bunu 2 şekilde tanımlayabiliriz. Birincisi we.xml ayar dosyasında etiketi arasında tanımlamak.Ikincisi yöntem ise değişkeni ServletContext context=this.getServletContext(); context.setAttribute(“herhangi biri isim”, global yapmak istediğiniz değişken); getAttribute(“verilen isim”); global isme ait değeri çevirir.Mesela uygulamada kullanıcı adı ve mail i global yaptım.Bu örnek ikinci şekilde gerçekleştirilmiş.

<%@page contentType="text/html" pageEncoding="UTF-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">

<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
JSP Page
<form action="http://localhost:8084/GlobalDegiskenTanim/Servlet1"
method="POST">
Adiniz:<input type="text" name="ad">

Mail Ad:<input type="text" name="mail">

Yasiniz:<input type="text" name="yas">

Bilgileri Hatirla:<input type="checkbox" name="sec">

<input type="submit" value="Gonder">
<input type="reset" value="Sil">

Orj Kod:http://www.ethemsulan.pastebin.com/f5df1b0b9

package www.ethemsulan.com;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class Servlet1 extends HttpServlet {
protected void doGet(HttpServletRequest request, 
HttpServletResponse response)throws ServletException, IOException { } 
protected void doPost(HttpServletRequest request, 
HttpServletResponse response) throws ServletException, IOException {
response.setContentType("text/html;charset=UTF-8");
PrintWriter cikti=response.getWriter();
String kulAd=request.getParameter("ad");
String kulMail=request.getParameter("mail");
int kulYas=Integer.parseInt(request.getParameter("yas"));
//setAttribute("globala isim ver",hangi değişken global olacak)
//Değişkenimizi global yani web uygulamanın her tarafından erişilebilir kılar.
ServletContext tumUyg=this.getServletContext();
tumUyg.setAttribute("globalAd", kulAd);
tumUyg.setAttribute("globalMail", kulMail);
//getAttribute(globala verilen isim) ile değişkenin değerini alırız
cikti.println("Ad global oldu-->"+tumUyg.getAttribute("globalAd"));
cikti.println("
Mail global oldu-->
"+
tumUyg.getAttribute("globalMail"));
//cikti html olacağından bir alt satıra 
ile geçiyoruz.

cikti.println("
Yas global değil-->
"+kulYas);
//href="index" tanımlama yapıyoruz.Ama println daki "" olduğundan dolayı
//href='gidilecek servlet ay da jsp ismi uzantı yok sadece isim' tanımlanır
cikti.println("Ikinci Sınıftan Gormek Iıcn Linki tıkla");
}
public String getServletInfo() {
return "Short description";
} }

Orj Kod:http://www.ethemsulan.pastebin.com/f18d0ae76

package www.ethemsulan.com;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class Servlet2 extends HttpServlet {
protected void processRequest(HttpServletRequest request,
HttpServletResponse response)  throws ServletException, IOException {
response.setContentType("text/html;charset=UTF-8");
ServletContext context=this.getServletContext();
PrintWriter cikti=response.getWriter();
cikti.println("Diger servletteki Global degisknelerin Değerleri:
"+
context.getAttribute("globalAd")+" ve "+
context.getAttribute("globalMail"));
} 
//servlet1 deki href linki tıklanınca doGet() metoduna gelir
// processRequest(request, response); metodunu çağırır.
protected void doGet(HttpServletRequest request,
HttpServletResponse response)throws ServletException, IOException {
processRequest(request, response);
} }

Orj Kod:http://www.ethemsulan.pastebin.com/f6b6ebd04

Write a Comment

Let me know what you think?