2012-10-02 32 views
16

thể trùng lặp:
How to load a .properties file into a jsplàm thế nào để sử dụng tập tin bất động sản trong jsp

Tôi cố gắng để sử dụng tập tin bất động sản của tôi trong JSP nhưng nó sẽ không hoạt động đúng và ném một lỗi

Error: myproperties.properties (The system cannot find the file specified) 

Ở đây tôi đang cố gắng truy cập tệp thuộc tính của mình:

<% 
try 
{ 
    FileInputStream fis = new FileInputStream("myproperties.properties"); 

    Properties p = new Properties(); 
    p.load(fis); 
    String LogFileName = p.getProperty("NameOfLogFile"); 
    out.println(LogFileName); 

} 
catch (Exception e) 
{// Catch exception if any 
    out.println(e.getMessage()); 
} 

Tôi đã thử qua nhiều cách để truy cập tệp thuộc tính. Làm thế nào để sửa lỗi này?

+0

cấu trúc ứng dụng của bạn là gì?Tệp jsp và thuộc tính ở đâu? –

+0

Tệp có nằm trong thư mục '/ src' của dự án của bạn không? –

Trả lời

29

tạo test.properties tập tin trong gói của bạn

pname=xyz 
psurname=abc 

tạo file jsp:

<%@ page language="java" import="java.util.*" %> 
<%@ page import = "java.util.ResourceBundle" %> 
<% ResourceBundle resource = ResourceBundle.getBundle("test"); 
    String name=resource.getString("pname"); 
    String surname=resource.getString("psurname"); %> 
    <%=name %> 
<%=surname%> 
+0

nơi nào tôi cần đặt tệp thuộc tính vào gói của mình? –

+0

Thông thường bạn phải đặt các tệp thuộc tính ở đây (trong thư mục có tên là "các lớp"): WEB-INF -> classess – Optio

4

JSP chạy trong thùng chứa servlet, do đó thư mục làm việc hiện tại của nó được xác định bởi vùng chứa. Thông thường, đây là thư mục chứa vùng chứa hoặc thư mục bin của nó. Trong mọi trường hợp, nó không phải là nơi bạn muốn lưu trữ tập tin thuộc tính tùy chỉnh của bạn.

Có 2 cách tiếp cận điển hình để thực hiện những gì bạn cần.

Cách tiếp cận đầu tiên là tốt nếu tệp của bạn là một phần của ứng dụng và bạn không bao giờ thay đổi nó khi triển khai. Trong trường hợp này đọc nó từ nguồn:

props.load(getClass().getResourceAsStream())

hoặc thậm chí tốt hơn

props.load(Thread.currentThread().getContextClassLoader().getResourceAsStream())

Cách tiếp cận thứ hai là tốt nếu bạn muốn thay đổi tập tính của bạn trên môi trường triển khai. Trong trường hợp này, hãy đặt nó ở đâu đó trong hệ thống tệp bên ngoài vùng chứa của bạn. Ví dụ: /opt/mycompany/conf/myproperties.properties trên linux hoặc tại bất kỳ vị trí nào khác mà bạn thích. Bây giờ bạn nên sử dụng đường dẫn tuyệt đối khi tạo FileInputStream.

Để làm cho hệ thống có thể định cấu hình tốt hơn, bạn không nên ghi đường dẫn đến tệp cấu hình bên trong mã. Cách tiếp cận tốt hơn là chuyển nó đến ứng dụng bằng các thuộc tính hệ thống, ví dụ: thêm tham số như -Dmycompany.conf=/opt/mycompany/myprops.properties khi bạn đang chạy máy chủ ứng dụng của mình. Khi bạn muốn đọc các tập tin thực hiện như sau:

new FileInputStream(System.getProperties("mycompany.conf"))

cấu hình Bây giờ hệ thống của bạn có thể kiểm soát một cách độc lập bởi Deployer.

0

Hãy thử thay đổi FileInputStream fis = new FileInputStream("myproperties.properties");-FileInputStream fis = new FileInputStream(new File("myproperties.properties"));

Ngoài ra, hãy chắc chắn rằng các lớp học mà bạn đang sử dụng đã được nhập khẩu trong file jsp của bạn. Cụ thể,

<%@ page import="java.io.FileInputStream" %> 
<%@ page import="java.io.File" %> 
+1

vâng tôi có các gói được nhập đúng cách. –

+0

yes Russell Gutierrez tôi đã thử trong nhiều thư mục lib, src, –

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