struts2对properties资源的处理

struts2对properties资源的处理

做了一些功能增强

包括:

可以读取项的描述

可以读取项所在的行号,文件路径等

实现方式

继承了java的java.util.Properties实现了一个类LocatableProperties完成此事。

LocatableProperties对外公布了load api完成properties文件的读取,但内部逻辑还是靠其自定义的PropertiesReader完成的。

PropertiesReader继承自java的java.io.LineNumberReader,主要利用其原有的构造方法readLine等方法。

LocatableProperties在构造时或者构造完成后,需要向其传递Location对象(包括文件描述,文件路径等信息),否则LocatableProperties是没法知道文件文件位置的。

测试类

LocatablePropertiesTest

z

 1 @Test
 2     public void testLocatableProperties001()
 3     {
 4         try
 5         {
 6             String propertiesPath = "/cn/chenxiaguang/demo/sss/xwork2/util/location/testConfigData.properties";
 7             Location loc = new LocationImpl("测试配置文件", this.getClass().getResource(propertiesPath).toString());
 8             LocatableProperties locatableProperties = new LocatableProperties(loc);
 9             locatableProperties.load(this.getClass().getResourceAsStream(propertiesPath));
10             System.out.println(locatableProperties.getPropertyLocation("a"));
11             System.out.println(locatableProperties.getPropertyLocation("b"));
12         }
13         catch (IOException e)
14         {
15             e.printStackTrace();
16         }
17     }

testConfigData.properties

#test a
  a=1

#test b
b=2

但是在打印 时并不会打印出properties文件的描述信息。

打印结果信息如下:

#test a

- file:/Users/simon/600.self/05.code/04.java/10.struts2-src-study/struts2-src-study/WebContent/WEB-INF/classes/cn/chenxiaguang/demo/sss/xwork2/util/location/testConfigData.properties:3:0

#test b

- file:/Users/simon/600.self/05.code/04.java/10.struts2-src-study/struts2-src-study/WebContent/WEB-INF/classes/cn/chenxiaguang/demo/sss/xwork2/util/location/testConfigData.properties:6:0

当然 struts2还对xml文件等做了信息定位,主要使用sax api的特性完成。

时间: 2024-10-11 20:56:37

struts2对properties资源的处理的相关文章

在服务端中,读取properties资源文件中的数据

1.获取到资源的路径 2.读取数据 //properties文件对象 Properties properties = new Properties(); //通过HttpServletRequest request 对象 获取服务上下文环境中目标文件的真实路径 String realPath = request.getServletContext().getRealPath("/deom.properties"); //加载目标文件的数据 properties.load(new Fil

struts2 配置静态资源

Struts2框架有两个核心配置文件:struts.xml和Struts2默认属性文件default.properties(在struts2-core-2.3.20.jar中) default.properties可以通过自己在classpath下写一个struts.properties文件进行定制改写 为什么是struts.properties,这可以看org.apache.struts2.config下的DefaultSettings和PropertiesSettings源码 Default

Struts2的properties文件

来自转载 Struts2的配置文件,默认叫default.properties文件.它配置struts的默认配置,例如:struts2的默认配置 为action就是在该文件中定义. 这个文件提供了一种更改框架默认行为方式的机制.在一般情况下,如果不是打算让调试更加方便的话,你根本无须更改这个文件.在“struts.properties”文件中定义的属性都可以在“web.xml”文件的“init-param”标签中进行配置,或者通过“struts.xml”文件中的“constant” 标签来修改.

maven 打包时动态替换properties资源文件中的配置值

pom build节点下面添加resource配置: [html] view plain copy <resources> <resource> <directory>src/main/resources/</directory> <filtering>true</filtering> <includes> <include>**/*.properties</include> </includ

Java中读取properties资源文件

一.通过ResourceBundle来读取.properties文件 /** * 通过java.util.resourceBundle来解析properties文件. * @param String path:properties文件的路径 * @param String key: 获取对应key的属性 * @return String:返回对应key的属性,失败时候为空. */ public static String getPropertyByName1(String path,String

类装载器读取properties资源文件

类装载器 public class userDAO { private static Properties dbconfig =new Properties(); static{ try { InputStream instream =userDAO.class.getClassLoader().getResourceAsStream("db.propertites"); dbconfig.load(instream); } catch (Exception e) { throw ne

struts2 访问国际化资源 &lt;s:text&gt;作为属性

保留全局级国际化信息资源文件.并在message.properteis中增加一个带有参数的国际化信息. Java代码   labela = labela in zh_CN labelb = labelb,{0} <s:text>访问国际化信息 用<s:text>标签来访问国际化信息,只需要在它的name属性上填入需要的key即可.下面,来看看它的其它的属性. 1:使用带参数的国际化信息        可以用参数把一些可变值传给国际化信息,在<s:text>标签访问国际化

java的properties资源文件的读取

package com.lideng.work325; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java.u

Struts2获取web资源的几种方式

1.通过ActionContext直接获取 1 public testAction extends ActionSupport { 2 private Map request; 3 private Map session; 4 private Map application; 5 public testAction(){ 6 request = (Map)ActionContext.getContext().get("request"); 7 session = ActionConte