HTTP Sunucu Uygulamaları – Blog Yazma – Web Tasarımı Yapımı – Web Tasarımı YouTube Videosu Yapımı – Web Sitesi Tasarlama Fiyatları
Sağlayıcılar
Live Software, New Atlanta ve IBM dahil olmak üzere çeşitli üçüncü taraf sağlayıcılar, Netscape sunucu ailesi, Apache ve Microsoft IIS dahil olmak üzere diğer birçok büyük web sunucusu platformu için eklenti sunucu uygulaması modülleri yayınlamıştır. Çeşitli uygulamalar bu açıdan farklılık gösterdiğinden, sunucu uygulamalarının her sunucuya nasıl yükleneceğini tartışmayacağım. Önemli olan, sunucu uygulamacıklarının kendilerinin her platform için aynı olmasıdır.
Servlet API’sinin üç temel öğesi javax.servlet.Servlet arabirimi, javax.servlet.GenericServlet sınıfı ve javax.servlet’tir. http.HttpServlet sınıfı. Normalde, iki sınıftan birini alt sınıflayarak bir sunucu uygulaması oluşturursunuz, ancak varolan bir nesneye sunucu uygulaması yeteneği ekliyorsanız arayüzü uygulamayı daha kolay bulabilirsiniz.
Generic Servlet sınıfı, belirli bir iletişim protokolü uygulamayan sunucu uygulamaları için kullanılır. İşte kısa bir mesaj yazdırarak sunucu uygulaması yapısını gösteren temel bir sunucu uygulamasıdır.
BasicServlet, GenericServlet sınıfını genişletir ve bir yöntemi uygular: service(). Bir sunucu sunucu uygulamasını kullanmak istediğinde, ServletRequest ve ServletResponse nesnelerini geçirerek bu service() yöntemini çağırır (bunlara birazdan daha ayrıntılı bakacağız). Sunucu uygulaması, sunucuya ne tür bir yanıt bekleneceğini söyler, yanıt nesnesinden bir PrintWriter alır ve çıktısını iletir.
GenericServlet sınıfı ayrıca belirtilmemiş bir kaynaktan çıktı alan ve bir tür değişiklik gerçekleştiren bir filtreleme sunucu uygulaması da uygulayabilir. Örneğin, bir başlık eklemek, sunucu uygulaması çıktısını veya ham HTML dosyalarını <DATE> etiketleri için taramak ve geçerli tarihi eklemek veya <BLINK> etiketlerini kaldırmak için bir filtre sunucu uygulaması kullanılabilir. Daha gelişmiş bir filtreleme sunucu uygulaması, bir veritabanından HTML şablonlarına içerik ekleyebilir. Bu bölümün ilerleyen kısımlarında filtreleme hakkında biraz daha konuşacağız.
Günümüzde çoğu sunucu uygulaması web sunucularıyla çalışsa da, GenericServlet’te bunun için bir gereklilik yoktur: sınıf tam da bunu uygular, genel bir sunucu uygulaması. Birazdan göreceğimiz gibi, HttpServlet sınıfı, HTTP protokolüyle çalışmak üzere tasarlanmış GenericServlet’in bir alt sınıfıdır. GenericServlet’in diğer sunucu türleri ile çalışan diğer alt sınıflarını geliştirmek tamamen mümkündür. Örneğin, Java tabanlı bir FTP sunucusu, dosya ve dizin listelerini döndürmek veya diğer görevleri gerçekleştirmek için sunucu uygulamalarını kullanabilir.
HTTP Sunucu Uygulamaları
HttpServlet sınıfı, HTTP’ye özgü verileri işlemek için yöntemler içeren GenericServlet’in bir uzantısıdır. HttpServlet, belirli HTTP isteklerini (GET, POST vb.) işlemek için doGet(), doPost() ve doPut() gibi bir dizi yöntemi tanımlar. Bu yöntemler, ne tür bir isteğin yapıldığını belirleyen ve ardından uygun yöntemi çağıran service() yönteminin varsayılan uygulaması tarafından çağrılır.
HelloWorldServlet, birçok temel sunucu uygulaması kavramını gösterir. Dikkat edilmesi gereken ilk şey, HelloWorldServlet’in bir HTTP sunucu uygulaması için HttpServlet standart uygulamasını genişlettiğidir. HelloWorldServlet, herhangi biri bu sunucu uygulamasına işaret eden bir URL istediğinde çağrılan doGet() yöntemini tanımlar.
doGet() yöntemi aslında HttpServlet’in varsayılan service() yöntemi tarafından çağrılır. Service() yöntemi, HelloWorldServlet’ten bir istek yapıldığında web sunucusu tarafından çağrılır; yöntem, ne tür bir HTTP isteğinin yapıldığını belirler ve isteği uygun doXXX() yöntemine gönderir (bu durumda, doGet()). doGet(), istek hakkında bilgi içeren ve sunucu uygulamasının çıktı üretmesi için bir mekanizma sağlayan HttpServletRequest ve HttpServletResponse adlı iki nesneden geçirilir.
Mobil uygulama için sunucu
Uygulama sunucusu nedir
Application server
Web Server Nedir
DigitalOcean
Web Server yazılımları
VPS
Firebase
doGet() yönteminin kendisi üç şey yapar. İlk olarak, çıktı türünü “text/html” olarak ayarlar; bu, sunucu uygulamasının çıktı olarak standart HTML ürettiğini gösterir. İkinci olarak, istemciye işaret eden bir java.io.PrintWriter almak için HttpServletResponse parametresinin getWriter() yöntemini çağırır.
Son olarak, istemciye bir miktar HTML göndermek için akışı kullanır. Bu, BasicServlet örneğinden gerçekten çok farklı değil, ancak daha sonra daha karmaşık web uygulamaları için ihtiyaç duyacağımız tüm araçları bize veriyor.
Bir sunucu uygulaması için bir doGet() yöntemi tanımlarsanız, HttpServlet’in getLastModified() yöntemini de geçersiz kılmak isteyebilirsiniz. Sunucu, bir sunucu uygulaması tarafından sağlanan içeriğin değişip değişmediğini öğrenmek için getLastModified()’i çağırır. Bu yöntemin varsayılan uygulaması, sunucuya sunucu uygulamasının içeriğinin en son ne zaman güncellendiğini bilmediğini söyleyen negatif bir sayı döndürür, bu nedenle sunucu doGet()’i çağırmaya ve sunucu uygulamasının çıktısını döndürmeye zorlanır.
Görüntüleme verilerini seyrek olarak değiştiren bir sunucu uygulamanız varsa (birkaç sunucu makinesinde her 15 dakikada bir çalışma süresini doğrulayan bir sunucu uygulaması gibi), tarayıcıların yanıtları önbelleğe almasına izin vermek için getLastModified() öğesini uygulamanız gerekir. getLastModified(), 1 Ocak 1970, GMT gece yarısından bu yana geçen milisaniye sayısı olarak içeriğin en son değiştirildiği zamanı temsil eden uzun bir değer döndürmelidir.
Bir sunucu uygulaması, ad, yazar ve sürüm gibi sunucu uygulaması hakkında bilgiler içeren bir dize döndüren getServletInfo() öğesini de uygulamalıdır (tıpkı uygulamalardaki getAppletInfo() gibi). Bu metod web sunucusu tarafından çağrılır ve genellikle loglama amacıyla kullanılır.
Formlar ve Etkileşim
HelloWorldServlet gibi bir sunucu uygulaması oluşturmanın sorunu, HTML ile zaten yapamadığımız hiçbir şeyi yapmamasıdır. Bir servlet ile uğraşacaksak, onunla dinamik ve etkileşimli bir şeyler yapmalıyız.
Çoğu durumda bu, bir HTML formunun sonuçlarının işlenmesi anlamına gelir. Örneğimizi daha az kişisel hale getirmek için, kullanıcıyı adıyla selamlayalım. Bir GET isteği kullanarak sunucu uygulamasını çağıran HTML formu şöyle görünebilir.
formu, username adlı bir form değişkenini /servlet/HelloServlet URL’sine gönderir. Web sunucusu bu belirli sunucu uygulamacığını yüklemeyi nasıl biliyor? Java Web Sunucusu da dahil olmak üzere çoğu sunucu uygulaması uygulaması, paketlenmemiş sunucu uygulamacıklarını belirli bir dizine yerleştirmenize ve bunlara bir /servlet/ServletName URI’si ile erişmenize olanak tanır. Bu, çoğu web sunucusunun CGI programlarını destekleme biçimine benzer.
HelloServlet’in kendisi, bir çıktı akışı oluşturmaktan, kullanıcı adı form değişkenini okumaktan ve kullanıcı için hoş bir selamlama yazdırmaktan biraz daha fazlasını yapar.
Burada farklı yaptığımız tek şey, bir form değişkeninin değerini almak için HttpServletRequest’in getParameter() yöntemini kullanmak. Bir sunucu bir sunucu uygulamasını çağırdığında, bir dizi istek parametresini de iletebilir.
HTTP sunucu uygulamacıklarında, bu parametreler, bu durumda URL kodlu form değişkenleri kılığında, HTTP isteğinin kendisinden gelir. Bir web sunucusunda çalışan bir GenericServlet’in daha basit SerlvetRequest nesnesini kullanarak bu parametrelere erişimi olduğunu unutmayın. HelloServlet çalıştığında, kullanıcı adı form değişkeninin değerini gösterildiği gibi HTML çıktısına ekler.
Java Web Sunucusu 1.1’de getParameter() yöntemi, tek bir dize yerine bir String dizisi döndüren getParameterValues() lehine kullanımdan kaldırılmıştır. Ancak, kapsamlı bir yazma kampanyasından sonra Sun, getParameter() öğesini Servlet API’sinin 2.0 Sürümü için kullanımdan kaldırılan listesinden çıkardı, böylece bu yöntemi servlet’lerinizde güvenle kullanabilirsiniz.
Web sitelerinizi, arama motorlarında en yukarı getirmek adına sizlere 3 adet paket öneriyoruz. Bu paketler sayesinde web siteleriniz aramalarda 1 yıl içerisinde en yukarıya tırmanacaktır.
1) Backlink Paketi 50 $ (Yıllık Ücret)
2) Hızlandırma Paketi 300 $ (Yıllık Ücret)
3) Kelime Yönlendirme Paketi 150 $ (Aylık Ücret)