Java Servlet nedir?


277

Java sunucu uygulamasını anlamak için birçok makale okudum ama başarılı olamadım.

Java sunucu uygulamalarının kısa tanıtımını yapabilir misiniz (kolay dilde). Servlet nedir? Avantajları nelerdir? Ve bütün bunlar.

Sunucu tarafı programlama dilleri (PHP, ASP) ve sunucu uygulamaları arasındaki farkı anlayamıyorum.


38
servletsKara kutu açılana kadar sorunuzun altındaki etiketi üzerine getirin . Oradaki tıklayın bilgisi bağlantısını.
BalusC

1
Servlets Bakabilirsiniz . Bence bu detaylar ve otantik.
shohan

Yanıtlar:


336

Sunucu uygulaması, belirli bir ağ isteği türüne, çoğunlukla HTTP isteğine yanıt veren bir sınıftır. Temelde sunucu uygulamaları genellikle web uygulamalarını uygulamak için kullanılır - ancak sunucu uygulamalarının üstünde çalışan çeşitli çerçeveler de vardır (örn. Struts), sunucuların "İşte bir HTTP isteği, bu HTTP yanıtına yazma" düzeyinden daha yüksek düzeyde bir soyutlama sağlamak için sağlamak.

Sunucu uygulamaları ağ tarafını işleyen bir sunucu uygulaması kapsayıcısında çalışır (örneğin bir HTTP isteğini ayrıştırma, bağlantı işleme vb.). En iyi bilinen açık kaynaklı sunucu uygulaması kaplarından biri Tomcat'tir .


16
Sunucu uygulamaları, web sunucusunun içindeki web sunucusu tarafından çağrılan java kod parçacıklarıdır . PHP veya ASP'ye benzeyen bir şey istiyorsanız, JSP'lere ihtiyacınız var (özel bir sunucu uygulamasıdır)
Thorbjørn Ravn Andersen

3
Cevap için teşekkürler ama yine de sunucu uygulamasının gerçek kullanımını elde edemiyorum, u biz sunucuları kullanabileceğimiz durum gibi örnekle açıklayabilirseniz daha iyi olurdu. diğer sunucu tarafı programlama dilleri yapamaz ne sunucu uygulaması yapabileceği gibi sunucu uygulaması kullanımını anlamadım.
hardik

4
@Hardik: Başka bir şekilde yapılamayacak bir şey yapamayacakları değil. Sunucu uygulamaları, sunucu tarafı Java çalışmaları için yaygın bir teknolojidir. Sunucu uygulamaları bir dil değildir ve ASPX de değildir. Her ikisi de başka bir dil ile birlikte kullandığınız platformlardır - genellikle sunucu uygulamaları durumunda Java.
Jon Skeet

7
@Hardik: Yazıma yazdığım gibi, sunucu uygulamaları bir sunucu uygulaması kabı içinde çalışan sınıflardır. Sunucu uygulaması kabı aynı anda birkaç sunucu uygulamasını barındırabilir.
Jon Skeet

5
@Hardik: Evet, kesinlikle. Sunucu uygulaması, formu görüntülemek için HTML sağlayabilir ve ayrıca gönderime göre hareket edebilir. Sunucu uygulamaları web hizmetlerini uygulamak için de kullanılabilir. Bunlar için kenara HTTP diğer protokoller için kullanılabilir, fakat, HTTP ezici servlets tarafından ele en sık taşıma araçları.
Jon Skeet

102

Özünde bir sunucu uygulaması bir java sınıfıdır; HTTP isteklerini işleyebilir. Tipik olarak, bir HTTP isteği ve tel üzerinden yanıt okumanın iç nitelikleri Tomcat gibi kaplar tarafından halledilir. Bu, bir sunucu tarafı geliştiricisi olarak HTTP isteği ve yanıtları ile ne yapacağınıza odaklanabilmeniz ve ağ vb. İle ilgili kodlarla uğraşmaktan rahatsız olmamanız için yapılır. Kapsayıcı, her şeyi bir HTTP yanıt nesnesini ekleyin ve istemciye gönderin (bir tarayıcı söyleyin).

