如何在 jsp 中使用属性文件

2022-09-02 09:12:10

可能的重复:
如何将 .properties 文件加载到 jsp 中

我正在尝试在JSP中使用我的属性文件,但它无法正常工作并引发错误

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

在这里,我正在尝试访问我的属性文件:

<%
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());
}

我尝试了多种方法来访问属性文件。如何解决此问题?


答案 1

在包中创建 test.properties 文件

pname=xyz
psurname=abc

创建 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%>

答案 2

JSP 在 servlet 容器中运行,因此其当前工作目录由容器定义。通常,它是安装容器的目录或其目录。在任何情况下,它都不是您要存储自定义属性文件的地方。bin

有2种典型的方法可以满足您的需求。

如果您的文件是应用程序的一部分,并且您在部署时从不更改它,则第一种方法是好的。在本例中,请从资源中读取它:

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

甚至更好

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

如果要更改部署环境中的属性文件,则第二种方法很好。在本例中,将其放在容器外部文件系统中的某个位置。例如,在Linux上或您喜欢的任何其他位置。现在,您应该在创建 时使用绝对路径。/opt/mycompany/conf/myproperties.propertiesFileInputStream

为了使系统更好地配置,您不应该在代码中写入配置文件的路径。更好的方法是使用系统属性将其传递给应用程序,例如,在运行应用程序服务器时添加参数。如果要读取文件,请执行以下操作:-Dmycompany.conf=/opt/mycompany/myprops.properties

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

现在,部署程序可以独立控制系统的配置。