2008-09-11 29 views
6

Trong Servlet của tôi, tôi muốn truy cập thư mục gốc của ngữ cảnh để tôi có thể làm một số JavaScript rút gọn.Truy cập Đường dẫn ngữ cảnh Tomcat từ Servlet

Có thể thực hiện việc rút gọn như là một phần của quá trình cài đặt nhưng tôi muốn thực hiện việc đó khi khởi động Servlet để giảm chi phí triển khai.

Có ai biết phương pháp lấy thư mục ngữ cảnh để tôi có thể tải và ghi tệp vào đĩa không?

Trả lời

13

Điều này sẽ cung cấp cho bạn đường dẫn thực mà bạn có thể sử dụng để trích xuất/chỉnh sửa tệp.

Javadoc Link

Chúng tôi đang làm điều gì đó tương tự trong trình nghe ngữ cảnh.

public class MyServlet extends HttpServlet { 

    public void init(final ServletConfig config) { 
     final String context = config.getServletContext().getRealPath("/"); 
     ... 
    } 

    ... 
} 
+0

Rực rỡ! Chính xác những gì tôi đã sau. Tôi nghi ngờ đây là những gì wrumsby đã được chụp cho câu trả lời của mình. Chất lượng nội dung trên trang web này tiếp tục gây ấn tượng với tôi. –

-1

Bạn có nghĩa là:

public class MyServlet extends HttpServlet { 

    public void init(final ServletConfig config) { 
     final String context = config.getServletContext(); 
     ... 
    } 

    ... 
} 

Hoặc một cái gì đó phức tạp hơn?

+0

Đây có thể là con đường phù hợp nhưng tôi không nghĩ nó mang lại cho tôi tất cả các con đường ở đó. Tôi vẫn cần có khả năng mở các tập tin nằm trong thư mục ngữ cảnh. –

0

Tôi đã googling kết quả và không nhận được ở đâu. Trong các trang JSP cần sử dụng Java Script để truy cập vào contextPath hiện tại, nó thực sự khá dễ dàng.

Chỉ cần đặt các dòng sau vào đầu html bên trong khối script của bạn.

// set up a global java script variable to access the context path 
var contextPath = "${request.contextPath}" 
2

Trong Servlet của tôi, tôi muốn truy cập vào thư mục gốc của bối cảnh để tôi có thể làm một số hoạt Javascript rút gọn

Bạn cũng có thể truy cập các tập tin trong WebContent bởi ServletContext#getResource(). Vì vậy, nếu tập tin JS của bạn là ví dụ đặt tại WebContent/js/file.js sau đó bạn có thể sử dụng sau trong Servlet của bạn để có được một tay cầm File của nó:

File file = new File(getServletContext().getResource("/js/file.js").getFile()); 

hoặc để có được một InputStream:

InputStream input = getServletContext().getResourceAsStream("/js/file.js"); 

Điều đó nói rằng , bạn có cần giảm thiểu các tệp JS không? Tôi chưa bao giờ thấy sự cần thiết phải giảm thiểu yêu cầu dựa trên, nó sẽ chỉ cần thêm nhiều chi phí không cần thiết. Bạn có thể muốn làm điều đó chỉ một lần trong khi khởi động ứng dụng. Nếu vậy, sau đó sử dụng một Servlet cho điều này là một ý tưởng tồi. Sử dụng tốt hơn ServletContextListener và làm điều của bạn trên contextInitialized().

Các vấn đề liên quan