【问题标题】:how to use property file in jsp [duplicate]如何在jsp中使用属性文件[重复]
【发布时间】:2026-01-11 21:35:01
【问题描述】:

可能重复:
How to load a .properties file into a 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());
}

我已经尝试了很多方法来访问属性文件。我该如何解决这个问题?

【问题讨论】:

  • 你的应用结构是什么? jsp和properties文件在哪里??
  • 文件在你项目的/src文件夹下吗?

标签: java jsp properties


【解决方案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%>

【讨论】:

  • 我需要将属性文件放在我的包中的什么位置?
  • 通常你必须将属性文件放在这里(在名为“classes”的文件夹中):WEB-INF -> classess
【解决方案2】:

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

有两种典型的方法可以满足您的需要。

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

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

甚至更好

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

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

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

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

现在您的系统配置可以由部署者独立控制。

【讨论】:

    【解决方案3】:

    尝试将FileInputStream fis = new FileInputStream("myproperties.properties"); 更改为FileInputStream fis = new FileInputStream(new File("myproperties.properties"));

    另外,请确保您正在使用的类已经导入到您的 jsp 文件中。 即,

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

    【讨论】:

    • 是的 Russell Gutierrez 我在各种文件夹 lib,src 中尝试过,
    • 是的,我已经正确导入了包。