Şimdi sorulması gereken bir sonraki mantıksal soru, bir kabın ne yapması gerektiğine kimin karar verdiğidir? Ve cevap; Java dünyasında en azından teknik özelliklere göre yönlendirilir (not kontrollü kelimeyi kullanmadım). Örneğin, Sunucu Uygulaması özellikleri (Bkz. Kaynak 2), sunucu uygulamasının ne yapabilmesi gerektiğini belirtir. Eğer şartname için bir uygulama yazabilirsiniz eğer, tebrikler sadece bir konteyner yarattınız (Tomcat gibi teknik olarak kaplar da diğer özellikleri uygulamak ve özel sınıf yükleyiciler vb gibi zor şeyler yapmak ama fikir olsun).

Bir kapsayıcıya sahip olduğunuzu varsayarsak, sunucu uygulamanız artık yaşam döngüsü kap tarafından korunacak olan java sınıflarıdır, ancak gelen HTTP isteklerine verdikleri tepki sizin tarafınızdan belirlenecektir. Bunu, init (), doGet (), doPost () vb. Gibi önceden tanımlanmış yöntemlere ne yapmak istediğinizi yazarak yapabilirsiniz. Kaynak 3'e bakın.

İşte sizin için eğlenceli bir egzersiz. Kaynak 3'teki gibi basit bir sunucu uygulaması oluşturun ve yapıcı yöntemine birkaç System.out.println () ifadesi yazın (Evet, bir sunucu uygulamasının yapıcısına sahip olabilirsiniz), init (), doGet (), doPost () yöntemleri ve çalıştırın Tomcat'teki sunucu uygulaması. Konsol günlüklerine ve tomcat günlüklerine bakın.

Umarım bu yardımcı olur, mutlu öğrenirler.

kaynaklar

  1. HTTP sunucu uygulamasının burada nasıl göründüğüne bakın (Tomcat örneği).

  2. Servlet Özellikleri .

  3. Basit Servlet örneği .

  4. Kitabı çevrimiçi okumaya başlayın / PDF Ayrıca tüm kitabın indirilmesini de sağlar. Belki bu yardımcı olur. sunucu uygulamalarına yeni başlıyorsanız, sunucu uygulamasını sunucu uygulaması API'sı ile birlikte okumak iyi bir fikir olabilir. daha yavaş bir öğrenme sürecidir, ancak temel bilgileri açıklığa kavuşturmada çok daha faydalıdır.


12
Yalnızca bağlantı yanıtları Yığın Taşması üzerinde önerilmez, çünkü bağlantı kurdukları kaynaklar gelecekte kullanılamayabilir veya değişebilir. Geliştirmek için cevabınızdaki bağlantının ilgili içeriğini özetlemeyi düşünün.

6
@ Cupcake yapıcı geri bildiriminiz için teşekkür ederiz. Cevaba biraz et katmaya çalıştım. Topluluğu daha iyi hale getirdiğin için teşekkürler.
Ayusman

34

Yukarıdakilere ek olarak ve sadece kanamanın açık olduğunu belirtmek için ...

Birçoğu için bu çok açıktır, ancak sadece çalıştırılan ve sonra sona eren uygulamalar yazmaya alışkın olan birisine: bir sunucu uygulaması zamanının çoğunu hiçbir şey yapmadan takılmakla geçirir ... bir şey, bir istek gönderilmeyi ve sonra yanıt vermeyi bekler . Bu nedenle, bir sunucu uygulamasının bir ömrü vardır: initalize edilir ve daha sonra etrafa bekler, atılan her şeye cevap verir ve sonra imha edilir. Bu, başka bir şey (bir çerçeve) tarafından oluşturulması (ve daha sonra yok edilmesi) gerektiğini, kendi iş parçacığında veya sürecinde çalıştığını ve istenmedikçe hiçbir şey yapmadığını ima eder. Ayrıca, bazı yollarla ya da başka yollarla, bu "varlık" ın istekleri "dinleyebileceği" bir mekanizma uygulanmalıdır.

