import javax.servlet.http.HttpServletRequest;
import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
import javax.ws.rs.QueryParam;
import javax.ws.rs.core.Context;
import javax.ws.rs.core.MediaType;
import javax.ws.rs.core.Response; import org.apache.commons.lang3.StringUtils;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger; import com.zzc.bl.util.ConfigMgr;
import com.zzc.bl.util.StringEncryptUtil; @Path("/loadConfig")
@Produces(MediaType.APPLICATION_JSON)
public class LoadConfig {
private static final Logger logger = LogManager.getLogger(LoadConfig.class.getName()); // private static final String token = UUID.randomUUID().toString() + System.currentTimeMillis();
// private static final String token = "c2d4f7e8e001486114862926";
// private static final String single = "1fc54ecc9c6f4dfd9799b7baec1b0de6";
private static final String salt = "3f73c5fafaf13f160670b59025745889";
@GET
@Path("/loading")
public Response loading(@QueryParam("token") String token,@QueryParam("single") String single,@Context HttpServletRequest request) {
final String requestPath = request.getPathInfo();
logger.info("[entrance: " + requestPath + "] [params: { \"token\": \"" + token + "\", \"single\": \"" + single + "\" } ]");
// 检测请求合法性
if(StringUtils.isEmpty(token)){
logger.info("[entrance: " + requestPath + "] [response_status: 400] [response_body: { \"errors\": \"token is empty !!!\" } ]");
return Response.status(400).entity("{\"errors\": \"token is empty !!!\"}").build();
}
if(StringUtils.isEmpty(single)){
logger.info("[entrance: " + requestPath + "] [response_status: 400] [response_body: { \"errors\": \"single is empty !!!\" } ]");
return Response.status(400).entity("{\"errors\": \"single is empty !!!\"}").build();
}
String content = salt + StringEncryptUtil.md5(token);
String mdStr = StringEncryptUtil.md5(content);
if(!mdStr.equals(single)){
logger.info("[entrance: " + requestPath + "] [response_status: 400] [response_body: { \"errors\": \"single is invalid !!!\" } ]");
return Response.status(400).entity("{\"errors\": \"single is invalid !!!\"}").build();
}
// 加载Properties属性文件
ConfigMgr.init("config.properties");
logger.info("[entrance: " + requestPath + "] [response_status: 200] [response_body: {\"success\": \"properties files has been loaded !!!\"} ]");
return Response.status(200).entity("{\"success\": \"properties files has been loaded !!!\"}").build();
} }

加载Properties文件工具类:LoadConfig的更多相关文章

  1. Java加载Properties配置文件工具类

    Java加载Properties配置文件工具类 import org.apache.commons.lang3.StringUtils; import org.apache.log4j.Logger; ...

  2. JavaEE互联网轻量级框架整合开发(书籍)阅读笔记(12):XML配置自动扫描包,自动加载*.properties文件

    一.XML和注解组合使用 前几篇的测试案例都是在Java类中配置,现在换一种使用方式,在XML中配置,使Spring IoC容器在启动之后自动去扫描配置的包路径,扫描加载指定路径下的propertie ...

  3. spring入门(二)【加载properties文件】

    在开发过程当中需要用到配置信息,这些信息不能进行硬编码,这时配置文件是一个比较好的方式,java提供了properties格式的文件,以键值对的方式保存信息,在读取的时候通过键获得键对应的值,spri ...

  4. java加载properties文件的六中基本方式实现

    java加载properties文件的方式主要分为两大类:一种是通过import java.util.Properties类中的load(InputStream in)方法加载: 另一种是通过impo ...

  5. 加载properties文件的三种方法

    源代码: package a.one; import java.io.FileInputStream; import java.io.InputStream; import java.util.Pro ...

  6. Spring加载properties文件的两种方式

    在项目中如果有些参数经常需要修改,或者后期可能需要修改,那我们最好把这些参数放到properties文件中,源代码中读取properties里面的配置,这样后期只需要改动properties文件即可, ...

  7. java加载properties文件的六种方法总结

    java加载properties文件的六种方法总结 java加载properties文件的六中基本方式实现 java加载properties文件的方式主要分为两大类:一种是通过import java. ...

  8. Java开发学习(八)----IOC/DI配置管理第三方bean、加载properties文件

    前面的博客都是基于我们自己写的类,现在如果有需求让我们去管理第三方jar包中的类,该如何管理? 一.案例:数据源对象管理 本次案例将使用数据源Druid和C3P0来配置学习下. 1.1 环境准备 学习 ...

  9. android html 图片处理类--加载富文本工具类

    在android开发中,一些资讯类页面,里面有html标签和图片,html 标签一般通过Html.fromHtml方法,即可以解决,但是如果html 有图片标签,那么,Html.fromHtml 好像 ...

随机推荐

  1. CSS让一个图片显示在另一个图片上面

    思路,在两个图片的父元素上设置  position:relative  , 然后给小图片设置 position:absolute ,位置通过top,bottom,left,right来修改,然后用  ...

  2. Spring Boot 2.x基础教程:事务管理入门

    什么是事务? 我们在开发企业应用时,通常业务人员的一个操作实际上是对数据库读写的多步操作的结合.由于数据操作在顺序执行的过程中,任何一步操作都有可能发生异常,异常会导致后续操作无法完成,此时由于业务逻 ...

  3. Python之爬虫(二十二) Scrapy分布式原理

    关于Scrapy工作流程回顾 Scrapy单机架构 上图的架构其实就是一种单机架构,只在本机维护一个爬取队列,Scheduler进行调度,而要实现多态服务器共同爬取数据关键就是共享爬取队列. 分布式架 ...

  4. HotSpot VM垃圾收集器

    最常用的HotSpot VM垃圾收集器是分代垃圾收集.该方案是基于两个观察事实. 大多数分配对象的存活时间很短. 存活时间久的对象很少引用存活时间短的对象. 上述两个观察事实统称为弱分代假设(Weak ...

  5. Quartz.Net系列(十五):Quartz.Net四种修改配置的方式

    案例:修改默认线程个数 1.NameValueCollection System.Collections.Specialized.NameValueCollection collection = ne ...

  6. CCNA-Part4 -网络层 - IP 协议了解一下

    网络层主要提供寻址,路由的功能.而 IP 协议就是为了实现该功能而设计的. IP 协议 IP 协议的特性 工作在网络层 面向无连接的协议 具有单独处理包的能力 分层的地址 不可靠,尽力而为的传送 独立 ...

  7. 机器学习作业---K-Means算法

    --------------------------K-Means算法使用-------------------------- 一:数据导入及可视化 import numpy as np import ...

  8. 集训作业 洛谷P1017 进制转换

    这个题的题目真的太恶心了. 重点是他的题目描述和他的目标没啥关系. 和最终目的有关系的只有这么一句话:”输出此负进制数及其基数,若此基数超过10,则参照16进制的方法处理.“ 我们通过看这句话可以发现 ...

  9. Go的100天之旅-07条件和循环

    目录 条件语句 if条件语句 switch条件语句 循环语句 for循环 goto语句 条件语句 Go的条件语句和其它语言类似,主要是不支持三目运算符所以?:这种条件判断是不支持的.Go提供的条件判断 ...

  10. 浅谈Python中的深浅拷贝的区别

    深.浅拷贝总结 深拷贝 拷贝可变数据类型,如列表容器: a = [1, 2, [3, 4]] b = copy.deepcopy(a) a 与 b 所指的列表容器的空间地址不一致,即 id(a) != ...