---恢复内容开始---

一、国际化支持

二、资源访问

三、事件传递

国际化支持

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更强的功能-学习笔记的更多相关文章

  1. Delphi属性比对象的域有更强的功能

    8.4 Delphi自定义组件(3) http://tech.163.com 2006-04-29 11:49:34 来源: 清华大学出版社 网友评论0 条 论坛   3. 测试未安装的组件 在将新组 ...

  2. 强哥jQuery学习笔记

    js对象: 1.js内置对象 2.js元素对象 3.jquery对象 js特效: 1.js元素对象 2.jQuery对象 jQuery学习: 1.核心函数 2.选择器 3.筛选 4.文档处理 5.属性 ...

  3. 强哥ThinkPHP学习笔记

    TP框架:1.模板引擎2.MVC设计模式3.常用操作类 模板引擎和框架区别1.模板引擎只是框架中用来做php和html分离 MVC设计模式M model 数据模型V view 视图C control ...

  4. 强哥PHP学习笔记

    1.php的代码,必须放在.php的文件中,php代码必须写在<?php ?>之间. 2.//单行注释 /* 多行注释 */ 3.默认首页index.php index.html inde ...

  5. 强哥JavaScript学习笔记

    js文件放header头最后,js代码放body体最后 js语言定位: js是基于对象的语言 php.java是面向对象的语言 定义变量: var str="hello world" ...

  6. 强哥MySQL学习笔记

    数据库服务器:1.数据库2.数据表 数据表:1.表结构(字段)2.表数据(记录)3.表索引(加快检索) 表引擎:1.myisam2.innodb 查看表字段desc table;删除数据库:drop ...

  7. 强哥memcache学习笔记

    搭建memcache服务器:1.在内存中缓存数据2.数据形态以key->value memcache优点:1.快速缓存2.跨域登录memcache缺点:1.复杂的数据存取的操作2.不能永久保存数 ...

  8. 强哥HTML学习笔记

    html 浏览器的选择:1.火狐2.ie3.chrome4.mac5.opera 安装两款插件:1.firebug2.web develope html页面元素:1.doctype2.htmlhead ...

  9. 强哥CSS学习笔记

    html嵌套css样式:1.外部(推荐)2.内部3.内联(不推荐) css优先级1.内联2.id选择器3.class选择器4.标签 css长度单位:1.px2.em (14px) css选择器:常用选 ...

随机推荐

  1. [Python] 目录和文件操作

    在Linux系统下用Python写脚本,肯定不能避免各种与目录和文件夹有关的操作.为了以后方便查阅,简单地针对Python中与目录和文件夹有关的操作进行汇总. 需要实现导入的模块为: import o ...

  2. PHP获取当前域名$_SERVER['HTTP_HOST']和$_SERVER['SERVER_NAME']的区别

    开发站群软件,用到了根据访问域名判断子站点的相关问题,PHP获取当前域名有两个变量 $_SERVER['HTTP_HOST'] 和 $_SERVER['SERVER_NAME'],两者的区别以及哪个更 ...

  3. Alpha版本冲刺总结——曙光初现

    No Bug 031402401鲍亮 031402402曹鑫杰 031402403常松 031402412林淋 031402418汪培侨 031402426许秋鑫 项目预期计划 界面设计 androi ...

  4. mysql命令导出导入数据库

    命令导出数据库: mysqldump -h[主机所在IP] -u[用户名] -p [要导出的数据库]>[导出的路径//[文件名].sql] 命令导入数据库: 1>首先,我们应该在cmd中进 ...

  5. python3 黑板客爬虫闯关游戏(一)

    这是学习python爬虫练习很好的网站,强烈推荐! 地址http://www.heibanke.com/lesson/crawler_ex00/ 第一关猜数字 很简单,直接给出代码 import ur ...

  6. openstack网络(neutron)模式之GRE的基本原理

    neutron网络目的是为OpenStack云更灵活的划分网络,在多租户的环境下提供给每个租户独立的网络环境. neutron混合实施了第二层的VLAN和第三层的路由服务,它可为支持的网络提供防火墙, ...

  7. VC++ 应用程序无法正常启动0xc0150002

    使用VC++开发软件,编译后的程序打不开,弹出错误框:   使用Dpends Walker查看依赖项,没有什么异常. 然后,右键"计算机",选择"管理",打开计 ...

  8. XCode4.5.6,iOS6.1下测试 判断当前设备,及其联网状态等; 关于设备插上后XCode检测不出的情况的说明

    目录[-] 一.判断设备 二.判断网络连接状态 三.设备不显示的解决办法 一.判断设备 01 //设备名称 02 return [UIDevice currentDevice].name; 03   ...

  9. 使用vs2008搭建php扩展环境

    所需要的工具或者文件: 1.php源码,去官网下载即可.http://windows.php.net/download 2.php-sdk:php 开发工具包 3.deps类库 4.Cygwin:wi ...

  10. 关于网络-get/post

    关于网络: //英译  connection:连接 append:添加 resign:放弃 // 加载网页数据 步骤 [self.webView loadRequest:request]; NSURL ...