Konuları, süreçleri ve soketleri okumanın buna biraz ışık tutacağını öneriyorum: temel bir "merhaba dünya" uygulaması işlevlerinden oldukça farklı.

"Sunucu" veya "sunucu uygulaması" teriminin bir miktar aşırıya kaçma olduğu söylenebilir. Daha akılcı ve daha basit bir ad "yanıtlayıcı" olabilir. "Sunucu" teriminin seçilmesinin nedeni tarihseldir: bu tür ilk düzenlemeler, birden çok kullanıcı / istemci terminalinin merkezi bir makineden belirli bir dosyayı isteyeceği ve bu dosyanın "sunulacağı" dosya sunucularıdır "bir kitap ya da bir tabak balık ve cips gibi.


1
Sunucu uygulamasını standart bir MVC çerçevesinde "denetleyiciye" benzer görüntülemek yanlış mıdır?
user2490003

Şahsen bu benzetmenin nasıl olduğunu göremiyorum. Ayrıca cevabımın yararlı olduğunu düşünen insanların (onlar için bir şeyleri açıklığa kavuşturmaya yardımcı olduğunu) önermenizle karıştırılabileceğini düşünüyorum.
mike kemirgen

Bu cevabın yararlı olduğunu düşünüyorum. Ama ben de (bu Yanıttan bağımsız olarak ve okumadan önce) yukarıda @ user2490003 ile aynı soruyu merak ettim. Bir Servlet ve bir MVC çerçeve Denetleyicisi arasındaki fark nedir? User2490003'ün benzetmesi neden geçerli değil?
cellepo

Bir MVC düzenlemesi daha karmaşık ve daha az karmaşıktır. Mutlaka girdi beklemeyi içermez. Bir sunucu-istemci kurulumunun temel fikrini tanımlarken, vurgulamak istediğim basitlik budur. Temel MVC şemasına bakın: en.wikipedia.org/wiki/Model%E2%80%93view%E2%80%93controller . Basit bir istemci-sunucu kurulumunda, kullanıcı yalnızca istemci ile etkileşimde bulunur, iki nesne ile değil, bir görünüm ve bir denetleyici ile etkileşime girer. MVC ile çoklu görünümler, çoklu kontrolörler ve çoklu modeller de olabilir. Ve girişi beklemek (zorunlu olarak) söz konusu değildir.
mike rodent

Yukarıdakilere ek olarak, bir sunucu birden fazla kullanıcıya hizmet verebilir, oysa MVC kurulumunda böyle bir gereklilik yoktur. Bir MVC kurulumu klasik bilgisayar dünyasına, yani bağımsız uygulamalara aittir. Sunucularla etkileşimli bilgi işlem evrenine ilk adımımızı atıyoruz. Bu benzetmenin% 100 yanlış, daha fazla% 90 yanlış olması ve hepsinden önemlisi, herhangi bir şekilde herhangi bir şekilde ya da herhangi bir şeye yardım etmiyorsa, herhangi bir benzetmenin faydası olmadığı anlamına gelmez. Bir sunucu-istemci düzenlemesi, hiç kimsenin anlamak için herhangi bir analojiye ihtiyaç duymadığı bir fikir kadar basittir .
mike kemirgen

10

