2012-02-09 13 views
5

İskelesi yerleştirdiğiniz herhangi bir parametre başlatılıyor DEĞİLDİR, ve bir başlatma parametresini ayarlamak için çalışıyorum.İskelesi setInitParameter

ana sınıfı AnaCGI uzanır Cgi bir sunucu uygulamasını oluşturur.

Ana içinde, Aşağıdaki kod var:

public void init(ServletConfig servletConfig) throws ServletException { 
     System.out.println(servletConfig.getInitParameter("commandPrefix")); 
     super.init(servletConfig); 
} 

Her seferinde, onun için boş yazdırır:

ServletContextHandler context2 = new ServletContextHandler(ServletContextHandler.SESSIONS); 
context2.setContextPath("/cgi"); 
context2.setResourceBase("./cgi-bin"); 
context2.setInitParameter("commandPrefix", "perl"); 
context2.addServlet(new ServletHolder(new Cgi()), "/"); 
server.setHandler(context2); 

Cgiiçinde, ben parametresini kontrol edin getInitParameter çağrı. Cgi gerçekten bu kullanmak İHTİYACINIZ yok Sonra zaman ayarlı değil çünkü, o değil. Bu neden olabilir?

cevap

9

Sen ServletContextHandler tarihinde InitParameter ayarı yapıyor ancak ServletHolder üzerinde ayarlama yapılmalıdır.

(O biraz kafa karıştırıcı biliyorum) Bir bağlam init parametresini değil, bir servlet init parametre kurdum

+0

teşekkür ederiz !! Bu beni geçen haftalarda çılgın gibi kafa karıştırıyor – joslinm

2

. Bu yüzden, bir servlet init parametresi yerine bir içerik init parametresi olarak almanız gerekir.

System.out.println(servletConfig.getServletContext().getInitParameter("commandPrefix")); 

Alternatif olarak, tabii ki de yerine servlet init parametre olarak ayarlayabilirsiniz, ancak bu şekilde parametre yalnızca değil, yalnızca aynı bağlamda çalıştırılan diğer servlet ilişkili servlet sunulacak. Bu, beton fonksiyonel gereksinime bağlı olarak, istediğiniz gibi olabilir veya olmayabilir.

İlgili konular