配置文件路径:

配置内容:

方法一:

Action内被调用的函数添加下段代码:

Properties props = new Properties();
props.load(UploadFileAction.class.getClassLoader().getResourceAsStream("/struts/struts-config.properties"));
System.out.println(props.getProperty("destPath"));

执行效果:

为了便于其他Action重用,可以将此部分写成一个工具类:

package com.struts2demo.demo.util;

import com.opensymphony.xwork2.Action;

import java.io.IOException;
import java.util.Properties;

public class StrutsConfig {

    public Properties GetProperties(Class actionClass) throws IOException {
        Properties props = new Properties();
        props.load(actionClass.getClassLoader().getResourceAsStream("/struts/struts-config.properties"));
        return props;
    }

}

然后Action里如此调用即可:

Properties props = new StrutsConfig().GetProperties(UploadFileAction.class);
System.out.println(props.getProperty("destPath"));

方法二:@ConfigurationProperties + @PropertySource

package com.example.spdemo.controller;

import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.PropertySource;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
@ConfigurationProperties
@PropertySource("/struts/struts-config.properties")
public class Index {

    private String destPath;

    @RequestMapping("/")
    public String getProps() {
        return destPath;
    }

    public String getDestPath() {
        return destPath;
    }

    public void setDestPath(String destPath) {
        this.destPath = destPath;
    }

}

对于非application.properties的配置,需@PropertySource指明配置文件的路径;否则默认是从application.properties中读取配置,不需要写该注解。

方法三:spring的xml配置中配置上properties,然后通过@Value注入(该方法在Spring MVC中验证过,但是不知道集成struts2后是否受影响)

spring-context.xml

<util:properties id="APP_PROP" local-override="true" location="classpath:owlforest.properties" />

owlforest.properties

jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/linfu_test_db?useUnicode=true&characterEncoding=utf-8
jdbc.username=root
jdbc.password=root

代码样例:

package com.owlforest.www.config.dao;

import com.alibaba.druid.pool.DruidDataSource;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.PropertySource;

@Configuration
public class DataSourceConfiguration {
    @Value("#{APP_PROP['jdbc.driver']}")
    private String driver;

    @Value("#{APP_PROP['jdbc.url']}")
    private String url;

    @Value("#{APP_PROP['jdbc.username']}")
    private String username;

    @Value("#{APP_PROP['jdbc.password']}")
    private String password;

    public DruidDataSource createDataSource(){
        DruidDataSource dataSource = new DruidDataSource();
        dataSource.setDriverClassName(driver);
        dataSource.setUrl(url);
        dataSource.setUsername(username);
        dataSource.setPassword(password);
        dataSource.setDefaultAutoCommit(true);
        return dataSource;
    }
}

 方法四:使用spring的PropertiesFactoryBean

    @Bean
    public PropertiesFactoryBean getProperties() {
        PropertiesFactoryBean propertiesFactoryBean = new PropertiesFactoryBean();
        propertiesFactoryBean.setLocations(new ClassPathResource("application.properties"));
        return propertiesFactoryBean;
    }

调用:

    @Autowired
    private PropertiesFactoryBean propertiesFactoryBean;

    public String getProperties(String key) throws IOException {
        Properties properties = propertiesFactoryBean.getObject();
        return properties.getProperty(key);
    }

 方法五:不使用自动装配,使用classLoader获取Properties

MailUtil.class.getClassLoader().getResourceAsStream("/config.properties")

Struts2学习:Action获取properties文件的值的更多相关文章

  1. Java学习-021-Properties 获取配置项对应的值

    在日常的脚本编写过程中,通常会获取配置文件中的配置项,以执行相应的业务逻辑. 小二上码...若有不足之处,敬请大神指正,不胜感激! 获取配置项值的源码如下所示: /** * Get value fro ...

  2. 【Properties】获取Properties文件

    获取Properties文件 package com.chinamobile.epic.tako.v2.query.commons; import org.springframework.core.i ...

  3. 获取properties文件的内容

    获取properties文件的内容 public void test() throws Exception{ String resource = "application.propertie ...

  4. spring Controller 层注解获取 properties 里面的值

    前言:最近在做一个项目,想要在 controller 层直接通过注解 @Value("")来获取 properties 里面配置的属性. 这个其实和 springmvc.sprin ...

  5. struts2,action上传文件

    通过servlet实现文件上传,可以用用servlet接受到request的值的话:主要是这句话 List<?> items = upload.parseRequest(request); ...

  6. Spring获取properties文件中的属性

    1.前言 本文主要是对这两篇blog的整理,感谢作者的分享 Spring使用程序方式读取properties文件 Spring通过@Value注解注入属性的几种方式 2.配置文件 applicatio ...

  7. 获取.properties配置文件属性值

    public class TestProperties { /** * * @Title: printAllProperty * @Description: 输出所有配置信息 * @param pro ...

  8. spring通过静态方法获得properties文件的值

    获得spring bean方法 @Component public class BeanUtils implements ApplicationContextAware { private stati ...

  9. struts2学习笔记之十:文件上传

    Struts2的上传 1.Struts2默认采用了apache commons-fileupload 2.Struts2支持三种类型的上传组件 3.需要引入commons-fileupload相关依赖 ...

随机推荐

  1. taro 开发注意点

    taro 开发注意点: 注意点 原因 如果要支持 React Native 端,必须采用 Flex 布局,并且样式选择器仅支持类选择器,且不支持 组合器 Taro RN 端是基于 Expo,因此不支持 ...

  2. 关联本地文件夹到 GitLab 项目

    关联本地文件夹到 GitLab 项目的 dev 分支: rm -rf .git git init git remote add origin git pull git checkout dev git ...

  3. thinkphp5 列表页数据分页查询2-带搜索条件

    一.控制器部分 <?php namespace app\user\controller; use app\index\controller\Common; use app\user\model\ ...

  4. R语言入门

    引入R的package(库) 首先是要安装TSA库,TSA是作者自己开发的一套基于R的pacakge,里面包含了函数以及数据:安装的方式是在R的控制台(console)中敲入install.packa ...

  5. Scrapy 设置请求头

    爬虫的过程有些网站设置反盗链,需要我们在请求头中添加下,修改settings.py文件中添加 DEFAULT_REQUEST_HEADERS = { 'Accept': 'text/html,appl ...

  6. MeshLab显示纹理贴图

    共需要三个文件:obj文件.mtl文件及一张纹理图. 1.obj文件需要满足如下格式: 顶点 v 纹理坐标 vt 法线 vn 面片f Vertex1/Texture1/Normal1 Vertex2/ ...

  7. system.Data.Entity.Infrastructure.DbUpdateConcurrencyException: Store update, insert, or delete statement affected an unexpected number of rows (0) 问题

    页面控件没有做限制.提交后还可以继续点击,造成了在短时间内的多次请求.查看日志两次错误在200ms之内. 错误信息 system.Data.Entity.Infrastructure.DbUpdate ...

  8. Mysql 性能优化5【重要】数据库结构优化

    数据库设计的步骤 我们大多使用mysql 设计三范式 设置时区  

  9. Random 中的种子怎么理解

    种子就是生成随机数的根,就是产生随机数的基础.计算机的随机数都是伪随机数,以一个真随机数(种子)作为初始条件,然后用一定的算法不停迭代产生随机数.Java项目中通常是通过Math.random方法和R ...

  10. 【VSCode】Windows下VSCode编译调试c/c++【更新】

    便携版已更新,点此获取便携版 用于cpptools插件的配置文件更新 更新的launch.json // Available variables which can be used inside of ...