public abstract class ResourceBundle extends Object 下列类的父类: ListResourceBundle, PropertyResourceBundle 资源束包含特定于语言环境的对象。当程序需要一个特定于语言环境的资源时,如 String ,程序可以从适合当前用户语言环境的资源束中装入它。以这种方式,可以写大部分独立于用户语言环境的程序代码,它与大部分资源束中的特定于语言环境的信息相隔离。 这使得编程可以: 容易本地化或翻译成不同的语言 一次处理多种语言环境 以后容易更改以支持更多的语言环境 一个资源束从概念上讲是相关的类集合,这些类是从 ResourceBundle 继承而来的。 ResourceBundle 的每个相关的子类有同一基名并加上标识它的语言环境的附加成分。例如,假设您的资源束命名为 MyResources。您写的第一个类可能是缺省的资源束,它与它的家族有同一个名字–MyResources 。也可按需要提供许多特定于语言环境的类:例如,可能为它提供一个德文的名字 MyResources_de。 ResourceBundle 的每个相关的子类包含同样的项目,但是项目已经为那个 ResourceBundle 子类描述的语言环境所翻译。例如,MyResources 和 MyResources_de 可能都有一个用在确认操作按钮上的 String 。在 MyResources 中,String 可能包含 OK ,在 MyResources_de 中,它可能包含 Gut。 如果对不同的国家有不同的资源,可做出规定:例如, MyResources_de_CH 是 Switzerland 的资源。如果仅想更改规定中的一些资源,可以这样做。 当您的程序需要特定于语言环境的对象时,它使用 getBundle 方法装入 ResourceBundle 类: ResourceBundle myResources = ResourceBundle.getBundle(“MyResources”, currentLocale); 第一个参数指定包含有疑问对象的资源束的家族名。第二个参数指定了期望的语言环境。getBundle 使用这两个参数来构造 ResourceBundle 子类的名字,它应按下面的方法装入。 资源束用不同的后缀查找类,根据(1) 期望的语言环境和 (2) 缺省的语言环境(基类), 以下面从更低级别(指定较多的)到父类级别(指定较少的)的顺序来查找: baseclass + “_” + language1 + “_” + country1 + “_” + variant1 baseclass + “_” + language1 + “_” + country1 baseclass + “_” + language1 baseclass baseclass + “_” + language2 + “_” + country2 + “_” + variant2 baseclass + “_” + language2 + “_” + country2 baseclass + “_” + language2 查找的结果是一个类,但是那个类可能由磁盘上的特性文件支持。如果查找失败,getBundle() 抛出 MissingResourceException 异常。 基类必须 完全合格(例如,myPackage.MyResources, 而不仅仅是 MyResources)。 它必须是您的代码可执行的;它不能是对调用 ResourceBundle.getBundle 的包私有的类。 注意:ResourceBundle 被内部用于访问 NumberFormats、Collation 等。查找策略是相同的。 资源束包含键/值对。键用于唯一地识别资源束中特定于语言环境的对象。下面是一个包含键/值对的 ListResourceBundle 的例子: class MyResource extends ListResourceBundle { public Object[][] getContents() { return contents; } static final Object[][] contents = { // LOCALIZE THIS {“OkKey”, “OK”}, {“CancelKey”, “Cancel”}, // END OF MATERIAL TO LOCALIZE }; } 键总是 String。 在这个例子中,键是 OkKey 和 CancelKey。 在上面的例子中,值也是 String–OK 和 Cancel–但是它们不是一定如此。值可
目录 实时ETL模块开发准备 一、编写配置文件 二、创建包结构 三、编写工具类加载配置文件 实时ETL模块开发准备 一、编写配置文件 在公共模块的resources目录创建配置文件:config.properties # CDH-6.2.1 bigdata.host=node2 # HDFS dfs.uri=hdfs://node2:8020 # Local FS local.fs.uri=file:// # Kafka kafka.broker.host=node2 kafka.broker.port=9
使用ResourceBundle读取配置文件的例子如下: package com.yawn; import java.io.IOException; import java.util.Locale; import java.util.ResourceBundle; public class TestBudle { public static void main(String[] args) throws IOException { // 使用 getBundle 方法加载 ResourceBu
IDEA增加properties 📷 添加locales 📷 生成properties文件 📷 测试实例 package com.mjoker; import org.junit.Test; import java.util.Locale; import java.util.ResourceBundle; public class BundleTest { @Test public void testCase1() { ResourceBundle bundl
资源束(ResourceBundle)是一个本地化对象。它封装了适用于本地环境的资源; 这个类主要用来解决国际化和本地化问题。国际化和本地化可不是两个概念,两者都是一起出现的。可以说,国际化的目的就是为了实现本地化。
修改properties文件的目录:在application.yml或者application.properties中配置 spring.message.basename
如果要想实现国际化的操作,那么首先要解决的问题就是如何读取资源文件的问题;所谓的资源文件 就是指文件后缀名称为:“*.properties”,里面保存的内容按照“key = value”的形式保存。
在项目的开发过程中,为了统一配置的管理,我们经常需要将一些配置信息根据环境的不同,配置在不同的properties中,然后从里面进行读取。而Properties类作为最基础也是最经常使用的类,通过本文我们来学习一下它的使用,然后再顺便学习下其他几种读取properties文件的方式。
在前面的章节中,我们已经懂得如何获取数据库连接 以及 单元测试,下面我们来使用 Statement 来实现 JDBC 的增删查改。
一、前言 Java工程中想log4j、数据库连接等配置信息一般都写在.properties文件中,那么如何读取这些配置信息呢?下面把相关方法记录下来供以后查阅。 二、.properties文件 配置文件的一种,内容以键值对的形式存在,且每个键值对独占一行。#号作为行注释的起始标志,中文注释会自动进行unicode编码。示例: # ip and port of server socket ip=
之前曝了一个核弹级的漏洞“log4j RCE”,官方的修补方案也逐渐完善。本篇就拿 log4j 作为主题讲一下几个发现。
相信对于一名JAVA开发者开说properties文件一定再熟悉不过了,比如一下配置: config.properties会经常存放一些系统常量,版本号,路径之类的 database.properties存放数据库的连接参数 log4j.properties 日志的一些基本配置 redis.properties 缓存数据库的一些配置 当然前缀是根据用能自行定义的,一般来说文件的内容的格式是“键=值”的格式,文本注释信息可以用"#"来注释,下面来说说开发中如何读写properties配置文件。 Java读取P
这个类主要用来解决国际化和本地化问题。国际化和本地化可不是两个概念,两者都是一起出现的。可以说,国际化的目的就是为了实现本地化,详细的介绍可以看本文的最后。比如对于“取消”,中文中我们使用“取消”来表示,而英文中我们使用“cancel”。若我们的程序是面向国际的(这也是软件发展的一个趋势),那么使用的人群必然是多语言环境的,实现国际化就非常有必要。而ResourceBundle可以帮助我们轻松完成这个任务:当程序需要一个特定于语言环境的资源时(如 String),程序可以从适合当前用户语言环境的资源包(大多数情况下也就是.properties文件)中加载它。这样可以编写很大程度上独立于用户语言环境的程序代码,它将资源包中大部分(即便不是全部)特定于语言环境的信息隔离开来。
利用ResourceBundle加载国际化文件,这里列出四个方法,分别是利用默认Locale、zh_CN、en_US以及带占位符的处理方式。这里需要注意的是BaseName为classpath下的目录+/+国际化文件名前缀,即i18n/mymessage
在上下文与IoC对ApplicationContext以及Context相关的设计模式进行了介绍。ApplicationContext作为一个Context在应用的运行层提供了IoC容器、事件、国际化等功能接口。
这里只发了一部分,未完善,后期完善 实体有用户和购物车,商品在前端写死了,通过用户名来连接用户表和购物车表。 弊端: 1.逻辑写在了dao层 所以代码逻辑有点乱 ---- 过滤器 package com.hyy.taobao.filter; import com.hyy.taobao.api.entity.User; import javax.servlet.*; import javax.servlet.annotation.WebFilter; import javax.se
前几天围绕着JDBC编程进行了系统的学习。现在我们对Java程序数据库操作已经是轻车熟路了。也学会了使用各种框架来帮助我们简化编程。 今天是学习计划的第七天,虽然学习热情没有前几天高涨了。但是,写博客总结的习惯应该要坚持下去。废话不多说了。 今天的学习内容是JavaWeb开发——软件国际化。
[ResourceBundle(“AccessMessages”)] private static var rb : ResourceBundle;
1、公司使用的Greenplum和Postgresql,确实让我学到不少东西。简单将使用jdbc连接Greenplum和Postgresql数据库。由于使用maven仓库,不能下载Greenplum的jar包,但是可以下载Postgresql的jar包,所以Greenplum的jar包,自己可以百度自行下载。名字就叫做greenplum.jar。
其中String的含义是packagerName。每个包的一种语言表示都对应一个StringManager。
在日常使用的开源框架中,都会有不同程度的国际化在里面; 刚好现在需要让程序中搞一下国际化,那么就跟踪一下如何在SpringBoot中使用国际化
使用J2SE API读取Properties文件的六种方法 1。使用Java.util.Properties类的load()方法 示例: InputStream in = lnew BufferedInputStream(new FileInputStream(name)); Properties p = new Properties(); p.load(in); 2。使用java.util.ResourceBundle类的getBundle()方法 示例: ResourceBundle r
File > Project Structure > facets > 添加Android-Gradle > 关闭并重新打开项目并重建.
项目中会把一些环境变量、公共属性配置到属性文件中,总结了一些工程加载属性文件的方式。
在开发中,国际化(Internationalization),也叫本地化,指的是一个网站(或应用)可以支持多种不同的语言,即可以根据用户所在的语言类型和国家/地区,显示不同的文字。能够让不同国家,不同语种的用户方便使用,提高用户体验性。
首先看一下思维导图 入门可以参看我上篇文章Redis 30分钟快速入门 本文主要内容 1: 联接远程redis服务器 2: 使用MyProperties池化联接 3: 使用Reso
JDBC (java语言连接数据库)是sun公司制定的一套接口 JDBC 代码编写的六步 1、注册驱动 2、获取连接 3、获取数据库操作对象 4、执行sql语句 5、处理查询结果集 6、释放资源 ---- 1、注册驱动 有两种方式: //第一种 Driver driver=new com.mysql.jdbc.Driver(); DriverManager.registerDriver(driver); //第二种注册方式(常用) Class.forNam
package com.action; import java.io.InputStream; import java.util.Locale; import java.util.Properties; import java.util.ResourceBundle; public class MainTest { public static void main(String[] args) throws Exception { //第一种方式 ClassLoader
Redis不仅可以使用命令来操作,现在基本上主流的语言都有API支持,比如Java、C#、C++、PHP、Node.js、Go等。在官方网站里列一些Java的客户端,有Jedis、Redisson、Jredis、JDBC-Redis等其中官方推荐使用Jedis和Redisson。
在此之前,写过在两篇文章,是关于如何在 SpringBoot 内实现统一参数校验和自定义校验注解的。毕竟作为后端来讲,对于前端传来的数据,需要保持高度的警惕。避免出现异常数据,导致系统异常。统一参数校验和自定义校验注解,可以帮助我们更加优雅和严格的完成参数校验,减少出错的概率。
1.使用java.util.Properties类的load()方法 示例: InputStream in = lnew BufferedInputStream(newFileInputStream(name)); Propertiesp = new Properties(); p.load(in); 2.使用java.util.ResourceBundle类的getBundle()方法 示例: ResourceBundle rb = ResourceBundle.getBundle(name, Loca
package com.test; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.IOException; import java.io.InputStream; import java.util.Properties; import java.util.ResourceBundle; /** * 加载项目中properties配置文件的三种方式 * @author hang
首先祝大家新年快乐,感谢大家过去一年的陪伴。大蕉在这里给大家拜年啦啦。新年快乐,我爱学习。 恭喜发财,红包拿来~ 好了切入正题,一直在工作中会聊到很多锁的问题,今天跟大家一起闲聊一下,究竟什么是锁,为什么需要锁,以及分布式的情况下,怎么设计和实现锁。 什么是锁? 明·魏禧《大铁椎传》上是这样解释的: 锁:置于可启闭的器物上,以钥匙或暗码(如字码机构、时间机构、自动释放开关、磁性螺线管等)打开的扣件,例如:柄铁折叠环复,如锁上练,引之长丈许。 锁,就是要对一个可启闭的东西上,拥有者拥有着钥匙或者某些 Code
当产品有多语言环境的需求时,我们就需要为不同的语言提供不同的处理。前端解决了绝大多数的国际化问题,偶尔后端也需要一些国际化需求,刚好 Java 就支持这种操作
国际化也称作i18n,其来源是英文单词 internationalization的首末字符i和n,18为中间的字符数。由于软件发行可能面向多个国家,对于不同国家的用户,软件显示不同语言的过程就是国际化。通常来讲,软件中的国际化是通过配置文件来实现的,假设要支撑两种语言,那么就需要两个版本的配置文件。
使用ClassLoader加载properties配置文件生成对应的输入流 public static String getProperties(String key) throws Exception { Properties properties = new Properties(); // 使用ClassLoader加载properties配置文件生成对应的输入流 InputStream in = PropertiesUtil.class.getClas
在上一章节中,我们虽然认识了 JDBC 的基本概念,以及完整的执行入门示例。但是对于程序中的每个操作还是比较陌生的,所以在后续的篇章中,我再将其拆分,逐步进行讲解。
假设我们开发一个支持多国语言的Web应用系统,要求能够根据客户端系统的语言类型返回对应的界面。
两个文件夹内添加一个名为info.properties(文件后缀名必须是properties,文件名随意)
互联网业务出海,将已有的业务Copy to Global,并且开始对各个国家精细化,本土化的运营。对于开发人员来说,国际化很重要,在实际项目中所要承担的职责是按照客户指定的语言让服务端返回相应语言的内容。本文基于spring的国际化支持,实现国际化的开箱即用,静态文件配置刷新生效以及全局异常国际化处理。
前面提到了你自己开发、给测试小妹妹测试以及给运维人员发布,一共三个环境,而实际上一个软件系统的环境往往不止这些。
本项目gitee仓库链接如下:https://gitee.com/DaHuYuXiXi/easy-tomcat.git
Java 9 的新特性都列在官方页面当中,本文介绍值得你关注的其中几个点: ▶ 进程操作改进(JEP 102: Process API Updates) 新增的 java.lang.ProcessHandle 类丰富了对进程的操作,同时原有的 java.lang.Process 类的功能也被加强了。 ▶ 竞争锁的性能优化(JEP 143: Improve Contended Locking) 能够改善程序运行时的多线程同步效率。 ▶ 代码执行效率改善(JEP 197: Segmented Code Cac
工厂模式是一种在工程中广泛应用的设计模式,对代码的解耦合起到了很大的作用。实际上,我们可以将Spring理解成封装了我们工程中大量重复代码的一种工具,上一节说了,Spring中最为重要的组件就是IOC,而IOC中非常重要的部分就是应用了工厂模式的代码。而工厂模式依赖于Java的反射机制,所以,我们从反射机制讲起,一步步了解Spring的Bean工厂。
Servlet学习笔记 1.0 Servlet 概述 1.1 Servlet是运行在服务器端的Java小程序,通过HTTP协议用于接受客户端请求,并发出响应。 1.2 Servlet中的方法 public void servlet(ServletRequest req,ServletRequest res) throws ServletExcepation,java.io.IOException ServletRequest req:代表着请求对象,该对象有HTTP协议的请求部分的所有内容。它的实现类由服务器提供,封装数据也是服务器来做。 ServletRequest res:代表着响应对象,该对象中由我们写数据(HTTP协议的响应部分)进去。它的实现类也是由服务器提供的。 service: 由服务器调用,每次请求都会调用一次。服务器采用的是多线程机制。 2.0 Servlet 的编码步骤 2.1 编写一个类实现javax.servlet接口,或者继承javax.servlet.GenericServlet. 2.2 编译 set classpath=%classpath%;E:\IDE\tomcat-8.0.26\lib\servlet-api.jar javac -d . HelloServlet.java 2.3 修改web.xml 2.4 部署,把应用部署到Tomcat上,访问地址:http://localhost:8080/DemoServlet/hello 3.0 Servlet 的执行过程 4.0 Servlet 的编写方式 1、javax.servlet.GenericServlet:通用的Servlet实现,抽象类 2、javax.servlet.http.HttpServlet:与HTTP协议有关的,抽象类。 3、Servlet的核心类 5.0 Servlet 的生命周期 6.0 Servlet 的线程安全 尽量使用局部变量,避免使用实例变量。 7.0 Servlet 的一些细节 7.1 一个Servlet可以映射到多个地址上。 7.2 可以使用地址通配符* 7.2.1(优先级高) *.do 必须以*号开头 如:*.do 7.2.2(优先级高) 以/开头,必须以*结尾 如:/action/* 7.2.3 默认的Servlet,映射路径是<url-pattern>/</url-pattern>。不需要配,因为默认的Servlet负责处理用户请求找不到的处理工作。一切都是Servlet。 7.2.4 应用在启动时就完成Servlet的实例化和初始化。2为启动的顺序。 web.xml <load-on-startup>2</load-on-startup> 8.0 ServletConfig:Servlet的参数配置 8.1 ServletConfig:代表看针对当前Servlet的参数配置。 在Servlet的配置文件中,可以使用一个或多个<init-param>标签为servlet配置一些初始化参数。 8.2 如何得到ServletConfig对象的应用:在初始化Servlet,由容器产生,并传递给你 9.0 ServletContext 9.1 ServletContext代表着当前应用。每个应用只有一个ServletContext对象的实例,由容器提供。 9.2 如何获取ServletContext的实例:ServletConfig.getServletContext(); 9.3 ServletContext的生命周期:诞生,应用被加载时就由容器被创建好。活着,应用不挂就一直活着。死亡,应用挂了就挂了。 9.4 域(存活范围)对象:ServletContext称为应用范围域对象。 ServletContext{ private Map<String,Object>map = new HashMap<String,Object>(); public void setAttribute(String key,Object value){ map.put(key,value); } public void removeAttribut
很多时候,我们在编写程序的时候,需要连接数据库的操作,有些地方需要存储数据库的连接信息,但是为了迁移等方便,我们不能每次更改数据库的信息就对程序的源代码进行更改,这个时候我们就需要一个配置文件来帮助我们来存储数据库信息
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/162672.html原文链接:https://javaforall.cn
领取专属 10元无门槛券
手把手带您无忧上云