Mam pęczek tekstu, xml i innych plików (tj. Zasobów), do których muszę uzyskać dostęp za pomocą serwletów w aplikacji internetowej java. Na przykład istnieje plik xml, którego część jest zwracana z serwletem za pomocą zapytania użytkownika. Używam Tomcat. Jaka jest najlepsza praktyka przechowywania tych plików i dostępu do nich z kodu Java? 1) Jakie są domyślne foldery, gdzie powinienem je umieścić, czy muszę umieścić je w archiwum sieciowym lub w jednym ze słoików? 2) Jak uzyskać dostęp do plików z kodu Java? Jak mogę ustawić dla nich ścieżkę, aby działała w każdym środowisku? P.S. Czytałem wiele postów związanych z tym tematem, z których większość zaleca przechowywanie zasobów w słoikach i dostęp do nich za pomocą java.lang.Class.getResourceAsStream (String). Wydaje się to dziwne, ponieważ klasy i dane powinny być oddzielone.Najlepsze praktyki do przechowywania i uzyskiwania dostępu do plików zasobów w aplikacji WWW java
5
A
Odpowiedz
7
Ładowanie ładunków statycznych przy użyciu programu ładującego klasy jest całkowicie w porządku. To właśnie robi ResourceBundle, aby załadować na przykład internacjonalizowane pliki właściwości.
Umieść je w pliku WEB-INF/classes
wraz z plikami klas lub w słoiku wewnątrz WEB-INF/lib
i załaduj je za pomocą ClassLoader, zgodnie z odpowiedziami, które już przeczytałeś.
Nie zabrania to umieszczania tych plików w oddzielnym katalogu z plików źródłowych Java w projekcie. Proces kompilacji powinien po prostu zapewnić umieszczenie ich w odpowiednim miejscu dla środowiska wykonawczego. Konwencja Maven and Gradle polega na umieszczeniu plików źródłowych pod src/main/java
i plikami zasobów pod numerem src/main/resources
.
Powiązane problemy
- 1. Najlepsze praktyki uzyskiwania dostępu do danych bez schematów?
- 2. Najlepsze praktyki i literatura do testowania obciążenia aplikacji WWW
- 3. Najlepsze praktyki do przechowywania plików JAR w VCS (SVN, Git, ...)
- 4. Sposób uzyskiwania dostępu do plików zasobów w pythonie
- 5. Najlepsze praktyki dotyczące przechowywania przesłanych plików w systemie plików
- 6. Najlepsze praktyki dotyczące lokalizacji aplikacji WWW ASP.NET
- 7. Najlepsze praktyki dotyczące przechowywania JSON w DOM
- 8. Tworzenie i uzyskiwania dostępu do plików cookie w ASP.NET MVC3
- 9. PHP/MySQL: Najlepsze praktyki operacji/przechowywania pieniędzy?
- 10. Wielowątkowość najlepsze praktyki w java
- 11. Najlepsze praktyki dotyczące przechowywania kluczy tajnych
- 12. Way Uzyskiwanie dostępu do zasobów i zasobów identyfikatory innych Apps
- 13. Najlepsze praktyki dotyczące przechowywania witryny sieci Web ASP.NET w Subversion?
- 14. Najlepsze praktyki wysokowydajnych aplikacji sieciowych
- 15. HttpsURLconnection do publikowania i uzyskiwania dostępu do systemu Android
- 16. Kontrolowanie asercji Java - najlepsze praktyki
- 17. Dlaczego są używane identyfikatory ciągów do uzyskiwania dostępu do danych zasobów?
- 18. EBS do przechowywania baz danych a plików stron WWW
- 19. Odczytywanie plików zasobów Java w aplikacji GoogleEngine
- 20. Najlepsze praktyki dotyczące przechowywania haseł produkcyjnych w małych grupach
- 21. CXF Wsdl2Java Najlepsze praktyki
- 22. Transakcje NHibernate Najlepsze praktyki
- 23. Docker, pliki statyczne aplikacji internetowej. Najlepsze praktyki?
- 24. Udostępnianie plików zasobów asp.net między aplikacjami WWW
- 25. Najlepsze praktyki dla szeregowania/Deserializacji z Java do XML
- 26. Najlepsze praktyki dotyczące logowania do projektu django
- 27. Wiele plików javascript/css: najlepsze praktyki?
- 28. Najlepsze praktyki LDAP
- 29. Właściwe wzorce użytkowania/najlepsze praktyki?
- 30. Błąd podczas uzyskiwania dostępu do powłoki sqlite3 z aplikacji django
1) Co mam zrobić, jeśli mam już zasoby w folderze WEB-INF/resources? Są używane przez JavaScript na stronie HTML. Strona to WEB-INF/index.html, a skrypt odnosi się do zasobów używających względnej ścieżki. 2) Gdzie powinienem przechowywać ścieżkę do folderu zasobów? Czy jest miejsce w pliku web.xml lub innym statycznym? – Alexander
Zasoby w WEB-INF nie są dostępne z zewnątrz, więc nie można załadować pliku JS do WEB-INF z przeglądarki. Możesz użyć ServletContext.getResourceAsStream(), aby załadować zasoby z dowolnego miejsca w aplikacji internetowej (w tym WEB-INF), ale to zmusza klasę ładowania do dostępu do ServletContext. Nie rozumiem twojego drugiego pytania. To jest statyczny zasób. Dlaczego nie utworzysz ścieżki na stałe? –
Potrzebne jest wystąpienie serwletu, aby uzyskaćContext, a następnie uzyskać zasób lub ścieżkę folderu. Czy istnieje sposób, aby zrobić to statycznie bez tworzenia instancji? Moje drugie pytanie dotyczyło miejsca, w którym powinienem przechowywać takie stałe. Czy istnieje miejsce w niektórych zasobach sieciowych, takich jak web.xml (zamiast stałej w jednym z kodu źródłowego klasy)? – Alexander