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. OldTrafford after 102 days

    THE RED GO MARCHING ON   One Team One Love Through the highs and the lows   One hundred and two long ...

  2. day05总结

    """ echo  "了不起的 [陈少] " 输出结果:   了不起的陈少! ! ! """ ""& ...

  3. shell进阶篇之数组应用案例

    数组中可以存放多个值. Shell 只支持一维数组(不支持多维数组),初始化时不需要定义数组大小. 与大部分编程语言类似,数组元素的下标由0开始. Shell 数组用括号来表示,元素用"空格 ...

  4. 07 Vue常见插件

    项目功能插件 1.vue-router { path: '/', name: 'home', // 路由的重定向 redirect: '/home' } { // 一级路由, 在根组件中被渲染, 替换 ...

  5. (数据科学学习手札89)geopandas&geoplot近期重要更新

    本文示例代码及数据已上传至我的Github仓库https://github.com/CNFeffery/DataScienceStudyNotes 1 简介 最近一段时间(本文写作于2020-07-1 ...

  6. CTF_show平台 web题解 part3

    web13 题目显示文件上传,各类型上传均提示错误,在使用ctf-scan扫描的时候,发现upload.php.bak. 查看源码: <?php header("content-typ ...

  7. scrapy 基础组件专题(五):自定义扩展

    通过scrapy提供的扩展功能, 我们可以编写一些自定义的功能, 插入到scrapy的机制中 一.编写一个简单的扩展 我们现在编写一个扩展, 统计一共获取到的item的条数我们可以新建一个extens ...

  8. Django框架08 /聚合查询、分组、F/Q查询、原生sql相关

    Django框架08 /聚合查询.分组.F/Q查询.原生sql相关 目录 Django框架08 /聚合查询.分组.F/Q查询.原生sql相关 1. 聚合查询 2. 分组 3. F查询和Q查询 4. o ...

  9. Log4net控制台和窗体程序无法输出记录的原因之一

    在asp.net web应用程序中,读取log4net的配置文件可以这样写: [assembly:log4net.Config.XmlConfigurator(ConfigFile="Web ...

  10. day1:注释和变量

    1.注释的作用:对代码的解释,方便以后阅读代码 2.常用的快捷键:ctrl+q:notepad++的注释ctrl+/:pycharm的注释ctrl+c:复制ctrl+v:粘贴ctrl+z:撤销ctrl ...