Tôi có một loạt văn bản, xml và các tệp khác (tức là tài nguyên) mà tôi cần truy cập bằng các servlet trong ứng dụng web java. Ví dụ, có một tập tin xml, một phần trong đó được trả về với một servlet bởi một truy vấn người dùng. Tôi đang sử dụng Tomcat. Cách tốt nhất để lưu trữ những tệp này và truy cập chúng từ mã java là gì? 1) Các thư mục mặc định là nơi tôi nên đặt chúng, tôi có cần đưa chúng vào kho lưu trữ Web hoặc vào một trong các Lọ không? 2) Cách truy cập các tệp từ mã java? Làm thế nào tôi có thể thiết lập đường dẫn cho họ để nó sẽ làm việc trong bất kỳ môi trường nào? P.S. Tôi đã đọc một số bài viết liên quan đến chủ đề này, hầu hết trong số đó đề nghị lưu trữ tài nguyên trong các lọ và truy cập chúng bằng cách sử dụng java.lang.Class.getResourceAsStream (String). Có vẻ lạ vì các lớp và dữ liệu nên được tách ra.Các phương pháp hay nhất để lưu trữ và truy cập các tệp tài nguyên trong ứng dụng web java
5
A
Trả lời
7
Hoàn toàn tốt để tải tài nguyên tĩnh bằng trình nạp lớp. Đó là những gì mà ResourceBundle thực hiện để tải các tệp thuộc tính được quốc tế hóa chẳng hạn.
Đặt chúng trong WEB-INF/classes
cùng với tệp lớp học của bạn hoặc trong một cái bình bên trong WEB-INF/lib
và tải chúng bằng Trình nạp lớp như được chỉ ra bằng câu trả lời bạn đã đọc.
Điều đó không cấm bạn đặt các tệp này trong một thư mục riêng biệt từ các tệp nguồn Java trong dự án của bạn. Quá trình xây dựng chỉ nên đảm bảo đặt chúng vào vị trí thích hợp cho thời gian chạy. Công ước Maven và Gradle là đặt các tệp nguồn dưới src/main/java
và các tệp tài nguyên theo src/main/resources
.
Các vấn đề liên quan
- 1. Các phương pháp hay nhất để lưu trữ một trang web ASP.NET trong Subversion?
- 2. Các phương pháp hay nhất để chịu bùng nổ lưu lượng truy cập ngày khởi chạy
- 3. Các vấn đề cập nhật ứng dụng Android và các phương pháp hay nhất là gì?
- 4. Các phương pháp hay nhất để tự cập nhật các ứng dụng PHP + MySQL là gì?
- 5. PostgreSQL điều chỉnh các phương pháp hay nhất để lưu trữ dữ liệu
- 6. Phương pháp hay nhất để cập nhật tài nguyên có cấu trúc thông qua REST?
- 7. Cách truy cập các tệp tài nguyên trong python
- 8. Các phương pháp hay nhất để lưu trữ JSON trong DOM
- 9. Truy cập các tệp tài nguyên trong Android
- 10. Cách tốt nhất để lưu trữ và truy cập 120.000 từ trong java
- 11. Các phương pháp hay nhất để phát triển các ứng dụng lớn hơn trên Android
- 12. phương pháp lưu trữ các tệp nhị phân trong SVN
- 13. Kiểm tra lỗ hổng bảo mật trong ứng dụng web: Các phương pháp hay nhất?
- 14. Các phương pháp hay nhất để lưu trữ cài đặt giao diện người dùng?
- 15. Các phương pháp hay nhất cho quy trình làm việc của ứng dụng web?
- 16. Các phương pháp hay nhất cho kho lưu trữ git trên các dự án nguồn mở
- 17. Các phương pháp hay nhất liên quan đến bộ nhớ đệm trong các ứng dụng ASP.NET
- 18. Các tệp jar được lưu trữ ở đâu trong các ứng dụng Java Web Start/JNLP?
- 19. Các phương pháp hay nhất về Javascript
- 20. Các phương pháp hay nhất về phát triển ứng dụng Twitter?
- 21. Phương pháp hay nhất để lưu trữ "tìm kiếm đã lưu" trong cơ sở dữ liệu
- 22. Cách triển khai thiết kế web đáp ứng và các phương pháp hay nhất của mình
- 23. GAE: các phương pháp hay nhất để lưu trữ khóa bí mật?
- 24. Các phương pháp hay nhất cho kho lưu trữ Kiln là gì?
- 25. php và mysql, các phương pháp hay nhất
- 26. Các phương pháp hay nhất để chia sẻ mã cấp web (Bộ điều khiển và JSP) giữa các ứng dụng web tương tự
- 27. truy cập webcam trong các trang web
- 28. Các phương pháp hay nhất về iFrame
- 29. Các phương pháp hay nhất để lưu trữ dữ liệu phiên PHP trong cơ sở dữ liệu là gì?
- 30. Các phương pháp hay nhất để tương thích ngược API
1) Nếu tôi đã có tài nguyên trong thư mục WEB-INF/resources thì sao? Chúng được sử dụng bởi JavaScript trong trang HTML. Trang này là WEB-INF/index.html và tập lệnh đề cập đến tài nguyên sử dụng đường dẫn tương đối. 2) Tôi nên lưu trữ đường dẫn đến thư mục tài nguyên ở đâu? Có một vị trí trong web.xml hoặc tài nguyên tĩnh khác không? – Alexander
Tài nguyên trong WEB-INF không thể truy cập từ bên ngoài, do đó không thể tải tệp JS trong WEB-INF từ trình duyệt. Bạn có thể sử dụng ServletContext.getResourceAsStream() để tải các tài nguyên từ bất cứ đâu trong webapp (bao gồm cả WEB-INF), nhưng điều đó buộc lớp tải phải truy cập vào ServletContext. Tôi không hiểu câu hỏi thứ hai của bạn. Đó là một tài nguyên tĩnh. Tại sao bạn không mã hóa đường dẫn trong một số hằng số? –
Cần một cá thể của một servlet để getContext và sau đó lấy tài nguyên hoặc đường dẫn thư mục. Có cách nào để làm nó tĩnh mà không instantiating bất cứ điều gì? Câu hỏi thứ hai của tôi liên quan đến nơi tôi nên lưu giữ các hằng số như vậy. Có một vị trí nào đó trong một số tài nguyên liên quan đến web chẳng hạn như web.xml (thay vì có một hằng số trong một trong các mã nguồn của lớp) không? – Alexander