2011-10-21 16 views
5

Java Servlet API'sında, ServletContext'u almanın tek yolu, HttpSession (Javadoc) örneğidir.ServletContext'i almak için neden bir HttpSession'a ihtiyacım var?

Bir oturum oluşturmak istemiyorsam ve yalnızca sunucu içeriğine ihtiyacım varsa ne yapmalıyım? Başka bir deyişle, HttpServletRequest sınıfında neden getServletContext() yöntemi yok?

DÜZENLEME

Ben onun başlatma sırasında bunu aldığı için ben, servlet kendisinden ServletContext alabilirsiniz biliyorum. Bununla birlikte, bir sunucuya bağlı olsa bile, tek başına bir 'dan alamıyorum. Öyleyse bir isteğim varsa, ancak herhangi bir sunucuya başvuru yapılmazsa ne olur?

cevap

8

getServletContext()HttpServlet ebeveyn sınıfının böylece servlet uygulanmasında diyoruz gerekir ise GenericServlet parçasıdır.

Düzenleme: Eğer öncesinde bir sürümünü kullanmak zorunda eğer istek ve yanıt nesnelerle birlikte bir bağlam geçmek zorunda olacak gibi görünüyor böylece

HttpServletRequest, getServletContext()ServletRequest gelen servlet beri 3.0 devralır 3,0.

+0

Sorunun konusu bu değil. –

+0

@Laurent, düzenlemeye bakın. – rsp

+1

+1: Servlet 3'ün sonunda bu tutarsızlığı düzelttiği görülüyor. –

3

Bu istekler (sunucular, filtreler, sayfalar) ile çalışan her varlık vardır bu sadece var kendine ait getServletContext (veya init())

+0

+1, ancak, her zaman böyle değildir. Bazen sadece bir isteğiniz vardır ve sunucu içeriğinin tek yolu oturumdan geçmektedir. –

+0

@LaurentPireyn, ör. Isteği başka katmanlara aktardığınızda, aksi takdirde Servlets API'sinin haberi yok mu? Bu mümkündür, ancak bu durumda soruların kaybolmasıyla sonuçlanırız: ilk başta ServletContext'in iyi bir fikir olup olmadığı; bağlamı sadece özniteliklere itmemeliyiz; mantığımızı yeniden düzenlememeliyiz; vb ... – alf

+0

"Ekşi üzüm" moduna kayıyorum, üzgünüm. Her neyse, gerçek sorun nedir? İhtiyacım olan mantığın mantıklı olduğunu söylemek mantıklı: 'getServletContext'' HttpSession' içine yaptım daha şaşırdım. – alf

1

Sizin servlet sınıfı istek gitmek gerekmez bir getServletContext() yöntemi vardır .

Bu, mantığın, kapsayıcı tarafından sağlanan bir içeriğe sahip olduğu anlamına gelir, bu herhangi bir özel istekten bağımsızdır.

+0

Sorunun konusu bu değil. –

+0

@Laurent asıl soru, yalnızca isteğin mevcut olduğu ek bilgi içermiyordu. – djna

İlgili konular