Bilal Koçoğlu/ Kasım 15, 2018/ Servlet

Hidden Form Field
(Gizli Form Alanı)

Bu yazımızda daha önceden Cookies ile giriş yapmış olduğumuz session tracking konusuna diğer yöntemlerle devam edeceğiz. Session tracking in ne olduğunu ve neden ihtiyaç duyduğumuzu bir önceki derste detaylı bir şekilde açıklamıştık. Şimdi ise session tracking’in diğer bir yöntem olan hidden form field (gizli form alanı) ndan bahsedeceğiz.

Karşılaştığınız hataları veya mantığını oturtamadığınız noktaları yorum olarak paylaşırsanız sevinirim.

Gizli Form Alanında, kullanıcının durumunu korumak, session tracking i gerçekleştirebilmek için gizli (görünmez) bir metin alanı kullanılır. Böyle bir durumda, bilgileri gizli alana saklar ve başka bir Servlet’ten alırız. Bu yaklaşım, tüm sayfalarda form göndermek zorunda olduğumuz ve tarayıcıya bağımlı kalmak istemediğimiz takdirde daha iyi olur. Tarayıcıya bağımlı kalmak istemediğimiz takdirde diyorum çünkü bir önceki Cookies dersinde de belirttiğimiz gibi Cookies kullanıcı tarafından engellendiği takdirde sistemimiz çalışmaz hale gelebilir.

Gizli bölgelerde kodu depolamak için;

şeklinde bir kod satırı kullanabiliriz. Burada bildiğimiz HTML input tagı kullandık ve type=”hidden” ile bu inputun görünmemesi gerektiğini belirttik. Ayrıca name ve value değerleri ile sayfa içine gömmek istediğimiz veriyi tanımladık. Bu şekilde tanımladığımız hidden bir inputu form içine yazdığımızda tıpkı form içindeki diğer input değerleri gibi Request nesnesi ile birlikte servlete ulaşır. Yani bu değere Servlet’te hidden olmayan input değerlerine ulaştığımız gibi ulaşabiliriz.

Hidden Form Field

Şimdi basit bir örnekle konuyu pekiştirelim.

Burada basit olarak bir HTML formu oluşturduk ve kullanıcıdan yaşını girmesini istedik. Bu form içindeki bilgilerin (form submit edildikten sonra) servlet imize ulaşabilmesi için web.xml’de userSetting yolunun bizi hangi servlet e yönlendireceğini tanımlamamız gerekiyor.

Bu işlemi de yaptıktan sonra artık form submit edildiğinde uygulamamız biri UserServlet’e yönlendirecek. Sırada bu servlet içinde girilen yaşı ve hidden input içine gizlediğimiz username i almakta.

Gördüğünüz gibi hidden field’daki değeri alırken hidden olmayan bir field’dan farklı bir kod kullanmadık. Bunun sebebi bu işlemin tamamen view tarafında olmasıdır. Bir diğer deyişle Servlet’in request içinde gelen parametrelerin hidden olup olmadığından haberi yoktur.

Session tracking ile alakası olmasa da bir diğer dikkat çekmek istediğim nokta ise, HTML form tarafında input=”number” verdiğimiz bir field’ı Servlet tarafında bir String olarak alıyor olmamız. Burdan çıkarmamız gereken sonuç view tarafında inputu number olarak tanımlamamız Servlet tarafında bu değeri bir int, double veya float olarak alabileceğimiz anlamına gelmez. Şayet HttpServletRequest sınıfını anlattığımız derse göz atarsanız, getParameter() methodunun dönüş tipinin String olduğunu görebilirsiniz. Bu değeri String olarak aldıktan sonra istediğimiz tipe cast ederek(tip dönüşümü uygulayarak) kullanabiliriz.

Bu yöntemin tabi ki diğer yöntemler gibi bir takım avantajları ve dezavantajları mevcuttur. En büyük avantaj olarak kullanıcı tarafından tarayıcı ayarlarında yapılacak bir değişikliğin(çerezleri devre dışı bırakmak gibi) uygulamamızı etkilememesini söyleyebiliriz. Dezavantaj ise sunucu tarafında tutulması, her sayfaya fazladan form alanları eklenmesi gerektiği ve ayrıca sadece metin bilgilerinin kullanılabildiğini söylemek mümkün.

Bir sonraki dersimizde diğer bir Session Tracking(oturum, kullanıcı takip) yöntemi olan URL Rewriting konusuna göz atıp örnek yapacağız.

İyi çalışmalar dilerim.

Share this Post

Leave a Comment

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

*
*