医药采购系统平台第3天01:实现国际化配置&工具类的使用&国际化资源文件的定义和使用&定义系统基础配置类config&用户模块的删除和修改功能实现&JSP页面的编写

如果想要获取相关的源码,笔记和相关工具,,增加需求,代码重构,关注我并私信!!!


一 实现国际化配置

1 需求

在前面已经编写的UserServiceImpl类中的insertSysuser()方法中的给用户提示的信息硬编码了,不利于系统维护,如图:

如果提示的信息变化了,就需要手动找到该类中所有的提示信息来修改,很麻烦,不利于系统维护。

那么,就需要使用国际化类来把提示信息提取出来!!!

2 java基础知识

2.1 概念

国际化英文单词为:Internationalization,又称I18N,I为因为单词的第一个字母,18为这个单词的长度,而N代表这个单词的最后一个字母

2.2 Java国际化使用的类

Java国际化主要通过如下3个类完成:

java.util.ResourceBundle 用于加载一个资源(配置文件)

java.util.Locale: 对应一个特定的国家/区域、语言环境。

java.text.MessageFormat: 用于将消息格式化

2.3 国际化资源文件

资源文件的命名可以有3种格式:

1)XXXX_language_country.properties:这种方式的资源文件会优先加载,因为它与当前环境语言_国家)相匹配

例如:language_country

2)       XXXX_language.properties

3)        XXXX_properties

例如:

messages_zh_CN.properties (中文,中华人民共和国)

messages_en_US.properties(英语,美国)

messages.properties

3 ResourcesUtil工具类的介绍

ResourceUtil.java文件由老师提供,把该文件复制的位置如下图:

需要先定义一个资源文件messages.properties,该资源文件所在位置scr/main/resources/resources

默认情况下在properties资源文件中写中文的话只会显示UNICODE编码,如果想要显示中文,需要装一个转中文的插件,

具体可以参考“开发环境.doc文档”中的“properties插件按照”一节

安装好后,messages.properties文件中的内容如下:

注意:102的值带有参数{0}和{1}

测试代码如下:

public static void main(String[] args) {

// 根据当前的操作系统环境获取语言环境

Locale locale = Locale.getDefault();

System.out.println(locale.getCountry());// 输出国家代码

System.out.println(locale.getLanguage());// 输出语言代码

// 加载国际化资源(classpath下resources目录下的messages.properties,如果是中文环境会优先找messages_zh_CN.properties)Resources是目录名称Messages是资源文件的文件名,该文件名默认的扩展名是properties

ResourceBundle rb = ResourceBundle.getBundle("resources.messages", locale);

String retValue = rb.getString("101");// 101是messages.properties文件中的key

System.out.println(retValue);

// 信息格式化,如果在messages.properties资源文件中有{}的参数则需要使用MessageFormat格式化,Object[]数组表示接收传递的参数,数量根据资源文件中的{}个数决定

String value = MessageFormat.format(retValue, new Object[] { 100, 200 });

System.out.println(value);

}

4 工具类ResourcesUtil的使用

测试中的代码写起来很麻烦,因此ResourcesUtil.java就封装了这些代码。它提供了两个静态方法来从资源文件中读取配置信息,这两个重载方法如下:

4.1 方法1:public static String getValue(String fileName, String key)

如果.properties资源文件中没有参数的话,那么就使用如下的方法来获取配置信息中的内容:只需根据key来获取信息

4.2 方法2:public static String getValue(String fileName, String key, Object[] objs)

如果.properties资源文件中有参数的话(例如:{}),就需要传参数来取配置信息中的内容!该方法如下:根据key获取信息且传入动态参数,使用object[] 数组来接收参数:

至于传不传参数取决于实际应用中的资源文件中的定义!!!

4.3 工具类ResourcesUtil的测试

调用上面两个重载方法即可,如下:

....................................................

public static void main(String[] args) {

//从资源文件取配置信息,不用传参

System.out.println(getValue("resources.messages", "101"));

//从资源文件取配置信息,需要传参

System.out.println(getValue("resources.messages", "102",new Object[]{100,200}));

5 本系统国际化配置的实现

5.1简述

对于“国际化配置的实现”这一节中的内容,就是对结果信息的一步步的封装,因此,只有在看完“基础配置类Config”一节的内容后,最终的结果代码才是最终的版本!!!

注意:本系统没有实现国际化,也不需要实现国际化,只是把相关的提示信息配置在了资源文件中,然后使用java提供的国际化技术来获取资源文件中配置的信息,这样做是为了利于系统维护,避免硬编码!!!

5.2 定义国际化资源文件messages.properties

将本系统中所有的提示信息--->包括:操作成功的信息、操作异常的信息、提示信息.............等,统一配置在资源文件,在本系统的java代码中只需要调用工具类ResourcesUtil.java(上面讲过的),就可以从资源文件properties中取出配置信息,从而避免硬编码.

该资源文件所在的目录如图:

messages.properties的内容如下:

默认情况下在该资源文件中写中文的话只会显示UNICODE编码,如果想要显示中文,需要装一个转中文的插件,具体可以参考“开发环境.doc文档”中的“properties插件按照”一节.

当然,你也可以针对下面的提示信息,给客户准备一份“代码大全”。作为一个大型的系统平台,这是很有用处的!!!

title=药品集中采购系统

#通用,规律:都是以数字9开头

900=出现未知错误,请尝试重新操作!

901=输入数据项为空

902=操作对象在系统中不存在

906=操作成功

907=操作成功{0}条,失败{1}条

908=操作成功{0}条,失败{1}条,<a href=\"{2}\" target=\"_blank\">点击查看失败信息</a>

909=请确定年份

910=请选择操作的记录

#用户登录

100=登录系统

101=登录用户不存在

102=登录用户不属于任何角色

103=登录用户无任何操作权限

104=登录用户无任何管理区域

105=没有操作权限

106=此操作需要登录后进行

107=欢迎{0}登录系统!

110=请输入用户账号

111=请输入密码

112=请输入验证码

113=验证码输入错误

114=用户名或密码输入错误

.........................................................................................................................................................

.......................................................................................................................................................................................................

5.3 国际化资源文件messages.properties的使用

在UserServiceImpl.java中使用工具类ResourcesUtil.java从资源文件中获取配置信息,如图

但是,在实际使用时需要将从资源文件中取出的配置信息填充到ResultInfo.java中的,这么看来&#x

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

elastic_solr

可以对需求进行二次开发

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值