Servlet nedir?

  • Sunucu uygulaması, belirli bir ağ isteği türüne, çoğunlukla HTTP isteğine yanıt veren bir sınıftır.
  • Temelde sunucu uygulamaları genellikle web uygulamalarını uygulamak için kullanılır - ancak sunucu uygulamalarının üstünde çalışan çeşitli çerçeveler de vardır (örn. Struts), sunucuların "İşte bir HTTP isteği, bu HTTP yanıtına yazma" düzeyinden daha yüksek düzeyde bir soyutlama sağlamak için sağlamak.
  • Sunucu uygulamaları ağ tarafını işleyen bir sunucu uygulaması kapsayıcısında çalışır (örneğin, bir HTTP isteğini ayrıştırma, bağlantı işleme vb.). En iyi bilinen açık kaynaklı sunucu uygulaması kaplarından biri Tomcat'tir.

  • Bir istek / yanıt paradigmasında, bir web sunucusu istemciye yalnızca statik sayfalar sunabilir

  • Dinamik sayfalar sunmak için bir Sunucu Uygulaması gereklidir.
  • Servlet bir Java programından başka bir şey değildir
  • Bu Java programının ana bir yöntemi yoktur. Yalnızca bazı geri çağrı yöntemleri vardır.
  • Web sunucusu sunucu uygulamasıyla nasıl iletişim kurar? Konteyner veya Servlet motoru ile.
  • Servlet bir web kapsayıcısında yaşar ve ölür.
  • Web kapsayıcısı bir sunucu uygulamasındaki yöntemleri çağırmaktan sorumludur. Servlet'in hangi geri çağrı yöntemlerine sahip olduğunu bilir.

Talep Akışı

  • İstemci Web sunucusuna HTTP isteği gönderir
  • Web sunucusu, HTTP isteğini web kapsayıcısına iletir.
  • Servlet bir Java programı olan HTTP'yi anlayamadığından, yalnızca nesneleri anlar, böylece web kapsayıcısı bu isteği geçerli istek nesnesine dönüştürür
  • Web kapsayıcısı her istek için bir iş parçacığı döndürüyor
  • Tüm iş mantığı, sunucu uygulamaları içindeki doGet () veya doPost () geri arama yöntemlerinin içine girer
  • Servlet bir Java yanıt nesnesi oluşturur ve bunu kaba gönderir. İstemciye göndermek için bunu tekrar HTTP yanıtına dönüştürür

Kapsayıcı hangi Servlet istemcisinin talep ettiğini nasıl biliyor?

  • Web.xml adlı bir dosya var
  • Bu, bir web kapsayıcısının ana dosyasıdır
  • Bu dosyada servlet hakkında bilgi var-

    • servlet
      • Servlet-name
      • Servlet sınıfı
    • sunucu uygulaması - / Giriş veya / Bildirimler gibi yol burada
      • Servlet-name
      • url-desen
    • ve bunun gibi
  • Web uygulamasındaki her sunucu uygulamasında bu dosyaya bir giriş olmalıdır

  • Böylece bu arama, url-pattern -> sunucu uygulaması adı -> sunucu uygulaması sınıfı gibi olur

Sunucu uygulamasını nasıl kurabilirim? * Sunucu uygulaması nesneleri, javax.servlet kütüphanesinden miras alınır. *. Tomcat ve Spring, bu nesneyi kullanım durumuna uygun olarak kullanmak için kullanılabilir.

Ref- 1.5x- https://www.youtube.com/watch?v=tkFRGdUgCsE adresinde izleyin . Bunun harika bir açıklaması var.


1
Bir çözümün bağlantısı hoş karşılanır, ancak lütfen cevabınızın onsuz faydalı olduğundan emin olun: bağlantınızın çevresine bağlam ekleyin, böylece diğer kullanıcılarınız ne olduğu ve neden orada olduğu hakkında bir fikir sahibi olacak, ardından sayfanın en alakalı bölümünü alıntılayacağız ' hedef sayfanın kullanılamaması durumunda bağlantı kuruluyor. Bir bağlantıdan biraz daha fazlası olan yanıtlar silinebilir.
Mogsdad

1
Dünyanın ilerlediğine dikkat edin. 2020'de XML'de merkezi dize tabanlı yapılandırmalar dosyası yerine kodda ek açıklamalar kullanıyoruz.
Thorbjørn Ravn Andersen

5

Servlet, web uygulamasında dinamik web sayfası oluşturmak için kullanılan sunucu tarafı teknolojisidir . Aslında sunucu uygulaması, bazı işlevleri olan sınıf ve arabirimler grubundan oluşan bir API'dir. Servlet API'sini kullandığımızda, servlet sınıflarının ve arabirimlerinin önceden tanımlanmış işlevlerini kullanabiliriz.

Servlet'in yaşam döngüsü:

