ApplicationContext更强的功能-学习笔记
---恢复内容开始---
一、国际化支持
二、资源访问
三、事件传递
国际化支持
ApplicationContext继承了org.springframework.context.MessageResource接口,使用getMessage()的各个方法来取得信息资源
从而实现国际化信息的目的。getMessage()有三个方法:
1)String getMessage(String code,Object[] args,String default,Locale loc)
2)String getMessage(String code,Object[] args,Locale loc)
3)String getMessage(MessageSourceResolvable resolvable,Locale locale),通过MessageSourceResolvable来传入需要获取信息的代号
当ApplicationContext被加载的时候,它会自动查找在XML中定义的messageSource,Spring约定这个Bean必须被定义为messageSource.
开发人员可以通过org.springframework.context.support.ResourceBundleMessageSource来取得国际化信息。
实例如下:
1)定义Spring的配置文档config.xml
2)定义存放信息资源的文档
3)编写测试程序,查看输出
1.config.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN"
"http://www.springframework.org/dtd/spring-beans.dtd">
<beans>
<!--负责国际化支持-->
<bean id=“messageSource” class="org.springframework.context.support.ResourceBundleMessageSource">
<property name="basename">
<!--国际化支持的定义在文件名为message的文件夹中-->
<value>messages</value>
</property>
</bean>
<bean id="HelloWorld" class="com.gc.action.HelloWorld"></bean>
<bean id="date" class="java.util.Date"/>
</beans>
存放信息资源的文档的名称为messages.properties或messages.class
2.用记事本编写存放信息资源的文档messages.properties.
HelloWorld=问候语:{0} 问候时间:{1}
{0} {1} 用来标识当从外部传入参数时,传入值存放的位置
把messages.properties存放在ClassPath下,即myApp\WEB-INF\src下
3.测试程序TestHelloWorld.java
//**********TestHelloWorld.java*********
package com.gc.test;
import java.util.Calendar;
import java.util.Locale;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.FileSystemXmlApplicationContext;
import com.gc.action.HelloWorld;
public class TestHelloWorld{
public static void main(String[] args) throws InstantiationException,IllegalAccessException,
ClassNotFoundException{
//通过ApplicationContext获取配置文档
ApplicationContext actx=new FileSystemXmlApplicationContext("config.xml");
//设定当前时间
Object[] objs=new Object[] {"HelloWorld",Calendar.getInstance().getTime()};
//国际化支持
String msg=actx.getMessage("HelloWorld",objs.Local.CHINA)
System.out.println(msg);
}
}
说明:
1.objs是一个数组,用来存放要传入的内容,数组中的内容分别对应与messages.properties中的{0}和{1}
2.输出的结果,中文为乱码:因为JAVA本身在转码过程中出现了问题
解决方法:
cmd中输入cd\回到C盘根目录,然后输入native2ascii messages.properties messages.txt
查看C盘生成的messages.txt文件,复制内容到messages.properties中,覆盖原来的就可以
在myApp/WEB-INF/src下用同样的方法新建一个message_en_US.properties文件输入:HelloWorld=Language{0} Time{1}
修改测试程序TestHelloWorld,将Locale.CHINA改为Locale.US
总结:只需要修改Locale就可以很容易地实现对国际化的支持
资源访问
ApplicationContext继承了ReourceLoader接口,开发人员可以使用getResource()方法并指定资源文件的URL来获取
ApplicationContext对资源文件的存储在设定资源文件的路径上有如下3种方式:
1.虚拟路径来存取;
2.绝对路径来存取;
3.相对路径来存取。
1.资源文件位于CLASSPATH下:classpath: 是Spring约定的URL虚拟路径
ApplicationContext actx=new FileSystemXmlApplicationContext("config.xml");
Resource resource=actx.getResource("classpath:messages.properties");
2.实际路径:file:或http:
ApplicationContext actx=new FileSystemXmlApplicationContext("config.xml");
Resource source = actx.getResource("file:d:/eclipse/workspace/myApp/WEB-INF/src/messages.properties");
3.相对路径
ApplicationContext actx=new FileSystemXmlApplicationContext("config.xml");
Resource source = actx.getResource("WEB-INF/src/messages.properties");
当取得一个Resource后,开发人员可以使用:
getFile() 来存取资源文件内容
exists()来检查资源文件是否存在
isOpen()检查资源文件是否被打开
getURL()返回资源文件的URL
事件传递: 待续...
---恢复内容结束---
ApplicationContext更强的功能-学习笔记的更多相关文章
- Delphi属性比对象的域有更强的功能
8.4 Delphi自定义组件(3) http://tech.163.com 2006-04-29 11:49:34 来源: 清华大学出版社 网友评论0 条 论坛 3. 测试未安装的组件 在将新组 ...
- 强哥jQuery学习笔记
js对象: 1.js内置对象 2.js元素对象 3.jquery对象 js特效: 1.js元素对象 2.jQuery对象 jQuery学习: 1.核心函数 2.选择器 3.筛选 4.文档处理 5.属性 ...
- 强哥ThinkPHP学习笔记
TP框架:1.模板引擎2.MVC设计模式3.常用操作类 模板引擎和框架区别1.模板引擎只是框架中用来做php和html分离 MVC设计模式M model 数据模型V view 视图C control ...
- 强哥PHP学习笔记
1.php的代码,必须放在.php的文件中,php代码必须写在<?php ?>之间. 2.//单行注释 /* 多行注释 */ 3.默认首页index.php index.html inde ...
- 强哥JavaScript学习笔记
js文件放header头最后,js代码放body体最后 js语言定位: js是基于对象的语言 php.java是面向对象的语言 定义变量: var str="hello world" ...
- 强哥MySQL学习笔记
数据库服务器:1.数据库2.数据表 数据表:1.表结构(字段)2.表数据(记录)3.表索引(加快检索) 表引擎:1.myisam2.innodb 查看表字段desc table;删除数据库:drop ...
- 强哥memcache学习笔记
搭建memcache服务器:1.在内存中缓存数据2.数据形态以key->value memcache优点:1.快速缓存2.跨域登录memcache缺点:1.复杂的数据存取的操作2.不能永久保存数 ...
- 强哥HTML学习笔记
html 浏览器的选择:1.火狐2.ie3.chrome4.mac5.opera 安装两款插件:1.firebug2.web develope html页面元素:1.doctype2.htmlhead ...
- 强哥CSS学习笔记
html嵌套css样式:1.外部(推荐)2.内部3.内联(不推荐) css优先级1.内联2.id选择器3.class选择器4.标签 css长度单位:1.px2.em (14px) css选择器:常用选 ...
随机推荐
- javascript数据结构与算法--基本排序算法分析
javascript中的基本排序算法 对计算机中存储的数据执行的两种最常见操作是排序和检索,排序和检索算法对于前端开发尤其重要,对此我会对这两种算法做深入的研究,而不会和书上一样只是会贴代码而已,下面 ...
- FusionCharts-堆栈图、xml格式、刷新数据、添加事件link、传参
*起因* 本来想用Chart.js来搞图表的, 但是来了个新需求,想搞的华丽点,毕竟对Chart.js来说,实现有点难度, *做出的改变* 最终选择了FusionCharts, *难点* 网上关于Fu ...
- mysql [ERROR] Fatal error: Can't open and lock privilege tables: Table 'mysql.host' doesn't exist (转载)
mysql报错Fatal error: Can't open and lock privilege tables: Table 'mysql.host' doesn't exist 2013-11-2 ...
- linux下cp覆盖原so文件时引起的段错误原因确定
原创作品,转载请注明出处http://www.cnblogs.com/leo0000/p/5694416.html 最近因为一个很有意思的段错误学习了一些新的东西. 当时现象是这样的,程序正在运行,系 ...
- 苹果微信下载 iOS微信各版本列表
微信在不断地更新迭代,ios微信下载点击这里立即开始(手机电脑都可以,电脑端要安装iTunes),每个版本都放出一些新的功能或修复相关错误,详情可以点击下面的版本链接进行查看.(这里有Android微 ...
- PHP mkdir 0777权限问题
在linux系统中,即使我们使用root帐号去手工执行php命令: mkdir('test', 0777); 结果文件的权限依然为: drwxr-xr-x 2 root root 4096 Jun 1 ...
- (转载)PHPCMS V9专题路径多了一个斜杠的解决办法
PHPCMSV9的专题,在设置生成静态并且网站的静态设置成生成在根目录的时候,专题路径的URL中会多出一个斜杠,如:http://www.2cto.com//special/ddos/ ,我只能说这是 ...
- 编程之美读书笔记之 -寻找出现次数为1的ID的问题
问题描述: 在一张表里面保存了N个ID,有N-1个ID是出现了两次的,只有一个ID只出现了一次,现在要你把这个ID找出来.如果是两个呢? 解法一: 我们先来解决一个的.假如ID的值的范围是1-k, ...
- 分享一个Visual Studio的背景插件,让堆码更富情趣
忘记一件重要的事情,我使用的是VS 2012版,其他更高版本应该是可以找到的,以下版本就不清楚了.有可能找不到,见谅,也不是我开发的,只是偶尔碰到,拿出来让大家知道. 上周某日,新生命群里面还是一如既 ...
- UIStackView
既要温故又要知新...温故而知新,我懂. 在Cocoachina上看到了,UIStackView. 没用过额,试iOS9的新特性.一研究,妈的还挺眼熟.一想,这不和Android上的线性布局一样么.. ...