2012-06-18 8 views
14

Moja firma ponownie tworzy witrynę w ciągu najbliższych kilku miesięcy, przechodząc ze strony ColdFusion do strony napisanej w języku Java. Uczę się właśnie języka Java i jestem ciekawa, jak ustawić zmienne zasięgu aplikacji Java. ColdFusion ma plik application.cfm zawierający zmienne, które są dostępne dla wszystkich stron/komponentów ColdFusion w aplikacji. Java oczywiście nie ma bezpośredniego odpowiednika do tego pliku, więc zastanawiałem się, jak odtworzyć coś podobnego w Javie. Chcę mieć jedno centralne miejsce, do którego mogą uzyskać dostęp wszystkie strony JSP, serwlety, klasy itp. W aplikacji internetowej.Używanie zmiennych zakresu zastosowania w java

Jaki jest najlepszy sposób na zrobienie czegoś takiego?

Czy ktoś ma przykłady czegoś podobnego, co zrobił?

Czy zmienne zakresu zastosowania należy umieścić w klasie? plik xml? strona jsp? coś innego?

Czy jest możliwe zmienianie zmiennych zasięgu aplikacji w aplikacji webowej java?

Przykład: Przykład: miejsce, które zawiera ścieżkę do folderu z obrazami, więc w przypadku pojedynczych stron JSP lub klas, lub czegokolwiek, co wymagałoby dostępu do tego folderu obrazów, można zamiast tego odwoływać się do zmiennej zasięgu aplikacji dla tej ścieżki wypisania go w każdym miejscu. Następnie, jeśli z jakiegoś powodu musieliśmy przenieść lokalizację tego folderu z obrazami, zmienilibyśmy tylko zmienną ścieżki w jednej lokalizacji i nie musielibyśmy aktualizować 20 miejsc, które odwołują się do tego folderu z obrazami.

Mam problem ze znalezieniem jakichkolwiek informacji na temat tego typu rzeczy w moich badaniach online, dlatego pytam o to tutaj. Wiem, że jest bardzo dużo, aby poprosić o wyjaśnienie tego typu rzeczy, ale pomyślałem, że zapytam i zobaczę, jakiego rodzaju odpowiedzi mogę uzyskać.

Dziękujemy za pomoc dotyczącą tego tematu.

Odpowiedz

23

Odpowiednikiem jest prawdopodobnie ServletContext

w kontroler servlet:

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

Podobnie jak w obiekcie sesji można przechowywać atrybuty w kontekście serwletów oraz

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

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

If zaczynasz z Javą i masz nietrywialną aplikację do budowania, polecam używanie popularnego środowiska, takiego jak Spring lub Struts

+0

Dzięki. Kiedy ustawiasz atrybut w kontekście serwletu, czy wygasa, gdy sesja przekroczy limit czasu? Do tej pory odkryłem, że mogę ustawić znaczniki w moim pliku web.xml i uzyskać do nich dostęp poprzez kontekst serwletu, ale wątpię, aby użycie metody setAttribute w rzeczywistości zmieniło plik web.xml, szczególnie w czasie wykonywania. Jaki byłby sens ustawiania atrybutu w kontekście serwletu? Czy to naprawdę różni się od ustawiania atrybutu sesji? Jestem po prostu ciekawy. – kei23th

+3

Możesz myśleć o "ServletContext" jako globalnej przestrzeni wspólnej dla wszystkich Servletów, JSP itp. Z drugiej strony 'HttpSession' jest specyficzna dla każdego użytkownika. ServletContext może zostać zainicjowany przez web.xml, ale aplikacje J2EE nigdy nie piszą do web.xml. Zwykle jest to sklep tylko do odczytu. Najlepszą praktyką jest zdefiniowanie wartości "zakresu zastosowania" za pomocą struktury takiej jak Springs ["ApplicationContext"] (http://static.springsource.org/spring/docs/2.0.x/api/org/springframework/context/ApplicationContext.html) i nie zanieczyszcza pliku web.xml. Polecam przejrzenie niektórych dokumentów [Tutorial] (http://www.springsource.org/tutorials) – Brad