Web kapsayıcısı, sunucu uygulaması örneğinin yaşam döngüsünü korur.

1. Servlet sınıfı yüklendi

2. Servlet örneği oluşturuldu

3. init () yöntemi çağrıldı

4. service () yöntemi çağrıldı

5. invoke () yöntemi çağrıldı

İstemci (tarayıcı) tarafından yapılan istekte bulunulduğunda, web kapsayıcısı sunucu uygulamasının çalışıp çalışmadığını denetler ve evet ise service () yöntemini çağırır ve tarayıcıya yanıt verir.

Sunucu uygulaması çalışmadığında, web kapsayıcısı aşağıdaki adımları izleyin.

1. classloader sunucu uygulaması sınıfını yükleyin

2. Sunucu uygulamasını başlatır

3. Sunucu uygulamasını başlatır

4. service () yöntemini çağırın

istek web kapsayıcısı belirli bir süre bekledikten sonra, bu kez istek gelirse sadece service () yöntemini çağırır, aksi takdirde destroy () yöntemini çağırır.


5

Eğer acemi iseniz, bu öğretici Servlet nedir hakkında temel fikir verebilir düşünüyorum ...

Bazı değerli noktalar verilen linkten aşağıdadır.

Servlet teknolojisi, sunucu tarafında bulunan ve dinamik web sayfası üreten web uygulaması oluşturmak için kullanılır.

Servlet, bağlama bağlı olarak birçok şekilde tanımlanabilir.

  • Servlet, yani web uygulaması oluşturmak için kullanılan bir teknolojidir.
  • Servlet, belgeler dahil birçok arabirim ve sınıf sağlayan bir API'dir.
  • Servlet, herhangi bir sunucu uygulaması oluşturmak için uygulanması gereken bir arabirimdir.
  • Servlet, sunucuların yeteneklerini genişleten ve gelen isteğe yanıt veren bir sınıftır. Her türlü talebe cevap verebilir.
  • Servlet, dinamik web sayfası oluşturmak için sunucuya dağıtılan bir web bileşenidir. Referans: İşte .


3

Java Sunucu Programları, müşteri taleplerini yordamlayan ve yanıtlayan ve sunucu uygulaması arabirimini gerçekleştiren sunucu tarafı Java program modülleridir. İhmal edilebilir ek yük, bakım ve destek ile Web sunucusu kullanışlılığının geliştirilmesine yardımcı olur.

Sunucu uygulaması, müşteri ve sunucu arasında arabuluculuk yapar. Sunucu uygulaması modülleri sunucuda çalışmaya devam ettikçe, müşteri tarafından yapılan talepleri karşılayabilir ve yanıtlayabilirler. Sunucu uygulamasının talep ve tepki nesneleri, HTTP ile ilgilenmek ve müşteriye içerik bilgilerini göndermek için yararlı bir yöntem sunar.

Bir sunucu uygulaması Java lehçesi ile koordine edildiğinden, ek olarak tüm Java özelliklerine sahiptir, örneğin yüksek hareketlilik, sahne özerkliği, güvenlik ve Java veritabanı kullanılabilirliği.


2

Servlet, bir HTTP isteğine yanıt vermek ve bir HTTP yanıtı üretmek için bir java sınıfıdır ... HTML kullanarak bir sayfa yaptığımızda statik bir sayfa olur, bu yüzden dinamik hale getirmek için SERVLET { biri anlayabilir} Servlet kullanmak JSP tarafından overcomed olduğu için kendi içinde kod ve HTML etiketi kullanır ..


2

Sunucu uygulamaları, bir web sitesi kullanıcısı bir sunucudan URL istediğinde belirli işlevleri çalıştıran Java sınıflarıdır. Bu işlevler, verileri veritabanına kaydetme, mantık yürütme ve sayfa yüklemek için gereken bilgileri (JSON verileri gibi) döndürme gibi görevleri tamamlayabilir.

