2012-06-18 8 views
14

Meine Firma erstellt in den nächsten Monaten eine neue Website, die von einer ColdFusion-Website zu einer in Java geschriebenen Website führt. Ich lerne gerade Java und bin gespannt, wie ich Anwendungsumfangsvariablen in einer Java-Webanwendung setzen kann. ColdFusion verfügt über die Datei application.cfm, die Variablen enthält, auf die alle ColdFusion-Seiten/-Komponenten innerhalb der App zugreifen können. Java hat offensichtlich keine direkte Entsprechung zu dieser Datei, also habe ich mich gefragt, wie ich etwas Ähnliches in Java neu erstellen könnte. Ich möchte einen zentralen Platz haben, auf den alle Jsp-Seiten, Servlets, Klassen usw. in der Webapp zugreifen können.Verwenden von Anwendungsbereichsvariablen in Java

Also, was ist der beste Weg, so etwas zu tun?

Hat jemand irgendwelche Beispiele für etwas ähnliches, das sie getan haben?

Sollen Anwendungsbereichsvariablen in einer Klasse platziert werden? eine XML-Datei? eine JSP-Seite? etwas anderes?

Ist es sogar machbar, Anwendungsbereichsvariablen in java webapp zu haben? Beispiel: Beispiel: Beispiel: Es wäre der Pfad zu einem Bilderordner, also könnten Sie in einzelnen JSP-Seiten oder -Klassen oder allem, was Zugriff auf diesen Bilderordner benötigt, stattdessen auf die Anwendungsbereichsvariable für diesen Pfad verweisen es an jedem Ort zu schreiben. Wenn wir dann aus irgendeinem Grund den Speicherort dieses Bilderordners verschieben müssen, ändern wir einfach die Pfadvariable an dem einen Speicherort und müssen nicht 20 Orte aktualisieren, die auf diesen Bilderordner verweisen.

Ich habe in meiner Online-Recherche Schwierigkeiten gehabt, Informationen zu dieser Art von Dingen zu finden, weshalb ich mich hier erkundige. Ich weiß, dass es eine Menge ist, um eine Erklärung für diese Art von Dingen zu verlangen, aber ich dachte, ich würde fragen und sehen, welche Art von Antworten ich bekommen könnte.

Vielen Dank für Ihre Hilfe zu diesem Thema.

Antwort

23

Das entspricht wahrscheinlich die ServletContext

In Ihrem Controller-Servlet:

ServletContext context = request.getSession().getServletContext(); 

Genau wie in dem Session-Objekt Sie können auch im Servletkontext Attribut speichern

context.setAttribute("someValue", "aValue"); 

Object attribute = context.getAttribute("someValue"); 

Wenn Sie beginnen mit Java und Sie haben eine nicht-triviale Anwendung zu erstellen, würde ich empfehlen, ein beliebtes Framework wiezu verwendenoder Struts

+0

Danke. Wenn Sie ein Attribut im Servletkontext festlegen, läuft es ab, wenn die Sitzung abläuft? Bisher habe ich festgestellt, dass ich -Tags in meiner web.xml-Datei festlegen und auf diese über den Servlet-Kontext zugreifen kann, aber ich bezweifle, dass die setAttribute-Methode die web.xml-Datei tatsächlich ändert, insbesondere zur Laufzeit. Was wäre der Sinn, ein Attribut im Servlet-Kontext zu setzen? Ist das wirklich anders als beim Festlegen eines Sitzungsattributs? Ich bin nur Neugierig. – kei23th

+3

Sie können sich den 'ServletContext' als einen globalen Bereich vorstellen, der von allen Servlets, JSPs usw. gemeinsam genutzt wird. Die' HttpSession' andererseits ist spezifisch für jeden Benutzer. Der ServletContext kann von web.xml initialisiert werden, aber J2EE-Anwendungen schreiben nie in web.xml. Es ist normalerweise als schreibgeschützter Speicher. Es empfiehlt sich, "Anwendungsumfang" -Werte mithilfe eines Frameworks wie Springs ['ApplicationContext'] (http://static.springsource.org/spring/docs/2.0.x/api/org/springframework/context/ApplicationContext.html) zu definieren) und nicht die web.xml verschmutzen. Ich empfehle, einige [Tutorial] (http://www.springsource.org/tutorials) Dokumente zu lesen – Brad