java读取 *.properties 配置以及乱码问题解决

版权声明:本文为博主原创文章,互联网的本质是自由与分享,若您需要引用、转载,只需要注明来源及原文链接即可 https://blog.csdn.net/qq_34207366/article/details/85072298

在javaWeb项目中,一些常用的数据可以放到.properties文件中,以便于修改和维护。
我需要实现的是将.properties文件的配置信息显示在.jsp中,用于前端展示。
目前我只知道有这两种方法可以实现
1、使用ResourceBundle
2、使用 JSTL 标签 fmt:message

准备

  • 首先需要创建一个 .properties 文件
  • 自己创建的配置文件和工程中的配置文件一样放在resources目录下
  • 创建的配置文件为 conf-my.properties
  • 配置文件具体内容如下
name=阿豪
version=1.0

1、使用ResourceBundle

  • 在jsp页面引入 ResourceBundle
    <%@ page language="java" import="java.util.ResourceBundle" %>
  • 使用ResourceBundle 加载properties文件
    ResourceBundle resource = ResourceBundle.getBundle("conf-my"); //不需要后缀
  • 读取配置值
    resource.getString("version"); //properties中的key

具体示例

<%@ page language="java" import="java.util.ResourceBundle" %>
<% 
  ResourceBundle resource = ResourceBundle.getBundle("conf-my"); //不需要后缀 
%>
<!DOCTYPE html>
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
        <!-- 通过resource.getString(key) 获取value -->
        <title><%=resource.getString("name") %></title>
    </head>
    <body>
    	<p>version:<%=resource.getString("version") %></p>
    	
        <script type="text/javascript">
        	 //js 使用方式
            var version= 'resource.getString("version")';
        </script>
    </body>
</html>



2、使用JSTL标签fmt:message

  • 引入jstl中的fmt标签
    <%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt"%>
  • 使用fmt:setBundle加载properties文件(basename:为文件名,var:变量名)
    <fmt:setBundle basename="conf-my" var="conf-my" />
  • 使用fmt:message读取配置值(key配置文件的key,var:变量名,bundle引用配置文件)
    <fmt:message key="varsion" var="v" bundle="${conf-my}" />
  • 使用EL表达式读取配置值
    ${v}

具体示例

<%@ page language="java" import="java.util.*" contentType="text/html; charset=utf-8" pageEncoding="UTF-8"%>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt"%>
<!-- 加载systemInfo配置文件 -->
<fmt:setBundle basename="conf-my" var="conf-my" />
<!-- 读取配置值varsion -->
<fmt:message key="varsion" var="v" bundle="${conf-my}" />
<fmt:message key="name" var="name" bundle="${conf-my}" />

<!DOCTYPE html>
<html>
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
      <!-- 直接输出配置值 -->
      <title>${name}</title>
    </head>

    <body>
    	 <p>version:${v} %></p>
    	
        <script type="text/javascript">
        	 //js 使用方式
            var version= 'resource.getString("version")';
        </script>
    </body>
</html>



乱码问题

有的人读取 properties 文件中的中文会出现乱码的情况,我就是其中的一个
在百度也找了一些解决方案,但是大部分都是在后台处理的,而我不想这么麻烦,我只需要读取一个配置就可以了。
最终我找到了一个简单的解决方案

1、将 .properties 配置文件中的中文转换为Unicode

\u963f\u8c6a,转换后大概是这样

name=阿豪
version=1.0

修改为

name=\u963f\u8c6a
version=1.0

就可以正常显示了。

2、如果你使用的IDEA开发工具不妨试试这种方法

  • 在文件创建的时候可能编码格式不是utf-8;
  • 你需要在你的IDEA中设置一下
  • Ctrl + Alt + s 打开设置
  • 在这里插入图片描述
  • 如果还是无效,将.properties文件删除重新创建即可

猜你喜欢

转载自blog.csdn.net/qq_34207366/article/details/85072298