Çoğu Java programı main(), program çalışırken kodu yürüten bir yöntem kullanır . Java servlet içerirler doGet()ve doPost()sadece gibi hareket yöntemleri main()yöntemle. Bu işlevler, kullanıcı söz konusu sunucu uygulamasına eşlenen URL'ye bir istekte GETveya POSTistekte bulunduğunda yürütülür . Böylece kullanıcı bir GETistek için bir sayfa yükleyebilir veya bir POSTistekten veri depolayabilir .

Kullanıcı bir istek GETveya POSTistek gönderdiğinde , sunucu, @WebServlethangi sunucu uygulaması sınıfının çağrılacağına karar vermek için dizininizdeki her sunucu uygulaması sınıfının üst kısmında okur . Örneğin, bir ChatBox sınıfınız olduğunu ve bunun üst kısmında olduğunu varsayalım:

@WebServlet("/chat")
public class ChatBox extends HttpServlet {

Bir kullanıcı /chatURL'yi istediğinde, ChatBoxsınıfınız yürütülür.


0

Gibi bu makalede anlatılmaktadır, bir Servlet bir Java sunucu uzanan ve yeteneklerini erişen standartlaştırılmış bir yoludur.

Her Servlet, Java kodu olarak modellenen istek ve yanıta Oturum gibi diğer bağlam verileriyle erişen küçük bir sunucu (dolayısıyla ad) olarak görülebilir.

Bunları elinizle, sunucu uygulamasının Java kodu, bir HTML görünümü oluşturmak için bir JSP sayfasına teslim etmek de dahil olmak üzere, yanıt vermek için gereken her şeyle arabirim oluşturabilir.


-1

Servlet temelde HTTP isteği ve HTTP yanıtı arasında orta bir yol olarak hareket eden bir java sınıfı olduğunu düşünüyorum.Servlet ayrıca web sayfanızı dinamik yapmak için kullanılır. Diyelim ki sunucudaki başka bir web sayfasına yönlendirmek istiyorsanız sunucu uygulamaları kullanmalısınız. Bir başka önemli şey, sunucu uygulamasının bir web tarayıcısının yanı sıra localhost üzerinde de çalışabilmesidir.


-2

Normal bir sunucu uygulamasının cevabını yeni aldınız. Ancak, sizi Servlet 3.0 ile ilgili bir şey hakkında paylaşmak istiyorum

İlk Servlet nedir?

Sunucu uygulaması, bir kapsayıcı tarafından yönetilen ve dinamik içerik üreten bir Web bileşenidir. Sunucu uygulamaları, Java teknolojisi etkin bir Web sunucusuna veya Servlet kapsayıcısına dinamik olarak yüklenip çalıştırılabilen bayt koduna derlenen Java sınıflarıdır.

Servlet 3.0, mevcut Servlet 2.5 belirtimine yönelik bir güncelleştirmedir. Servlet 3.0, Java Platform, Enterprise Edition 6 için gereken API'dir. Servlet 3.0, genişletilebilirlik ve web çerçevesi eklenebilirliğine odaklanmıştır. Servlet 3.0 size Geliştirme Kolaylığı (EoD), Eklenebilirlik, Async Desteği ve Güvenlik Geliştirmeleri gibi bazı uzantılar getiriyor

Kalkınma Kolaylığı

Sunucu uygulamaları, Filtre, Dinleyiciler, Başlangıç ​​Parametreleri bildirebilirsiniz ve hemen hemen her şey ek açıklamalar kullanılarak yapılandırılabilir

Geçmeli yapı

Bir web-fragment.xml içeren bir alt proje veya modül oluşturabilirsiniz. Takılabilir fonksiyonel gereksinimlerin bağımsız olarak uygulanmasına izin verdiği anlamına gelir.

Async Desteği

Servlet 3.0, eşzamansız işleme yeteneği sağlar, örneğin: Bir kaynağın kullanılabilir olmasını beklemek, Eşzamansız olarak yanıt üretmek.

Güvenlik Geliştirmeleri

Kimlik doğrulama, oturum açma ve oturum kapatma sunucu uygulaması güvenlik yöntemleri desteği

Java Servlet Eğitimi'nden buldum

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.