Wie bekomme ich das ServletContext-Objekt in einer einfachen Klassendatei?

8

Ich erstelle eine einfache Webanwendung. Ich muss Bezug auf ServletContext Objekt in dieser Klasse bekommen. Wie kann ich es bekommen?

    
TCM 28.04.2010, 11:12
quelle

2 Antworten

15

Übergeben Sie es als Argument an den Konstruktor Ihres Objekts oder legen Sie es mit einer Setter-Methode fest.

Tatsächlich können Sie das Kontextattribut erhalten, das für Ihr Objekt relevant ist, und es nur über Konstruktor / Setter übergeben. Zum Beispiel:

%Vor%

Eine viel schlimmere und kompliziertere Option ist:

  1. Erstelle ein ServletContextListener
  2. registriere es in web.xml mit <listener><listener-class></listener-class></listener>
  3. on contextInitialized(..) holt das ServletContext vom Event und speichert es in einem Singleton - ein statisches Feld somewhere.

Alternativ können Sie dies bei jeder Anfrage tun, indem Sie ServletRequestListener verwenden und stattdessen in ThreadLocal speichern.

Dann können Sie den Wert erhalten, indem Sie Ihren singleton / threadlocal Halter wie folgt aufrufen:

%Vor%     
Bozho 28.04.2010, 11:17
quelle
0

Ich hatte dieses Problem, aber da ich die Klasse von einer JSP aus aufgerufen hatte, übergab ich einfach die "request" -HttpServletRequest-Referenz von der JSP an die Klasse und führte den Aufruf in der Klasse zu:

%Vor%     
Ted Cahall 07.02.2016 22:43
quelle

Tags und Links