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

URL Rewriting

URL Rewriting, Öncelikle tekrar merhaba arkadaşlar. Bu derste session tracking yöntemlerinden bir diğeri olan URL Rewriting ile devam ediyoruz. Türkçe bir karşılık olarak URL’in yeniden yazılması denebilir. Daha da basit basit bir anlatımla bu yöntemde oturum takibini(session tracking) takip için gerekli olan bilgileri URL’de göstererek gerçekleştireceğiz.

Sık kullanılan yöntemlerden biri olduğundan dikkatli bir şekilde okumanızı, benim burada göstereceğim örnek dışında örnekler yaparak konuyu kavramanızı tavsiye ederim. Kafanıza takılan yerleri veya kendi örneklerinizde aldığınız hataları bizimle paylaşmayı ihmal etmeyin. Şimdiden başarılar.

 URL Rewriting‘te, bir sonraki servletin veya sonraki kaynağın session ile ilgili bilgi sahibi olabilmesi için bu servletin(veya kaynağın) URL’ine bir belirteç veya tanımlayıcı ekleriz. Basit olarak;

url?username=admin&age=25

şeklinde bir URL’i inceleyelim. İlk olarak URL’den sonra ‘?’ ifadesi gelmiş. Bunun anlamını “buradan sonra parametreleri gireceğim” olarak ifade edebiliriz. Daha sonra ise parametre adı = değer çiftlerini görmekteyiz. Açıkça belli olduğu üzere bunlar, bu değerlere ulaşabilmemiz için gerekli olan parametre adları ve dinamik olarak(kullanıcıdan kullanıcıya) değişen değerler. Aynı zamanda her parametre adı/değer çiftinden sonra bir diğer parametreye geçeceğimizde ‘&’ simgesini kullanmamız gerekiyor. Yani biz bu URL için konuşacak olursak;

kod bloğunun konsol ekranındaki çıktısı “admin” dir. Aynı şekilde age parametresinin değerini yazdırmak istediğimizde 25 çıktısını görüyor oluruz.

URL Rewriting

Burada daha önceki derslerde de bahsettiğim bir konuya tekrar değinmek istiyorum. İkinci parametremiz olan ‘age’ i servlette çağırırken, değerinin bir int değer olarak gözükmesi sizi aldatmasın. GetParameter() methodu bize String tipinde bir değişken döndürür. Aldığımız “25” String ini Integer sınıfının statik bir methodu olan parseInt() ile int bir değere dönüştürebiliriz. Bu kısmın karmaşıklığa yol açmaması için kod üzerinde inceleyelim.

String’i int’a 3. satırda dönüştürüyoruz. Buraya dikkat etmeniz gerekmektedir. Tabiki sadece int’a değil diğer tiplere de dönüşüm yapabiliriz fakat konumuzun daha fazla dağılmaması açısından burda sadece bir örnek yeterli. Merak eden arkadaşlar diğer çeşitli tip dönüşümlerine buradan ulaşabilirler.

Şimdi bir örnek ile konuyu pekiştirelim.

Dosya Yapısı
URL Rewriting Dosya Yapısı

URL Rewriting Dosya Yapısı

pom.xml

index.jsp

HelloServlet.java

HomeServlet.java

web.xml

Arkadaşlar bu örnekte dikkatinizi çekmek istediğiniz bir nokta var. Bundan önceki örneklerimizde her zaman oluşturduğumuz servletleti web.xml de tanımlamış. Bunlar için bir url belirtmiştik (yukarıda yer alan web.xml deki servlet ve servlet-mapping taglarında inceleyebilirsiniz). Ancak bu örneğimizde iki tane servlet oluşturmamıza rağmen bunların sadece bir tanesini web.xml de tanımladık. Bunun sebebi HomeServlet.java’nın 10. satırındaki @WebServlet annotationdır.

@WebServlet(name = “HomeServlet”, urlPatterns = “/HomeServlet”)

Burada görüldüğü üzere web.xml’de yaklaşık 10 satırda yaptığımız işlemi tek satırda gerçekleştirmiş bulunuyoruz. Kullanımı gayet basit. @WebServlet etiketini servlet classının hemen üstüne yazdıktan sonra gerekli tanımlamaları yapıyoruz. Burada sadece name ve urlPattern tanımlamışız fakat burada value, description, displayName, initParams ve loadOnStartup gibi daha bir çok özelliği tanımlayabiliriz. Bu örnekte farkı ve kolaylığı görebilmek açısından oluşturduğumuz servletlerin sadece birinde bu etiketi kullandım. Fakat bundan sonraki tüm örneklerimizde bu şekilde tanımlama yapacağız.

Projemizi hatasız bir şekilde çalıştırdığımızda alacağımız çıktılar;

URL Rewriting

URL Rewriting

URL Rewriting

URL Rewriting

URL Rewriting

URL Rewriting

şeklinde olacaktır.

 Bir sonraki dersimizde yine url rewriting gibi session tracking de en çok kullanılan yöntemlerden biri olan HttpSession’dan bahsedeceğiz.

İyi çalışmalar dilerim.

Share this Post

Leave a Comment

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

*
*